mirror of
https://github.com/SoftEtherVPN/SoftEtherVPN.git
synced 2024-11-22 17:39:53 +03:00
v4.12-9514-beta
This commit is contained in:
parent
2b3a4d0b75
commit
75f9836ce5
@ -1663,6 +1663,8 @@ CEDAR *NewCedar(X *server_x, K *server_k)
|
|||||||
|
|
||||||
c->CurrentRegionLock = NewLock();
|
c->CurrentRegionLock = NewLock();
|
||||||
|
|
||||||
|
StrCpy(c->OpenVPNDefaultClientOption, sizeof(c->OpenVPNDefaultClientOption), OVPN_DEF_CLIENT_OPTION_STRING);
|
||||||
|
|
||||||
#ifdef BETA_NUMBER
|
#ifdef BETA_NUMBER
|
||||||
c->Beta = BETA_NUMBER;
|
c->Beta = BETA_NUMBER;
|
||||||
#endif // BETA_NUMBER
|
#endif // BETA_NUMBER
|
||||||
|
@ -135,10 +135,10 @@
|
|||||||
|
|
||||||
|
|
||||||
// Version number
|
// Version number
|
||||||
#define CEDAR_VER 411
|
#define CEDAR_VER 412
|
||||||
|
|
||||||
// Build Number
|
// Build Number
|
||||||
#define CEDAR_BUILD 9506
|
#define CEDAR_BUILD 9514
|
||||||
|
|
||||||
// Beta number
|
// Beta number
|
||||||
//#define BETA_NUMBER 3
|
//#define BETA_NUMBER 3
|
||||||
@ -158,11 +158,11 @@
|
|||||||
|
|
||||||
// Specifies the build date
|
// Specifies the build date
|
||||||
#define BUILD_DATE_Y 2014
|
#define BUILD_DATE_Y 2014
|
||||||
#define BUILD_DATE_M 10
|
#define BUILD_DATE_M 11
|
||||||
#define BUILD_DATE_D 22
|
#define BUILD_DATE_D 17
|
||||||
#define BUILD_DATE_HO 19
|
#define BUILD_DATE_HO 21
|
||||||
#define BUILD_DATE_MI 51
|
#define BUILD_DATE_MI 41
|
||||||
#define BUILD_DATE_SE 55
|
#define BUILD_DATE_SE 16
|
||||||
|
|
||||||
// Tolerable time difference
|
// Tolerable time difference
|
||||||
#define ALLOW_TIMESTAMP_DIFF (UINT64)(3 * 24 * 60 * 60 * 1000)
|
#define ALLOW_TIMESTAMP_DIFF (UINT64)(3 * 24 * 60 * 60 * 1000)
|
||||||
@ -1052,6 +1052,7 @@ typedef struct CEDAR
|
|||||||
LOCK *FifoBudgetLock; // Fifo budget lock
|
LOCK *FifoBudgetLock; // Fifo budget lock
|
||||||
UINT FifoBudget; // Fifo budget
|
UINT FifoBudget; // Fifo budget
|
||||||
bool AcceptOnlyTls; // Accept only TLS (Disable SSL)
|
bool AcceptOnlyTls; // Accept only TLS (Disable SSL)
|
||||||
|
char OpenVPNDefaultClientOption[MAX_SIZE]; // OpenVPN Default Client Option String
|
||||||
} CEDAR;
|
} CEDAR;
|
||||||
|
|
||||||
// Type of CEDAR
|
// Type of CEDAR
|
||||||
|
@ -137,6 +137,13 @@ typedef struct AUTHRADIUS AUTHRADIUS;
|
|||||||
typedef struct AUTHNT AUTHNT;
|
typedef struct AUTHNT AUTHNT;
|
||||||
|
|
||||||
|
|
||||||
|
// ==============================================================
|
||||||
|
// RADIUS
|
||||||
|
// ==============================================================
|
||||||
|
|
||||||
|
typedef struct RADIUS_LOGIN_OPTION RADIUS_LOGIN_OPTION;
|
||||||
|
|
||||||
|
|
||||||
// ==============================================================
|
// ==============================================================
|
||||||
// Listener
|
// Listener
|
||||||
// ==============================================================
|
// ==============================================================
|
||||||
|
@ -597,6 +597,7 @@ void DataToHubOptionStruct(HUB_OPTION *o, RPC_ADMIN_OPTION *ao)
|
|||||||
GetHubAdminOptionDataAndSet(ao, "DropArpInPrivacyFilterMode", &o->DropArpInPrivacyFilterMode);
|
GetHubAdminOptionDataAndSet(ao, "DropArpInPrivacyFilterMode", &o->DropArpInPrivacyFilterMode);
|
||||||
GetHubAdminOptionDataAndSet(ao, "SuppressClientUpdateNotification", &o->SuppressClientUpdateNotification);
|
GetHubAdminOptionDataAndSet(ao, "SuppressClientUpdateNotification", &o->SuppressClientUpdateNotification);
|
||||||
GetHubAdminOptionDataAndSet(ao, "FloodingSendQueueBufferQuota", &o->FloodingSendQueueBufferQuota);
|
GetHubAdminOptionDataAndSet(ao, "FloodingSendQueueBufferQuota", &o->FloodingSendQueueBufferQuota);
|
||||||
|
GetHubAdminOptionDataAndSet(ao, "AssignVLanIdByRadiusAttribute", &o->AssignVLanIdByRadiusAttribute);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Convert the contents of the HUB_OPTION to data
|
// Convert the contents of the HUB_OPTION to data
|
||||||
@ -662,6 +663,7 @@ void HubOptionStructToData(RPC_ADMIN_OPTION *ao, HUB_OPTION *o, char *hub_name)
|
|||||||
Add(aol, NewAdminOption("DropArpInPrivacyFilterMode", o->DropArpInPrivacyFilterMode));
|
Add(aol, NewAdminOption("DropArpInPrivacyFilterMode", o->DropArpInPrivacyFilterMode));
|
||||||
Add(aol, NewAdminOption("SuppressClientUpdateNotification", o->SuppressClientUpdateNotification));
|
Add(aol, NewAdminOption("SuppressClientUpdateNotification", o->SuppressClientUpdateNotification));
|
||||||
Add(aol, NewAdminOption("FloodingSendQueueBufferQuota", o->FloodingSendQueueBufferQuota));
|
Add(aol, NewAdminOption("FloodingSendQueueBufferQuota", o->FloodingSendQueueBufferQuota));
|
||||||
|
Add(aol, NewAdminOption("AssignVLanIdByRadiusAttribute", o->AssignVLanIdByRadiusAttribute));
|
||||||
|
|
||||||
Zero(ao, sizeof(RPC_ADMIN_OPTION));
|
Zero(ao, sizeof(RPC_ADMIN_OPTION));
|
||||||
|
|
||||||
|
@ -275,6 +275,7 @@ struct HUB_OPTION
|
|||||||
bool DropArpInPrivacyFilterMode; // Drop ARP 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
|
bool SuppressClientUpdateNotification; // Suppress the update notification function on the VPN Client
|
||||||
UINT FloodingSendQueueBufferQuota; // The global quota of send queues of flooding packets
|
UINT FloodingSendQueueBufferQuota; // The global quota of send queues of flooding packets
|
||||||
|
bool AssignVLanIdByRadiusAttribute; // Assign the VLAN ID for the VPN session, by the attribute value of RADIUS
|
||||||
};
|
};
|
||||||
|
|
||||||
// MAC table entry
|
// MAC table entry
|
||||||
|
@ -766,6 +766,7 @@ void OvsSetupSessionParameters(OPENVPN_SERVER *s, OPENVPN_SESSION *se, OPENVPN_C
|
|||||||
{
|
{
|
||||||
LIST *o;
|
LIST *o;
|
||||||
BUF *b;
|
BUF *b;
|
||||||
|
char opt_str[MAX_SIZE];
|
||||||
// Validate arguments
|
// Validate arguments
|
||||||
if (s == NULL || se == NULL || c == NULL || data == NULL)
|
if (s == NULL || se == NULL || c == NULL || data == NULL)
|
||||||
{
|
{
|
||||||
@ -779,7 +780,14 @@ void OvsSetupSessionParameters(OPENVPN_SERVER *s, OPENVPN_SESSION *se, OPENVPN_C
|
|||||||
|
|
||||||
OvsLog(s, se, c, "LO_OPTION_STR_RECV", data->OptionString);
|
OvsLog(s, se, c, "LO_OPTION_STR_RECV", data->OptionString);
|
||||||
|
|
||||||
o = OvsParseOptions(data->OptionString);
|
Zero(opt_str, sizeof(opt_str));
|
||||||
|
StrCpy(opt_str, sizeof(opt_str), data->OptionString);
|
||||||
|
if (s->Cedar != NULL && (IsEmptyStr(opt_str) || StartWith(opt_str, "V0 UNDEF") || InStr(opt_str, ",") == false))
|
||||||
|
{
|
||||||
|
StrCpy(opt_str, sizeof(opt_str), s->Cedar->OpenVPNDefaultClientOption);
|
||||||
|
}
|
||||||
|
|
||||||
|
o = OvsParseOptions(opt_str);
|
||||||
|
|
||||||
if (se->Mode == OPENVPN_MODE_UNKNOWN)
|
if (se->Mode == OPENVPN_MODE_UNKNOWN)
|
||||||
{
|
{
|
||||||
|
@ -311,6 +311,9 @@ struct OPENVPN_SERVER_UDP
|
|||||||
UINT64 VgsNextGetPublicPortsTick;
|
UINT64 VgsNextGetPublicPortsTick;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// OpenVPN Default Client Option String
|
||||||
|
#define OVPN_DEF_CLIENT_OPTION_STRING "dev-type tun,link-mtu 1500,tun-mtu 1500,cipher AES-128-CBC,auth SHA1,keysize 128,key-method 2,tls-client"
|
||||||
|
|
||||||
|
|
||||||
//// Function prototype
|
//// Function prototype
|
||||||
OPENVPN_SERVER_UDP *NewOpenVpnServerUdp(CEDAR *cedar);
|
OPENVPN_SERVER_UDP *NewOpenVpnServerUdp(CEDAR *cedar);
|
||||||
|
@ -1031,7 +1031,7 @@ void L3PollingBeacon(L3IF *f)
|
|||||||
|
|
||||||
Copy(udp_buf + sizeof(IPV4_HEADER) + sizeof(UDP_HEADER), beacon_str, sizeof(beacon_str));
|
Copy(udp_buf + sizeof(IPV4_HEADER) + sizeof(UDP_HEADER), beacon_str, sizeof(beacon_str));
|
||||||
|
|
||||||
udp->Checksum = IpChecksum(udp, sizeof(UDP_HEADER) + sizeof(beacon_str));
|
udp->Checksum = CalcChecksumForIPv4(f->IpAddress, dest_ip, 0x11, udp, sizeof(UDP_HEADER) + sizeof(beacon_str), 0);
|
||||||
|
|
||||||
ip->DstIP = dest_ip;
|
ip->DstIP = dest_ip;
|
||||||
IPV4_SET_VERSION(ip, 4);
|
IPV4_SET_VERSION(ip, 4);
|
||||||
|
@ -842,24 +842,24 @@ void GenerateMachineUniqueHash(void *data)
|
|||||||
{
|
{
|
||||||
BUF *b;
|
BUF *b;
|
||||||
char name[64];
|
char name[64];
|
||||||
char ip_str[64];
|
|
||||||
IP ip;
|
|
||||||
OS_INFO *osinfo;
|
OS_INFO *osinfo;
|
||||||
|
UINT64 iphash = 0;
|
||||||
// Validate arguments
|
// Validate arguments
|
||||||
if (data == NULL)
|
if (data == NULL)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
iphash = GetHostIPAddressListHash();
|
||||||
|
|
||||||
b = NewBuf();
|
b = NewBuf();
|
||||||
GetMachineName(name, sizeof(name));
|
GetMachineName(name, sizeof(name));
|
||||||
GetMachineIp(&ip);
|
|
||||||
IPToStr(ip_str, sizeof(ip_str), &ip);
|
|
||||||
|
|
||||||
osinfo = GetOsInfo();
|
osinfo = GetOsInfo();
|
||||||
|
|
||||||
WriteBuf(b, name, StrLen(name));
|
WriteBuf(b, name, StrLen(name));
|
||||||
WriteBuf(b, ip_str, StrLen(ip_str));
|
|
||||||
|
WriteBufInt64(b, iphash);
|
||||||
|
|
||||||
WriteBuf(b, &osinfo->OsType, sizeof(osinfo->OsType));
|
WriteBuf(b, &osinfo->OsType, sizeof(osinfo->OsType));
|
||||||
WriteBuf(b, osinfo->KernelName, StrLen(osinfo->KernelName));
|
WriteBuf(b, osinfo->KernelName, StrLen(osinfo->KernelName));
|
||||||
@ -1265,6 +1265,7 @@ bool ServerAccept(CONNECTION *c)
|
|||||||
RC4_KEY_PAIR key_pair;
|
RC4_KEY_PAIR key_pair;
|
||||||
UINT authtype;
|
UINT authtype;
|
||||||
POLICY *policy;
|
POLICY *policy;
|
||||||
|
UINT assigned_vlan_id = 0;
|
||||||
HUB *hub;
|
HUB *hub;
|
||||||
SESSION *s = NULL;
|
SESSION *s = NULL;
|
||||||
UINT64 user_expires = 0;
|
UINT64 user_expires = 0;
|
||||||
@ -1330,6 +1331,8 @@ bool ServerAccept(CONNECTION *c)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GenerateMachineUniqueHash(unique2);
|
||||||
|
|
||||||
Zero(ctoken_hash_str, sizeof(ctoken_hash_str));
|
Zero(ctoken_hash_str, sizeof(ctoken_hash_str));
|
||||||
|
|
||||||
Zero(mschap_v2_server_response_20, sizeof(mschap_v2_server_response_20));
|
Zero(mschap_v2_server_response_20, sizeof(mschap_v2_server_response_20));
|
||||||
@ -1623,6 +1626,8 @@ bool ServerAccept(CONNECTION *c)
|
|||||||
USER *user;
|
USER *user;
|
||||||
USERGROUP *group;
|
USERGROUP *group;
|
||||||
char plain_password[MAX_PASSWORD_LEN + 1];
|
char plain_password[MAX_PASSWORD_LEN + 1];
|
||||||
|
RADIUS_LOGIN_OPTION radius_login_opt;
|
||||||
|
|
||||||
if (hub->Halt || hub->Offline)
|
if (hub->Halt || hub->Offline)
|
||||||
{
|
{
|
||||||
// HUB is off-line
|
// HUB is off-line
|
||||||
@ -1633,6 +1638,13 @@ bool ServerAccept(CONNECTION *c)
|
|||||||
goto CLEANUP;
|
goto CLEANUP;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Zero(&radius_login_opt, sizeof(radius_login_opt));
|
||||||
|
|
||||||
|
if (hub->Option != NULL)
|
||||||
|
{
|
||||||
|
radius_login_opt.In_CheckVLanId = hub->Option->AssignVLanIdByRadiusAttribute;
|
||||||
|
}
|
||||||
|
|
||||||
// Get the various flags
|
// Get the various flags
|
||||||
use_encrypt = PackGetInt(p, "use_encrypt") == 0 ? false : true;
|
use_encrypt = PackGetInt(p, "use_encrypt") == 0 ? false : true;
|
||||||
use_compress = PackGetInt(p, "use_compress") == 0 ? false : true;
|
use_compress = PackGetInt(p, "use_compress") == 0 ? false : true;
|
||||||
@ -1997,7 +2009,7 @@ bool ServerAccept(CONNECTION *c)
|
|||||||
|
|
||||||
if (fail_ext_user_auth == false)
|
if (fail_ext_user_auth == false)
|
||||||
{
|
{
|
||||||
auth_ret = SamAuthUserByPlainPassword(c, hub, username, plain_password, false, mschap_v2_server_response_20);
|
auth_ret = SamAuthUserByPlainPassword(c, hub, username, plain_password, false, mschap_v2_server_response_20, &radius_login_opt);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (auth_ret && pol == NULL)
|
if (auth_ret && pol == NULL)
|
||||||
@ -2028,7 +2040,7 @@ bool ServerAccept(CONNECTION *c)
|
|||||||
// If there is asterisk user, log on as the user
|
// If there is asterisk user, log on as the user
|
||||||
if (b)
|
if (b)
|
||||||
{
|
{
|
||||||
auth_ret = SamAuthUserByPlainPassword(c, hub, username, plain_password, true, mschap_v2_server_response_20);
|
auth_ret = SamAuthUserByPlainPassword(c, hub, username, plain_password, true, mschap_v2_server_response_20, &radius_login_opt);
|
||||||
if (auth_ret && pol == NULL)
|
if (auth_ret && pol == NULL)
|
||||||
{
|
{
|
||||||
pol = SamGetUserPolicy(hub, "*");
|
pol = SamGetUserPolicy(hub, "*");
|
||||||
@ -2180,6 +2192,12 @@ bool ServerAccept(CONNECTION *c)
|
|||||||
// Authentication success
|
// Authentication success
|
||||||
FreePack(p);
|
FreePack(p);
|
||||||
|
|
||||||
|
// Check the assigned VLAN ID
|
||||||
|
if (radius_login_opt.Out_VLanId != 0)
|
||||||
|
{
|
||||||
|
assigned_vlan_id = radius_login_opt.Out_VLanId;
|
||||||
|
}
|
||||||
|
|
||||||
if (StrCmpi(username, ADMINISTRATOR_USERNAME) != 0)
|
if (StrCmpi(username, ADMINISTRATOR_USERNAME) != 0)
|
||||||
{
|
{
|
||||||
// Get the policy
|
// Get the policy
|
||||||
@ -2468,8 +2486,6 @@ bool ServerAccept(CONNECTION *c)
|
|||||||
policy->NoRouting = true;
|
policy->NoRouting = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
GenerateMachineUniqueHash(unique2);
|
|
||||||
|
|
||||||
if (Cmp(unique, unique2, SHA1_SIZE) == 0)
|
if (Cmp(unique, unique2, SHA1_SIZE) == 0)
|
||||||
{
|
{
|
||||||
// It's a localhost session
|
// It's a localhost session
|
||||||
@ -2865,6 +2881,18 @@ bool ServerAccept(CONNECTION *c)
|
|||||||
// Remove the connection from Cedar
|
// Remove the connection from Cedar
|
||||||
DelConnection(c->Cedar, c);
|
DelConnection(c->Cedar, c);
|
||||||
|
|
||||||
|
// VLAN ID
|
||||||
|
if (assigned_vlan_id != 0)
|
||||||
|
{
|
||||||
|
if (policy != NULL)
|
||||||
|
{
|
||||||
|
if (policy->VLanId == 0)
|
||||||
|
{
|
||||||
|
policy->VLanId = assigned_vlan_id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Create a Session
|
// Create a Session
|
||||||
StrLower(username);
|
StrLower(username);
|
||||||
s = NewServerSessionEx(c->Cedar, c, hub, username, policy, c->IsInProc);
|
s = NewServerSessionEx(c->Cedar, c, hub, username, policy, c->IsInProc);
|
||||||
@ -3050,6 +3078,7 @@ bool ServerAccept(CONNECTION *c)
|
|||||||
s->QoS = qos;
|
s->QoS = qos;
|
||||||
s->NoReconnectToSession = no_reconnect_to_session;
|
s->NoReconnectToSession = no_reconnect_to_session;
|
||||||
|
|
||||||
|
|
||||||
if (policy != NULL)
|
if (policy != NULL)
|
||||||
{
|
{
|
||||||
s->VLanId = policy->VLanId;
|
s->VLanId = policy->VLanId;
|
||||||
@ -3245,6 +3274,11 @@ bool ServerAccept(CONNECTION *c)
|
|||||||
NodeInfoToStr(tmp, sizeof(tmp), &s->NodeInfo);
|
NodeInfoToStr(tmp, sizeof(tmp), &s->NodeInfo);
|
||||||
|
|
||||||
HLog(hub, "LH_NODE_INFO", s->Name, tmp);
|
HLog(hub, "LH_NODE_INFO", s->Name, tmp);
|
||||||
|
|
||||||
|
if (s->VLanId != 0)
|
||||||
|
{
|
||||||
|
HLog(hub, "LH_VLAN_ID", s->Name, s->VLanId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Shift the connection to the tunneling mode
|
// Shift the connection to the tunneling mode
|
||||||
|
@ -114,7 +114,8 @@
|
|||||||
#include "CedarPch.h"
|
#include "CedarPch.h"
|
||||||
|
|
||||||
// Attempts Radius authentication (with specifying retry interval and multiple server)
|
// Attempts Radius authentication (with specifying retry interval and multiple server)
|
||||||
bool RadiusLogin(CONNECTION *c, char *server, UINT port, UCHAR *secret, UINT secret_size, wchar_t *username, char *password, UINT interval, UCHAR *mschap_v2_server_response_20)
|
bool RadiusLogin(CONNECTION *c, char *server, UINT port, UCHAR *secret, UINT secret_size, wchar_t *username, char *password, UINT interval, UCHAR *mschap_v2_server_response_20,
|
||||||
|
RADIUS_LOGIN_OPTION *opt)
|
||||||
{
|
{
|
||||||
UCHAR random[MD5_SIZE];
|
UCHAR random[MD5_SIZE];
|
||||||
UCHAR id;
|
UCHAR id;
|
||||||
@ -128,6 +129,7 @@ bool RadiusLogin(CONNECTION *c, char *server, UINT port, UCHAR *secret, UINT sec
|
|||||||
IPC_MSCHAP_V2_AUTHINFO mschap;
|
IPC_MSCHAP_V2_AUTHINFO mschap;
|
||||||
bool is_mschap;
|
bool is_mschap;
|
||||||
char client_ip_str[MAX_SIZE];
|
char client_ip_str[MAX_SIZE];
|
||||||
|
RADIUS_LOGIN_OPTION opt_dummy;
|
||||||
static UINT packet_id = 0;
|
static UINT packet_id = 0;
|
||||||
// Validate arguments
|
// Validate arguments
|
||||||
if (server == NULL || port == 0 || (secret_size != 0 && secret == NULL) || username == NULL || password == NULL)
|
if (server == NULL || port == 0 || (secret_size != 0 && secret == NULL) || username == NULL || password == NULL)
|
||||||
@ -135,6 +137,15 @@ bool RadiusLogin(CONNECTION *c, char *server, UINT port, UCHAR *secret, UINT sec
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (opt == NULL)
|
||||||
|
{
|
||||||
|
Zero(&opt_dummy, sizeof(opt_dummy));
|
||||||
|
|
||||||
|
opt = &opt_dummy;
|
||||||
|
}
|
||||||
|
|
||||||
|
opt->Out_VLanId = 0;
|
||||||
|
|
||||||
Zero(client_ip_str, sizeof(client_ip_str));
|
Zero(client_ip_str, sizeof(client_ip_str));
|
||||||
if (c != NULL && c->FirstSock != NULL)
|
if (c != NULL && c->FirstSock != NULL)
|
||||||
{
|
{
|
||||||
@ -450,6 +461,34 @@ RECV_RETRY:
|
|||||||
FreeBuf(b);
|
FreeBuf(b);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (opt->In_CheckVLanId)
|
||||||
|
{
|
||||||
|
BUF *buf = NewBufFromMemory(recv_buf, recv_size);
|
||||||
|
LIST *o = RadiusParseOptions(buf);
|
||||||
|
|
||||||
|
if (o != NULL)
|
||||||
|
{
|
||||||
|
DHCP_OPTION *vlan_option = GetDhcpOption(o, RADIUS_ATTRIBUTE_VLAN_ID);
|
||||||
|
|
||||||
|
if (vlan_option != NULL)
|
||||||
|
{
|
||||||
|
UINT vlan_id = 0;
|
||||||
|
char tmp[32];
|
||||||
|
|
||||||
|
Zero(tmp, sizeof(tmp));
|
||||||
|
|
||||||
|
Copy(tmp, vlan_option->Data, MIN(vlan_option->Size, sizeof(tmp) - 1));
|
||||||
|
|
||||||
|
vlan_id = ToInt(tmp);
|
||||||
|
|
||||||
|
opt->Out_VLanId = vlan_id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
FreeBuf(buf);
|
||||||
|
FreeDhcpOptions(o);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -484,6 +523,68 @@ RECV_RETRY:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Parse RADIUS attributes
|
||||||
|
LIST *RadiusParseOptions(BUF *b)
|
||||||
|
{
|
||||||
|
LIST *o;
|
||||||
|
UCHAR code;
|
||||||
|
UCHAR id;
|
||||||
|
USHORT len;
|
||||||
|
UCHAR auth[16];
|
||||||
|
// Validate arguments
|
||||||
|
if (b == NULL)
|
||||||
|
{
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
o = NewList(NULL);
|
||||||
|
|
||||||
|
ReadBuf(b, &code, 1);
|
||||||
|
ReadBuf(b, &id, 1);
|
||||||
|
len = 0;
|
||||||
|
ReadBuf(b, &len, 2);
|
||||||
|
len = Endian16(len);
|
||||||
|
ReadBuf(b, auth, 16);
|
||||||
|
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
UCHAR attribute_id;
|
||||||
|
UCHAR size;
|
||||||
|
UCHAR data[256];
|
||||||
|
DHCP_OPTION *d;
|
||||||
|
|
||||||
|
if (ReadBuf(b, &attribute_id, 1) != 1)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ReadBuf(b, &size, 1) != 1)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (size <= 2)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
size -= 2;
|
||||||
|
if (ReadBuf(b, data, size) != size)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
d = ZeroMalloc(sizeof(DHCP_OPTION));
|
||||||
|
d->Id = attribute_id;
|
||||||
|
d->Size = size;
|
||||||
|
d->Data = Clone(data, d->Size);
|
||||||
|
|
||||||
|
Add(o, d);
|
||||||
|
}
|
||||||
|
|
||||||
|
return o;
|
||||||
|
}
|
||||||
|
|
||||||
// Adding Attributes
|
// Adding Attributes
|
||||||
void RadiusAddValue(BUF *b, UCHAR t, UINT v, UCHAR vt, void *data, UINT size)
|
void RadiusAddValue(BUF *b, UCHAR t, UINT v, UCHAR vt, void *data, UINT size)
|
||||||
{
|
{
|
||||||
|
@ -118,13 +118,25 @@
|
|||||||
#define RADIUS_RETRY_INTERVAL 500 // Retransmission interval
|
#define RADIUS_RETRY_INTERVAL 500 // Retransmission interval
|
||||||
#define RADIUS_RETRY_TIMEOUT (10 * 1000) // Time-out period
|
#define RADIUS_RETRY_TIMEOUT (10 * 1000) // Time-out period
|
||||||
|
|
||||||
|
|
||||||
|
// RADIUS attributes
|
||||||
|
#define RADIUS_ATTRIBUTE_VLAN_ID 81
|
||||||
|
|
||||||
|
struct RADIUS_LOGIN_OPTION
|
||||||
|
{
|
||||||
|
bool In_CheckVLanId;
|
||||||
|
UINT Out_VLanId;
|
||||||
|
};
|
||||||
|
|
||||||
// Function prototype
|
// Function prototype
|
||||||
bool RadiusLogin(CONNECTION *c, char *server, UINT port, UCHAR *secret, UINT secret_size, wchar_t *username, char *password, UINT interval, UCHAR *mschap_v2_server_response_20);
|
bool RadiusLogin(CONNECTION *c, char *server, UINT port, UCHAR *secret, UINT secret_size, wchar_t *username, char *password, UINT interval, UCHAR *mschap_v2_server_response_20,
|
||||||
|
RADIUS_LOGIN_OPTION *opt);
|
||||||
BUF *RadiusEncryptPassword(char *password, UCHAR *random, UCHAR *secret, UINT secret_size);
|
BUF *RadiusEncryptPassword(char *password, UCHAR *random, UCHAR *secret, UINT secret_size);
|
||||||
BUF *RadiusCreateUserName(wchar_t *username);
|
BUF *RadiusCreateUserName(wchar_t *username);
|
||||||
BUF *RadiusCreateUserPassword(void *data, UINT size);
|
BUF *RadiusCreateUserPassword(void *data, UINT size);
|
||||||
BUF *RadiusCreateNasId(char *name);
|
BUF *RadiusCreateNasId(char *name);
|
||||||
void RadiusAddValue(BUF *b, UCHAR t, UINT v, UCHAR vt, void *data, UINT size);
|
void RadiusAddValue(BUF *b, UCHAR t, UINT v, UCHAR vt, void *data, UINT size);
|
||||||
|
LIST *RadiusParseOptions(BUF *b);
|
||||||
|
|
||||||
#endif // RADIUS_H
|
#endif // RADIUS_H
|
||||||
|
|
||||||
|
@ -2670,7 +2670,7 @@ void SwDefineTasks(SW *sw, SW_TASK *t, SW_COMPONENT *c)
|
|||||||
SW_TASK_COPY *vpninstall;
|
SW_TASK_COPY *vpninstall;
|
||||||
wchar_t *src_config_filename;
|
wchar_t *src_config_filename;
|
||||||
|
|
||||||
CombinePathW(tmp, sizeof(tmp), sw->InstallDir, L"backup.vpn_vpnclient.config");
|
CombinePathW(tmp, sizeof(tmp), sw->InstallDir, L"backup.vpn_client.config");
|
||||||
Add(t->SetSecurityPaths, CopyUniStr(tmp));
|
Add(t->SetSecurityPaths, CopyUniStr(tmp));
|
||||||
|
|
||||||
if (x64 == false)
|
if (x64 == false)
|
||||||
|
@ -175,7 +175,7 @@ bool SamAuthUserByAnonymous(HUB *h, char *username)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Plaintext password authentication of user
|
// Plaintext password authentication of user
|
||||||
bool SamAuthUserByPlainPassword(CONNECTION *c, HUB *hub, char *username, char *password, bool ast, UCHAR *mschap_v2_server_response_20)
|
bool SamAuthUserByPlainPassword(CONNECTION *c, HUB *hub, char *username, char *password, bool ast, UCHAR *mschap_v2_server_response_20, RADIUS_LOGIN_OPTION *opt)
|
||||||
{
|
{
|
||||||
bool b = false;
|
bool b = false;
|
||||||
wchar_t *name = NULL;
|
wchar_t *name = NULL;
|
||||||
@ -267,7 +267,7 @@ bool SamAuthUserByPlainPassword(CONNECTION *c, HUB *hub, char *username, char *p
|
|||||||
// Attempt to login
|
// Attempt to login
|
||||||
b = RadiusLogin(c, radius_server_addr, radius_server_port,
|
b = RadiusLogin(c, radius_server_addr, radius_server_port,
|
||||||
radius_secret, StrLen(radius_secret),
|
radius_secret, StrLen(radius_secret),
|
||||||
name, password, interval, mschap_v2_server_response_20);
|
name, password, interval, mschap_v2_server_response_20, opt);
|
||||||
}
|
}
|
||||||
|
|
||||||
Lock(hub->lock);
|
Lock(hub->lock);
|
||||||
|
@ -121,7 +121,7 @@ UINT SamGetUserAuthType(HUB *h, char *username);
|
|||||||
bool SamAuthUserByPassword(HUB *h, char *username, void *random, void *secure_password, char *mschap_v2_password, UCHAR *mschap_v2_server_response_20, UINT *err);
|
bool SamAuthUserByPassword(HUB *h, char *username, void *random, void *secure_password, char *mschap_v2_password, UCHAR *mschap_v2_server_response_20, UINT *err);
|
||||||
bool SamAuthUserByAnonymous(HUB *h, char *username);
|
bool SamAuthUserByAnonymous(HUB *h, char *username);
|
||||||
bool SamAuthUserByCert(HUB *h, char *username, X *x);
|
bool SamAuthUserByCert(HUB *h, char *username, X *x);
|
||||||
bool SamAuthUserByPlainPassword(CONNECTION *c, HUB *hub, char *username, char *password, bool ast, UCHAR *mschap_v2_server_response_20);
|
bool SamAuthUserByPlainPassword(CONNECTION *c, HUB *hub, char *username, char *password, bool ast, UCHAR *mschap_v2_server_response_20, RADIUS_LOGIN_OPTION *opt);
|
||||||
POLICY *SamGetUserPolicy(HUB *h, char *username);
|
POLICY *SamGetUserPolicy(HUB *h, char *username);
|
||||||
|
|
||||||
void GenRamdom(void *random);
|
void GenRamdom(void *random);
|
||||||
|
@ -260,6 +260,7 @@ UINT SiDebug(SERVER *s, RPC_TEST *ret, UINT i, char *str)
|
|||||||
{10, "Get VgsMessageDisplayed Flag", "", SiDebugProcGetVgsMessageDisplayedValue},
|
{10, "Get VgsMessageDisplayed Flag", "", SiDebugProcGetVgsMessageDisplayedValue},
|
||||||
{11, "Set VgsMessageDisplayed Flag", "", SiDebugProcSetVgsMessageDisplayedValue},
|
{11, "Set VgsMessageDisplayed Flag", "", SiDebugProcSetVgsMessageDisplayedValue},
|
||||||
{12, "Get the current TCP send queue length", "", SiDebugProcGetCurrentTcpSendQueueLength},
|
{12, "Get the current TCP send queue length", "", SiDebugProcGetCurrentTcpSendQueueLength},
|
||||||
|
{13, "Get the current GetIP thread count", "", SiDebugProcGetCurrentGetIPThreadCount},
|
||||||
};
|
};
|
||||||
UINT num_proc_list = sizeof(proc_list) / sizeof(proc_list[0]);
|
UINT num_proc_list = sizeof(proc_list) / sizeof(proc_list[0]);
|
||||||
UINT j;
|
UINT j;
|
||||||
@ -478,6 +479,25 @@ UINT SiDebugProcGetCurrentTcpSendQueueLength(SERVER *s, char *in_str, char *ret_
|
|||||||
|
|
||||||
return ERR_NO_ERROR;
|
return ERR_NO_ERROR;
|
||||||
}
|
}
|
||||||
|
UINT SiDebugProcGetCurrentGetIPThreadCount(SERVER *s, char *in_str, char *ret_str, UINT ret_str_size)
|
||||||
|
{
|
||||||
|
char tmp1[64], tmp2[64];
|
||||||
|
// Validate arguments
|
||||||
|
if (s == NULL || in_str == NULL || ret_str == NULL)
|
||||||
|
{
|
||||||
|
return ERR_INVALID_PARAMETER;
|
||||||
|
}
|
||||||
|
|
||||||
|
ToStr3(tmp1, 0, GetCurrentGetIpThreadNum());
|
||||||
|
ToStr3(tmp2, 0, GetGetIpThreadMaxNum());
|
||||||
|
|
||||||
|
Format(ret_str, 0,
|
||||||
|
"Current threads = %s\n"
|
||||||
|
"Quota = %s\n",
|
||||||
|
tmp1, tmp2);
|
||||||
|
|
||||||
|
return ERR_NO_ERROR;
|
||||||
|
}
|
||||||
UINT SiDebugProcSetVgsMessageDisplayedValue(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)
|
||||||
{
|
{
|
||||||
// Validate arguments
|
// Validate arguments
|
||||||
@ -4081,6 +4101,7 @@ void SiLoadHubOptionCfg(FOLDER *f, HUB_OPTION *o)
|
|||||||
o->DisableCheckMacOnLocalBridge = CfgGetBool(f, "DisableCheckMacOnLocalBridge");
|
o->DisableCheckMacOnLocalBridge = CfgGetBool(f, "DisableCheckMacOnLocalBridge");
|
||||||
o->DisableCorrectIpOffloadChecksum = CfgGetBool(f, "DisableCorrectIpOffloadChecksum");
|
o->DisableCorrectIpOffloadChecksum = CfgGetBool(f, "DisableCorrectIpOffloadChecksum");
|
||||||
o->SuppressClientUpdateNotification = CfgGetBool(f, "SuppressClientUpdateNotification");
|
o->SuppressClientUpdateNotification = CfgGetBool(f, "SuppressClientUpdateNotification");
|
||||||
|
o->AssignVLanIdByRadiusAttribute = CfgGetBool(f, "AssignVLanIdByRadiusAttribute");
|
||||||
|
|
||||||
// Enabled by default
|
// Enabled by default
|
||||||
if (CfgIsItem(f, "ManageOnlyPrivateIP"))
|
if (CfgIsItem(f, "ManageOnlyPrivateIP"))
|
||||||
@ -4156,6 +4177,7 @@ void SiWriteHubOptionCfg(FOLDER *f, HUB_OPTION *o)
|
|||||||
CfgAddBool(f, "DropBroadcastsInPrivacyFilterMode", o->DropBroadcastsInPrivacyFilterMode);
|
CfgAddBool(f, "DropBroadcastsInPrivacyFilterMode", o->DropBroadcastsInPrivacyFilterMode);
|
||||||
CfgAddBool(f, "DropArpInPrivacyFilterMode", o->DropArpInPrivacyFilterMode);
|
CfgAddBool(f, "DropArpInPrivacyFilterMode", o->DropArpInPrivacyFilterMode);
|
||||||
CfgAddBool(f, "SuppressClientUpdateNotification", o->SuppressClientUpdateNotification);
|
CfgAddBool(f, "SuppressClientUpdateNotification", o->SuppressClientUpdateNotification);
|
||||||
|
CfgAddBool(f, "AssignVLanIdByRadiusAttribute", o->AssignVLanIdByRadiusAttribute);
|
||||||
CfgAddBool(f, "NoLookBPDUBridgeId", o->NoLookBPDUBridgeId);
|
CfgAddBool(f, "NoLookBPDUBridgeId", o->NoLookBPDUBridgeId);
|
||||||
CfgAddInt(f, "AdjustTcpMssValue", o->AdjustTcpMssValue);
|
CfgAddInt(f, "AdjustTcpMssValue", o->AdjustTcpMssValue);
|
||||||
CfgAddBool(f, "DisableAdjustTcpMss", o->DisableAdjustTcpMss);
|
CfgAddBool(f, "DisableAdjustTcpMss", o->DisableAdjustTcpMss);
|
||||||
@ -5748,6 +5770,7 @@ void SiLoadServerCfg(SERVER *s, FOLDER *f)
|
|||||||
bool cluster_allowed = false;
|
bool cluster_allowed = false;
|
||||||
UINT num_connections_per_ip = 0;
|
UINT num_connections_per_ip = 0;
|
||||||
FOLDER *params_folder;
|
FOLDER *params_folder;
|
||||||
|
UINT i;
|
||||||
// Validate arguments
|
// Validate arguments
|
||||||
if (s == NULL || f == NULL)
|
if (s == NULL || f == NULL)
|
||||||
{
|
{
|
||||||
@ -5765,6 +5788,16 @@ void SiLoadServerCfg(SERVER *s, FOLDER *f)
|
|||||||
s->AutoSaveConfigSpan = MAKESURE(s->AutoSaveConfigSpan, SERVER_FILE_SAVE_INTERVAL_MIN, SERVER_FILE_SAVE_INTERVAL_MAX);
|
s->AutoSaveConfigSpan = MAKESURE(s->AutoSaveConfigSpan, SERVER_FILE_SAVE_INTERVAL_MIN, SERVER_FILE_SAVE_INTERVAL_MAX);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
i = CfgGetInt(f, "MaxConcurrentDnsClientThreads");
|
||||||
|
if (i != 0)
|
||||||
|
{
|
||||||
|
SetGetIpThreadMaxNum(i);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SetGetIpThreadMaxNum(DEFAULT_GETIP_THREAD_MAX_NUM);
|
||||||
|
}
|
||||||
|
|
||||||
s->DontBackupConfig = CfgGetBool(f, "DontBackupConfig");
|
s->DontBackupConfig = CfgGetBool(f, "DontBackupConfig");
|
||||||
|
|
||||||
if (CfgIsItem(f, "BackupConfigOnlyWhenModified"))
|
if (CfgIsItem(f, "BackupConfigOnlyWhenModified"))
|
||||||
@ -5900,6 +5933,16 @@ void SiLoadServerCfg(SERVER *s, FOLDER *f)
|
|||||||
// Disable the OpenVPN server function
|
// Disable the OpenVPN server function
|
||||||
s->DisableOpenVPNServer = CfgGetBool(f, "DisableOpenVPNServer");
|
s->DisableOpenVPNServer = CfgGetBool(f, "DisableOpenVPNServer");
|
||||||
|
|
||||||
|
// OpenVPN Default Option String
|
||||||
|
if (CfgGetStr(f, "OpenVPNDefaultClientOption", tmp, sizeof(tmp)))
|
||||||
|
{
|
||||||
|
if (IsEmptyStr(tmp) == false)
|
||||||
|
{
|
||||||
|
StrCpy(c->OpenVPNDefaultClientOption,
|
||||||
|
sizeof(c->OpenVPNDefaultClientOption), tmp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Disable the NAT-traversal feature
|
// Disable the NAT-traversal feature
|
||||||
s->DisableNatTraversal = CfgGetBool(f, "DisableNatTraversal");
|
s->DisableNatTraversal = CfgGetBool(f, "DisableNatTraversal");
|
||||||
|
|
||||||
@ -6190,6 +6233,8 @@ void SiWriteServerCfg(FOLDER *f, SERVER *s)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CfgAddInt(f, "MaxConcurrentDnsClientThreads", GetGetIpThreadMaxNum());
|
||||||
|
|
||||||
CfgAddInt(f, "CurrentBuild", s->Cedar->Build);
|
CfgAddInt(f, "CurrentBuild", s->Cedar->Build);
|
||||||
|
|
||||||
CfgAddInt(f, "AutoSaveConfigSpan", s->AutoSaveConfigSpanSaved / 1000);
|
CfgAddInt(f, "AutoSaveConfigSpan", s->AutoSaveConfigSpanSaved / 1000);
|
||||||
@ -6292,6 +6337,8 @@ void SiWriteServerCfg(FOLDER *f, SERVER *s)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CfgAddStr(f, "OpenVPNDefaultClientOption", c->OpenVPNDefaultClientOption);
|
||||||
|
|
||||||
if (c->Bridge == false)
|
if (c->Bridge == false)
|
||||||
{
|
{
|
||||||
// VPN over ICMP
|
// VPN over ICMP
|
||||||
@ -7431,6 +7478,7 @@ void SiCalledUpdateHub(SERVER *s, PACK *p)
|
|||||||
o.DropBroadcastsInPrivacyFilterMode = PackGetBool(p, "DropBroadcastsInPrivacyFilterMode");
|
o.DropBroadcastsInPrivacyFilterMode = PackGetBool(p, "DropBroadcastsInPrivacyFilterMode");
|
||||||
o.DropArpInPrivacyFilterMode = PackGetBool(p, "DropArpInPrivacyFilterMode");
|
o.DropArpInPrivacyFilterMode = PackGetBool(p, "DropArpInPrivacyFilterMode");
|
||||||
o.SuppressClientUpdateNotification = PackGetBool(p, "SuppressClientUpdateNotification");
|
o.SuppressClientUpdateNotification = PackGetBool(p, "SuppressClientUpdateNotification");
|
||||||
|
o.AssignVLanIdByRadiusAttribute = PackGetBool(p, "AssignVLanIdByRadiusAttribute");
|
||||||
o.VlanTypeId = PackGetInt(p, "VlanTypeId");
|
o.VlanTypeId = PackGetInt(p, "VlanTypeId");
|
||||||
if (o.VlanTypeId == 0)
|
if (o.VlanTypeId == 0)
|
||||||
{
|
{
|
||||||
@ -9270,6 +9318,7 @@ void SiPackAddCreateHub(PACK *p, HUB *h)
|
|||||||
PackAddBool(p, "DropBroadcastsInPrivacyFilterMode", h->Option->DropBroadcastsInPrivacyFilterMode);
|
PackAddBool(p, "DropBroadcastsInPrivacyFilterMode", h->Option->DropBroadcastsInPrivacyFilterMode);
|
||||||
PackAddBool(p, "DropArpInPrivacyFilterMode", h->Option->DropArpInPrivacyFilterMode);
|
PackAddBool(p, "DropArpInPrivacyFilterMode", h->Option->DropArpInPrivacyFilterMode);
|
||||||
PackAddBool(p, "SuppressClientUpdateNotification", h->Option->SuppressClientUpdateNotification);
|
PackAddBool(p, "SuppressClientUpdateNotification", h->Option->SuppressClientUpdateNotification);
|
||||||
|
PackAddBool(p, "AssignVLanIdByRadiusAttribute", h->Option->AssignVLanIdByRadiusAttribute);
|
||||||
PackAddInt(p, "ClientMinimumRequiredBuild", h->Option->ClientMinimumRequiredBuild);
|
PackAddInt(p, "ClientMinimumRequiredBuild", h->Option->ClientMinimumRequiredBuild);
|
||||||
PackAddBool(p, "FixForDLinkBPDU", h->Option->FixForDLinkBPDU);
|
PackAddBool(p, "FixForDLinkBPDU", h->Option->FixForDLinkBPDU);
|
||||||
PackAddBool(p, "BroadcastLimiterStrictMode", h->Option->BroadcastLimiterStrictMode);
|
PackAddBool(p, "BroadcastLimiterStrictMode", h->Option->BroadcastLimiterStrictMode);
|
||||||
@ -10811,6 +10860,8 @@ SERVER *SiNewServerEx(bool bridge, bool in_client_inner_server)
|
|||||||
LISTENER *azure;
|
LISTENER *azure;
|
||||||
LISTENER *rudp;
|
LISTENER *rudp;
|
||||||
|
|
||||||
|
SetGetIpThreadMaxNum(DEFAULT_GETIP_THREAD_MAX_NUM);
|
||||||
|
|
||||||
s = ZeroMalloc(sizeof(SERVER));
|
s = ZeroMalloc(sizeof(SERVER));
|
||||||
|
|
||||||
SetEraserCheckInterval(0);
|
SetEraserCheckInterval(0);
|
||||||
|
@ -678,6 +678,7 @@ UINT SiDebugProcSetIPsecMessageDisplayedValue(SERVER *s, char *in_str, char *ret
|
|||||||
UINT SiDebugProcGetVgsMessageDisplayedValue(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 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);
|
UINT SiDebugProcGetCurrentTcpSendQueueLength(SERVER *s, char *in_str, char *ret_str, UINT ret_str_size);
|
||||||
|
UINT SiDebugProcGetCurrentGetIPThreadCount(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);
|
typedef UINT (SI_DEBUG_PROC)(SERVER *s, char *in_str, char *ret_str, UINT ret_str_size);
|
||||||
|
|
||||||
|
@ -1034,6 +1034,11 @@ UDP_ACCEL *NewUdpAccel(CEDAR *cedar, IP *ip, bool client_mode, bool random_port,
|
|||||||
|
|
||||||
a->IsIPv6 = IsIP6(ip);
|
a->IsIPv6 = IsIP6(ip);
|
||||||
|
|
||||||
|
if (a->IsIPv6)
|
||||||
|
{
|
||||||
|
a->NoNatT = true;
|
||||||
|
}
|
||||||
|
|
||||||
a->RecvBlockQueue = NewQueue();
|
a->RecvBlockQueue = NewQueue();
|
||||||
|
|
||||||
Rand(a->NextIv, sizeof(a->NextIv));
|
Rand(a->NextIv, sizeof(a->NextIv));
|
||||||
@ -1088,6 +1093,8 @@ void NatT_GetIpThread(THREAD *thread, void *param)
|
|||||||
{
|
{
|
||||||
UDP_ACCEL *a;
|
UDP_ACCEL *a;
|
||||||
char hostname[MAX_SIZE];
|
char hostname[MAX_SIZE];
|
||||||
|
static IP dummy_ip = {0};
|
||||||
|
UINT num_retry = 0;
|
||||||
// Validate arguments
|
// Validate arguments
|
||||||
if (thread == NULL || param == NULL)
|
if (thread == NULL || param == NULL)
|
||||||
{
|
{
|
||||||
@ -1096,11 +1103,17 @@ void NatT_GetIpThread(THREAD *thread, void *param)
|
|||||||
|
|
||||||
a = (UDP_ACCEL *)param;
|
a = (UDP_ACCEL *)param;
|
||||||
|
|
||||||
RUDPGetRegisterHostNameByIP(hostname, sizeof(hostname), NULL);
|
if (IsZeroIP(&dummy_ip))
|
||||||
|
{
|
||||||
|
SetIP(&dummy_ip, 11, Rand8(), Rand8(), Rand8());
|
||||||
|
}
|
||||||
|
|
||||||
|
RUDPGetRegisterHostNameByIP(hostname, sizeof(hostname), &dummy_ip);
|
||||||
|
|
||||||
while (a->NatT_Halt == false)
|
while (a->NatT_Halt == false)
|
||||||
{
|
{
|
||||||
IP ip;
|
IP ip;
|
||||||
|
UINT wait_time = UDP_NAT_T_GET_IP_INTERVAL;
|
||||||
|
|
||||||
// Get the IP address
|
// Get the IP address
|
||||||
bool ret = GetIP4Ex(&ip, hostname, 0, &a->NatT_Halt);
|
bool ret = GetIP4Ex(&ip, hostname, 0, &a->NatT_Halt);
|
||||||
@ -1125,7 +1138,11 @@ void NatT_GetIpThread(THREAD *thread, void *param)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Fail to get
|
// Fail to get
|
||||||
Wait(a->NatT_HaltEvent, UDP_NAT_T_GET_IP_INTERVAL);
|
num_retry++;
|
||||||
|
|
||||||
|
wait_time = (UINT)(MIN((UINT64)UDP_NAT_T_GET_IP_INTERVAL * (UINT64)num_retry, (UINT64)UDP_NAT_T_GET_IP_INTERVAL_MAX));
|
||||||
|
|
||||||
|
Wait(a->NatT_HaltEvent, wait_time);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
BUILD_NUMBER 9506
|
BUILD_NUMBER 9514
|
||||||
VERSION 411
|
VERSION 412
|
||||||
BUILD_NAME beta
|
BUILD_NAME beta
|
||||||
BUILD_DATE 20141022_195155
|
BUILD_DATE 20141117_214116
|
||||||
|
361
src/Makefile64
Normal file
361
src/Makefile64
Normal file
@ -0,0 +1,361 @@
|
|||||||
|
# PacketiX VPN Source Code
|
||||||
|
# Copyright (c) SoftEther Corporation. All Rights Reserved.
|
||||||
|
# Platform: linux-x86-64bit
|
||||||
|
|
||||||
|
# Variables
|
||||||
|
CC=gcc
|
||||||
|
|
||||||
|
OPTIONS_COMPILE_DEBUG=-DUNIX_LINUX -DCPU_64 -DCPU_X64 -D_DEBUG -DDEBUG -DUNIX -D_REENTRANT -DREENTRANT -D_THREAD_SAFE -D_THREADSAFE -DTHREAD_SAFE -DTHREADSAFE -D_FILE_OFFSET_BITS=64 -I./ -I./Cedar/ -I./Mayaqua/ -g -fsigned-char -pthread -m64
|
||||||
|
|
||||||
|
OPTIONS_LINK_DEBUG=-g -fsigned-char -pthread -m64 -lm -ldl -lrt -lpthread -L./ lib/64/libssl.a lib/64/libcrypto.a lib/64/libiconv.a lib/64/libcharset.a lib/64/libedit.a lib/64/libncurses.a lib/64/libz.a lib/64/libintelaes.a
|
||||||
|
|
||||||
|
OPTIONS_COMPILE_RELEASE=-DUNIX_LINUX -DCPU_64 -DCPU_X64 -DNDEBUG -DVPN_SPEED -DMAYAQUA_REPLACE -DUNIX -D_REENTRANT -DREENTRANT -D_THREAD_SAFE -D_THREADSAFE -DTHREAD_SAFE -DTHREADSAFE -D_FILE_OFFSET_BITS=64 -I./ -I./Cedar/ -I./Mayaqua/ -O2 -fsigned-char -pthread -m64
|
||||||
|
|
||||||
|
OPTIONS_LINK_RELEASE=-O2 -fsigned-char -pthread -m64 -lm -ldl -lrt -lpthread -L./ lib/64/libssl.a lib/64/libcrypto.a lib/64/libiconv.a lib/64/libcharset.a lib/64/libedit.a lib/64/libncurses.a lib/64/libz.a lib/64/libintelaes.a
|
||||||
|
|
||||||
|
ifeq ($(DEBUG),YES)
|
||||||
|
OPTIONS_COMPILE=$(OPTIONS_COMPILE_DEBUG)
|
||||||
|
OPTIONS_LINK=$(OPTIONS_LINK_DEBUG)
|
||||||
|
else
|
||||||
|
OPTIONS_COMPILE=$(OPTIONS_COMPILE_RELEASE)
|
||||||
|
OPTIONS_LINK=$(OPTIONS_LINK_RELEASE)
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Files
|
||||||
|
HEADERS_MAYAQUA=Mayaqua/Cfg.h Mayaqua/cryptoki.h Mayaqua/Encrypt.h Mayaqua/FileIO.h Mayaqua/intelaes/iaesni.h Mayaqua/Internat.h Mayaqua/Kernel.h Mayaqua/Mayaqua.h Mayaqua/MayaType.h Mayaqua/Memory.h Mayaqua/Microsoft.h Mayaqua/Network.h Mayaqua/Object.h Mayaqua/openssl/aes.h Mayaqua/openssl/asn1.h Mayaqua/openssl/asn1_mac.h Mayaqua/openssl/asn1t.h Mayaqua/openssl/bio.h Mayaqua/openssl/blowfish.h Mayaqua/openssl/bn.h Mayaqua/openssl/buffer.h Mayaqua/openssl/cast.h Mayaqua/openssl/comp.h Mayaqua/openssl/conf.h Mayaqua/openssl/conf_api.h Mayaqua/openssl/crypto.h Mayaqua/openssl/des.h Mayaqua/openssl/des_old.h Mayaqua/openssl/dh.h Mayaqua/openssl/dsa.h Mayaqua/openssl/dso.h Mayaqua/openssl/dtls1.h Mayaqua/openssl/e_os2.h Mayaqua/openssl/ebcdic.h Mayaqua/openssl/ec.h Mayaqua/openssl/ecdh.h Mayaqua/openssl/ecdsa.h Mayaqua/openssl/engine.h Mayaqua/openssl/err.h Mayaqua/openssl/evp.h Mayaqua/openssl/fips.h Mayaqua/openssl/fips_rand.h Mayaqua/openssl/hmac.h Mayaqua/openssl/idea.h Mayaqua/openssl/krb5_asn.h Mayaqua/openssl/kssl.h Mayaqua/openssl/lhash.h Mayaqua/openssl/md2.h Mayaqua/openssl/md4.h Mayaqua/openssl/md5.h Mayaqua/openssl/mdc2.h Mayaqua/openssl/obj_mac.h Mayaqua/openssl/objects.h Mayaqua/openssl/ocsp.h Mayaqua/openssl/opensslconf.h Mayaqua/openssl/opensslv.h Mayaqua/openssl/ossl_typ.h Mayaqua/openssl/pem.h Mayaqua/openssl/pem2.h Mayaqua/openssl/pkcs12.h Mayaqua/openssl/pkcs7.h Mayaqua/openssl/pq_compat.h Mayaqua/openssl/pqueue.h Mayaqua/openssl/rand.h Mayaqua/openssl/rc2.h Mayaqua/openssl/rc4.h Mayaqua/openssl/rc5.h Mayaqua/openssl/ripemd.h Mayaqua/openssl/rsa.h Mayaqua/openssl/safestack.h Mayaqua/openssl/sha.h Mayaqua/openssl/ssl.h Mayaqua/openssl/ssl2.h Mayaqua/openssl/ssl23.h Mayaqua/openssl/ssl3.h Mayaqua/openssl/stack.h Mayaqua/openssl/store.h Mayaqua/openssl/symhacks.h Mayaqua/openssl/tls1.h Mayaqua/openssl/tmdiff.h Mayaqua/openssl/txt_db.h Mayaqua/openssl/ui.h Mayaqua/openssl/ui_compat.h Mayaqua/openssl/x509.h Mayaqua/openssl/x509_vfy.h Mayaqua/openssl/x509v3.h Mayaqua/OS.h Mayaqua/Pack.h Mayaqua/pkcs11.h Mayaqua/pkcs11f.h Mayaqua/pkcs11t.h Mayaqua/Secure.h Mayaqua/Str.h Mayaqua/Table.h Mayaqua/TcpIp.h Mayaqua/Tick64.h Mayaqua/Tracking.h Mayaqua/TunTap.h Mayaqua/Unix.h Mayaqua/Win32.h Mayaqua/zlib/zconf.h Mayaqua/zlib/zlib.h
|
||||||
|
HEADERS_CEDAR=Cedar/Account.h Cedar/Admin.h Cedar/AzureClient.h Cedar/AzureServer.h Cedar/Bridge.h Cedar/BridgeUnix.h Cedar/BridgeWin32.h Cedar/Cedar.h Cedar/CedarPch.h Cedar/CedarType.h Cedar/Client.h Cedar/CM.h Cedar/CMInner.h Cedar/Command.h Cedar/Connection.h Cedar/Console.h Cedar/Database.h Cedar/DDNS.h Cedar/EM.h Cedar/EMInner.h Cedar/EtherLog.h Cedar/Hub.h Cedar/Interop_OpenVPN.h Cedar/Interop_SSTP.h Cedar/IPsec.h Cedar/IPsec_EtherIP.h Cedar/IPsec_IKE.h Cedar/IPsec_IkePacket.h Cedar/IPsec_IPC.h Cedar/IPsec_L2TP.h Cedar/IPsec_PPP.h Cedar/IPsec_Win7.h Cedar/IPsec_Win7Inner.h Cedar/Layer3.h Cedar/Link.h Cedar/Listener.h Cedar/Logging.h Cedar/Nat.h Cedar/NativeStack.h Cedar/NM.h Cedar/NMInner.h Cedar/NullLan.h Cedar/Protocol.h Cedar/Radius.h Cedar/Remote.h Cedar/Sam.h Cedar/SecureInfo.h Cedar/SecureNAT.h Cedar/SeLowUser.h Cedar/Server.h Cedar/Session.h Cedar/SM.h Cedar/SMInner.h Cedar/SW.h Cedar/SWInner.h Cedar/UdpAccel.h Cedar/UT.h Cedar/VG.h Cedar/Virtual.h Cedar/VLan.h Cedar/VLanUnix.h Cedar/VLanWin32.h Cedar/WaterMark.h Cedar/WebUI.h Cedar/Win32Com.h Cedar/WinUi.h Cedar/Wpc.h
|
||||||
|
OBJECTS_MAYAQUA=object/Mayaqua/Cfg.o object/Mayaqua/Encrypt.o object/Mayaqua/FileIO.o object/Mayaqua/Internat.o object/Mayaqua/Kernel.o object/Mayaqua/Mayaqua.o object/Mayaqua/Memory.o object/Mayaqua/Microsoft.o object/Mayaqua/Network.o object/Mayaqua/Object.o object/Mayaqua/OS.o object/Mayaqua/Pack.o object/Mayaqua/Secure.o object/Mayaqua/Str.o object/Mayaqua/Table.o object/Mayaqua/TcpIp.o object/Mayaqua/Tick64.o object/Mayaqua/Tracking.o object/Mayaqua/Unix.o object/Mayaqua/Win32.o
|
||||||
|
OBJECTS_CEDAR=object/Cedar/Account.o object/Cedar/Admin.o object/Cedar/AzureClient.o object/Cedar/AzureServer.o object/Cedar/Bridge.o object/Cedar/BridgeUnix.o object/Cedar/BridgeWin32.o object/Cedar/Cedar.o object/Cedar/CedarPch.o object/Cedar/Client.o object/Cedar/CM.o object/Cedar/Command.o object/Cedar/Connection.o object/Cedar/Console.o object/Cedar/Database.o object/Cedar/DDNS.o object/Cedar/EM.o object/Cedar/EtherLog.o object/Cedar/Hub.o object/Cedar/Interop_OpenVPN.o object/Cedar/Interop_SSTP.o object/Cedar/IPsec.o object/Cedar/IPsec_EtherIP.o object/Cedar/IPsec_IKE.o object/Cedar/IPsec_IkePacket.o object/Cedar/IPsec_IPC.o object/Cedar/IPsec_L2TP.o object/Cedar/IPsec_PPP.o object/Cedar/IPsec_Win7.o object/Cedar/Layer3.o object/Cedar/Link.o object/Cedar/Listener.o object/Cedar/Logging.o object/Cedar/Nat.o object/Cedar/NativeStack.o object/Cedar/NM.o object/Cedar/NullLan.o object/Cedar/Protocol.o object/Cedar/Radius.o object/Cedar/Remote.o object/Cedar/Sam.o object/Cedar/SecureInfo.o object/Cedar/SecureNAT.o object/Cedar/SeLowUser.o object/Cedar/Server.o object/Cedar/Session.o object/Cedar/SM.o object/Cedar/SW.o object/Cedar/UdpAccel.o object/Cedar/UT.o object/Cedar/VG.o object/Cedar/Virtual.o object/Cedar/VLan.o object/Cedar/VLanUnix.o object/Cedar/VLanWin32.o object/Cedar/WaterMark.o object/Cedar/WebUI.o object/Cedar/WinUi.o object/Cedar/Wpc.o
|
||||||
|
|
||||||
|
# Build Action
|
||||||
|
default: build
|
||||||
|
|
||||||
|
build: $(OBJECTS_MAYAQUA) $(OBJECTS_CEDAR) bin/ham bin/vpnserver bin/vpnbridge bin/vpnclient bin/vpncmd
|
||||||
|
|
||||||
|
# Mayaqua Kernel Code
|
||||||
|
object/Mayaqua/Cfg.o: Mayaqua/Cfg.c $(HEADERS_MAYAQUA)
|
||||||
|
@mkdir -p object/
|
||||||
|
@mkdir -p object/Mayaqua/
|
||||||
|
@mkdir -p object/Cedar/
|
||||||
|
@mkdir -p code/
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Mayaqua/Cfg.c -o object/Mayaqua/Cfg.o
|
||||||
|
|
||||||
|
object/Mayaqua/Encrypt.o: Mayaqua/Encrypt.c $(HEADERS_MAYAQUA)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Mayaqua/Encrypt.c -o object/Mayaqua/Encrypt.o
|
||||||
|
|
||||||
|
object/Mayaqua/FileIO.o: Mayaqua/FileIO.c $(HEADERS_MAYAQUA)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Mayaqua/FileIO.c -o object/Mayaqua/FileIO.o
|
||||||
|
|
||||||
|
object/Mayaqua/Internat.o: Mayaqua/Internat.c $(HEADERS_MAYAQUA)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Mayaqua/Internat.c -o object/Mayaqua/Internat.o
|
||||||
|
|
||||||
|
object/Mayaqua/Kernel.o: Mayaqua/Kernel.c $(HEADERS_MAYAQUA)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Mayaqua/Kernel.c -o object/Mayaqua/Kernel.o
|
||||||
|
|
||||||
|
object/Mayaqua/Mayaqua.o: Mayaqua/Mayaqua.c $(HEADERS_MAYAQUA)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Mayaqua/Mayaqua.c -o object/Mayaqua/Mayaqua.o
|
||||||
|
|
||||||
|
object/Mayaqua/Memory.o: Mayaqua/Memory.c $(HEADERS_MAYAQUA)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Mayaqua/Memory.c -o object/Mayaqua/Memory.o
|
||||||
|
|
||||||
|
object/Mayaqua/Microsoft.o: Mayaqua/Microsoft.c $(HEADERS_MAYAQUA)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Mayaqua/Microsoft.c -o object/Mayaqua/Microsoft.o
|
||||||
|
|
||||||
|
object/Mayaqua/Network.o: Mayaqua/Network.c $(HEADERS_MAYAQUA)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Mayaqua/Network.c -o object/Mayaqua/Network.o
|
||||||
|
|
||||||
|
object/Mayaqua/Object.o: Mayaqua/Object.c $(HEADERS_MAYAQUA)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Mayaqua/Object.c -o object/Mayaqua/Object.o
|
||||||
|
|
||||||
|
object/Mayaqua/OS.o: Mayaqua/OS.c $(HEADERS_MAYAQUA)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Mayaqua/OS.c -o object/Mayaqua/OS.o
|
||||||
|
|
||||||
|
object/Mayaqua/Pack.o: Mayaqua/Pack.c $(HEADERS_MAYAQUA)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Mayaqua/Pack.c -o object/Mayaqua/Pack.o
|
||||||
|
|
||||||
|
object/Mayaqua/Secure.o: Mayaqua/Secure.c $(HEADERS_MAYAQUA)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Mayaqua/Secure.c -o object/Mayaqua/Secure.o
|
||||||
|
|
||||||
|
object/Mayaqua/Str.o: Mayaqua/Str.c $(HEADERS_MAYAQUA)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Mayaqua/Str.c -o object/Mayaqua/Str.o
|
||||||
|
|
||||||
|
object/Mayaqua/Table.o: Mayaqua/Table.c $(HEADERS_MAYAQUA)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Mayaqua/Table.c -o object/Mayaqua/Table.o
|
||||||
|
|
||||||
|
object/Mayaqua/TcpIp.o: Mayaqua/TcpIp.c $(HEADERS_MAYAQUA)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Mayaqua/TcpIp.c -o object/Mayaqua/TcpIp.o
|
||||||
|
|
||||||
|
object/Mayaqua/Tick64.o: Mayaqua/Tick64.c $(HEADERS_MAYAQUA)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Mayaqua/Tick64.c -o object/Mayaqua/Tick64.o
|
||||||
|
|
||||||
|
object/Mayaqua/Tracking.o: Mayaqua/Tracking.c $(HEADERS_MAYAQUA)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Mayaqua/Tracking.c -o object/Mayaqua/Tracking.o
|
||||||
|
|
||||||
|
object/Mayaqua/Unix.o: Mayaqua/Unix.c $(HEADERS_MAYAQUA)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Mayaqua/Unix.c -o object/Mayaqua/Unix.o
|
||||||
|
|
||||||
|
object/Mayaqua/Win32.o: Mayaqua/Win32.c $(HEADERS_MAYAQUA)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Mayaqua/Win32.c -o object/Mayaqua/Win32.o
|
||||||
|
|
||||||
|
# Cedar Communication Module Code
|
||||||
|
object/Cedar/Account.o: Cedar/Account.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Cedar/Account.c -o object/Cedar/Account.o
|
||||||
|
|
||||||
|
object/Cedar/Admin.o: Cedar/Admin.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Cedar/Admin.c -o object/Cedar/Admin.o
|
||||||
|
|
||||||
|
object/Cedar/AzureClient.o: Cedar/AzureClient.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Cedar/AzureClient.c -o object/Cedar/AzureClient.o
|
||||||
|
|
||||||
|
object/Cedar/AzureServer.o: Cedar/AzureServer.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Cedar/AzureServer.c -o object/Cedar/AzureServer.o
|
||||||
|
|
||||||
|
object/Cedar/Bridge.o: Cedar/Bridge.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR) Cedar/BridgeUnix.c
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Cedar/Bridge.c -o object/Cedar/Bridge.o
|
||||||
|
|
||||||
|
object/Cedar/BridgeUnix.o: Cedar/BridgeUnix.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Cedar/BridgeUnix.c -o object/Cedar/BridgeUnix.o
|
||||||
|
|
||||||
|
object/Cedar/BridgeWin32.o: Cedar/BridgeWin32.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Cedar/BridgeWin32.c -o object/Cedar/BridgeWin32.o
|
||||||
|
|
||||||
|
object/Cedar/Cedar.o: Cedar/Cedar.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Cedar/Cedar.c -o object/Cedar/Cedar.o
|
||||||
|
|
||||||
|
object/Cedar/CedarPch.o: Cedar/CedarPch.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Cedar/CedarPch.c -o object/Cedar/CedarPch.o
|
||||||
|
|
||||||
|
object/Cedar/Client.o: Cedar/Client.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Cedar/Client.c -o object/Cedar/Client.o
|
||||||
|
|
||||||
|
object/Cedar/CM.o: Cedar/CM.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Cedar/CM.c -o object/Cedar/CM.o
|
||||||
|
|
||||||
|
object/Cedar/Command.o: Cedar/Command.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Cedar/Command.c -o object/Cedar/Command.o
|
||||||
|
|
||||||
|
object/Cedar/Connection.o: Cedar/Connection.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Cedar/Connection.c -o object/Cedar/Connection.o
|
||||||
|
|
||||||
|
object/Cedar/Console.o: Cedar/Console.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Cedar/Console.c -o object/Cedar/Console.o
|
||||||
|
|
||||||
|
object/Cedar/Database.o: Cedar/Database.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Cedar/Database.c -o object/Cedar/Database.o
|
||||||
|
|
||||||
|
object/Cedar/DDNS.o: Cedar/DDNS.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Cedar/DDNS.c -o object/Cedar/DDNS.o
|
||||||
|
|
||||||
|
object/Cedar/EM.o: Cedar/EM.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Cedar/EM.c -o object/Cedar/EM.o
|
||||||
|
|
||||||
|
object/Cedar/EtherLog.o: Cedar/EtherLog.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Cedar/EtherLog.c -o object/Cedar/EtherLog.o
|
||||||
|
|
||||||
|
object/Cedar/Hub.o: Cedar/Hub.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Cedar/Hub.c -o object/Cedar/Hub.o
|
||||||
|
|
||||||
|
object/Cedar/Interop_OpenVPN.o: Cedar/Interop_OpenVPN.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Cedar/Interop_OpenVPN.c -o object/Cedar/Interop_OpenVPN.o
|
||||||
|
|
||||||
|
object/Cedar/Interop_SSTP.o: Cedar/Interop_SSTP.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Cedar/Interop_SSTP.c -o object/Cedar/Interop_SSTP.o
|
||||||
|
|
||||||
|
object/Cedar/IPsec.o: Cedar/IPsec.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Cedar/IPsec.c -o object/Cedar/IPsec.o
|
||||||
|
|
||||||
|
object/Cedar/IPsec_EtherIP.o: Cedar/IPsec_EtherIP.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Cedar/IPsec_EtherIP.c -o object/Cedar/IPsec_EtherIP.o
|
||||||
|
|
||||||
|
object/Cedar/IPsec_IKE.o: Cedar/IPsec_IKE.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Cedar/IPsec_IKE.c -o object/Cedar/IPsec_IKE.o
|
||||||
|
|
||||||
|
object/Cedar/IPsec_IkePacket.o: Cedar/IPsec_IkePacket.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Cedar/IPsec_IkePacket.c -o object/Cedar/IPsec_IkePacket.o
|
||||||
|
|
||||||
|
object/Cedar/IPsec_IPC.o: Cedar/IPsec_IPC.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Cedar/IPsec_IPC.c -o object/Cedar/IPsec_IPC.o
|
||||||
|
|
||||||
|
object/Cedar/IPsec_L2TP.o: Cedar/IPsec_L2TP.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Cedar/IPsec_L2TP.c -o object/Cedar/IPsec_L2TP.o
|
||||||
|
|
||||||
|
object/Cedar/IPsec_PPP.o: Cedar/IPsec_PPP.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Cedar/IPsec_PPP.c -o object/Cedar/IPsec_PPP.o
|
||||||
|
|
||||||
|
object/Cedar/IPsec_Win7.o: Cedar/IPsec_Win7.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Cedar/IPsec_Win7.c -o object/Cedar/IPsec_Win7.o
|
||||||
|
|
||||||
|
object/Cedar/Layer3.o: Cedar/Layer3.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Cedar/Layer3.c -o object/Cedar/Layer3.o
|
||||||
|
|
||||||
|
object/Cedar/Link.o: Cedar/Link.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Cedar/Link.c -o object/Cedar/Link.o
|
||||||
|
|
||||||
|
object/Cedar/Listener.o: Cedar/Listener.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Cedar/Listener.c -o object/Cedar/Listener.o
|
||||||
|
|
||||||
|
object/Cedar/Logging.o: Cedar/Logging.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Cedar/Logging.c -o object/Cedar/Logging.o
|
||||||
|
|
||||||
|
object/Cedar/Nat.o: Cedar/Nat.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Cedar/Nat.c -o object/Cedar/Nat.o
|
||||||
|
|
||||||
|
object/Cedar/NativeStack.o: Cedar/NativeStack.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Cedar/NativeStack.c -o object/Cedar/NativeStack.o
|
||||||
|
|
||||||
|
object/Cedar/NM.o: Cedar/NM.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Cedar/NM.c -o object/Cedar/NM.o
|
||||||
|
|
||||||
|
object/Cedar/NullLan.o: Cedar/NullLan.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Cedar/NullLan.c -o object/Cedar/NullLan.o
|
||||||
|
|
||||||
|
object/Cedar/Protocol.o: Cedar/Protocol.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Cedar/Protocol.c -o object/Cedar/Protocol.o
|
||||||
|
|
||||||
|
object/Cedar/Radius.o: Cedar/Radius.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Cedar/Radius.c -o object/Cedar/Radius.o
|
||||||
|
|
||||||
|
object/Cedar/Remote.o: Cedar/Remote.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Cedar/Remote.c -o object/Cedar/Remote.o
|
||||||
|
|
||||||
|
object/Cedar/Sam.o: Cedar/Sam.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Cedar/Sam.c -o object/Cedar/Sam.o
|
||||||
|
|
||||||
|
object/Cedar/SecureInfo.o: Cedar/SecureInfo.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Cedar/SecureInfo.c -o object/Cedar/SecureInfo.o
|
||||||
|
|
||||||
|
object/Cedar/SecureNAT.o: Cedar/SecureNAT.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Cedar/SecureNAT.c -o object/Cedar/SecureNAT.o
|
||||||
|
|
||||||
|
object/Cedar/SeLowUser.o: Cedar/SeLowUser.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Cedar/SeLowUser.c -o object/Cedar/SeLowUser.o
|
||||||
|
|
||||||
|
object/Cedar/Server.o: Cedar/Server.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Cedar/Server.c -o object/Cedar/Server.o
|
||||||
|
|
||||||
|
object/Cedar/Session.o: Cedar/Session.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Cedar/Session.c -o object/Cedar/Session.o
|
||||||
|
|
||||||
|
object/Cedar/SM.o: Cedar/SM.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Cedar/SM.c -o object/Cedar/SM.o
|
||||||
|
|
||||||
|
object/Cedar/SW.o: Cedar/SW.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Cedar/SW.c -o object/Cedar/SW.o
|
||||||
|
|
||||||
|
object/Cedar/UdpAccel.o: Cedar/UdpAccel.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Cedar/UdpAccel.c -o object/Cedar/UdpAccel.o
|
||||||
|
|
||||||
|
object/Cedar/UT.o: Cedar/UT.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Cedar/UT.c -o object/Cedar/UT.o
|
||||||
|
|
||||||
|
object/Cedar/VG.o: Cedar/VG.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Cedar/VG.c -o object/Cedar/VG.o
|
||||||
|
|
||||||
|
object/Cedar/Virtual.o: Cedar/Virtual.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Cedar/Virtual.c -o object/Cedar/Virtual.o
|
||||||
|
|
||||||
|
object/Cedar/VLan.o: Cedar/VLan.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Cedar/VLan.c -o object/Cedar/VLan.o
|
||||||
|
|
||||||
|
object/Cedar/VLanUnix.o: Cedar/VLanUnix.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Cedar/VLanUnix.c -o object/Cedar/VLanUnix.o
|
||||||
|
|
||||||
|
object/Cedar/VLanWin32.o: Cedar/VLanWin32.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Cedar/VLanWin32.c -o object/Cedar/VLanWin32.o
|
||||||
|
|
||||||
|
object/Cedar/WaterMark.o: Cedar/WaterMark.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Cedar/WaterMark.c -o object/Cedar/WaterMark.o
|
||||||
|
|
||||||
|
object/Cedar/WebUI.o: Cedar/WebUI.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Cedar/WebUI.c -o object/Cedar/WebUI.o
|
||||||
|
|
||||||
|
object/Cedar/WinUi.o: Cedar/WinUi.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Cedar/WinUi.c -o object/Cedar/WinUi.o
|
||||||
|
|
||||||
|
object/Cedar/Wpc.o: Cedar/Wpc.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Cedar/Wpc.c -o object/Cedar/Wpc.o
|
||||||
|
|
||||||
|
# Ham
|
||||||
|
bin/ham: code/Ham.a $(HEADERS_MAYAQUA) $(HEADERS_CEDAR) $(OBJECTS_MAYAQUA) $(OBJECTS_CEDAR)
|
||||||
|
$(CC) code/Ham.a $(OPTIONS_LINK) -o bin/ham
|
||||||
|
|
||||||
|
code/Ham.a: object/Ham.o $(HEADERS_MAYAQUA) $(HEADERS_CEDAR) $(OBJECTS_MAYAQUA) $(OBJECTS_CEDAR)
|
||||||
|
rm -f code/Ham.a
|
||||||
|
ar r code/Ham.a $(OBJECTS_MAYAQUA) $(OBJECTS_CEDAR) object/Ham.o
|
||||||
|
ranlib code/Ham.a
|
||||||
|
|
||||||
|
object/Ham.o: Ham/Ham.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR) $(OBJECTS_MAYAQUA) $(OBJECTS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c Ham/Ham.c -o object/Ham.o
|
||||||
|
|
||||||
|
# vpnserver
|
||||||
|
bin/vpnserver: code/vpnserver.a $(HEADERS_MAYAQUA) $(HEADERS_CEDAR) $(OBJECTS_MAYAQUA) $(OBJECTS_CEDAR)
|
||||||
|
$(CC) code/vpnserver.a $(OPTIONS_LINK) -o bin/vpnserver
|
||||||
|
|
||||||
|
code/vpnserver.a: object/vpnserver.o $(HEADERS_MAYAQUA) $(HEADERS_CEDAR) $(OBJECTS_MAYAQUA) $(OBJECTS_CEDAR)
|
||||||
|
rm -f code/vpnserver.a
|
||||||
|
ar r code/vpnserver.a $(OBJECTS_MAYAQUA) $(OBJECTS_CEDAR) object/vpnserver.o
|
||||||
|
ranlib code/vpnserver.a
|
||||||
|
|
||||||
|
object/vpnserver.o: vpnserver/vpnserver.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR) $(OBJECTS_MAYAQUA) $(OBJECTS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c vpnserver/vpnserver.c -o object/vpnserver.o
|
||||||
|
|
||||||
|
# vpnbridge
|
||||||
|
bin/vpnbridge: code/vpnbridge.a $(HEADERS_MAYAQUA) $(HEADERS_CEDAR) $(OBJECTS_MAYAQUA) $(OBJECTS_CEDAR)
|
||||||
|
$(CC) code/vpnbridge.a $(OPTIONS_LINK) -o bin/vpnbridge
|
||||||
|
|
||||||
|
code/vpnbridge.a: object/vpnbridge.o $(HEADERS_MAYAQUA) $(HEADERS_CEDAR) $(OBJECTS_MAYAQUA) $(OBJECTS_CEDAR)
|
||||||
|
rm -f code/vpnbridge.a
|
||||||
|
ar r code/vpnbridge.a $(OBJECTS_MAYAQUA) $(OBJECTS_CEDAR) object/vpnbridge.o
|
||||||
|
ranlib code/vpnbridge.a
|
||||||
|
|
||||||
|
object/vpnbridge.o: vpnbridge/vpnbridge.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR) $(OBJECTS_MAYAQUA) $(OBJECTS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c vpnbridge/vpnbridge.c -o object/vpnbridge.o
|
||||||
|
|
||||||
|
# vpnclient
|
||||||
|
bin/vpnclient: code/vpnclient.a $(HEADERS_MAYAQUA) $(HEADERS_CEDAR) $(OBJECTS_MAYAQUA) $(OBJECTS_CEDAR)
|
||||||
|
$(CC) code/vpnclient.a $(OPTIONS_LINK) -o bin/vpnclient
|
||||||
|
|
||||||
|
code/vpnclient.a: object/vpnclient.o $(HEADERS_MAYAQUA) $(HEADERS_CEDAR) $(OBJECTS_MAYAQUA) $(OBJECTS_CEDAR)
|
||||||
|
rm -f code/vpnclient.a
|
||||||
|
ar r code/vpnclient.a $(OBJECTS_MAYAQUA) $(OBJECTS_CEDAR) object/vpnclient.o
|
||||||
|
ranlib code/vpnclient.a
|
||||||
|
|
||||||
|
object/vpnclient.o: vpnclient/vpncsvc.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR) $(OBJECTS_MAYAQUA) $(OBJECTS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c vpnclient/vpncsvc.c -o object/vpnclient.o
|
||||||
|
|
||||||
|
# vpncmd
|
||||||
|
bin/vpncmd: code/vpncmd.a $(HEADERS_MAYAQUA) $(HEADERS_CEDAR) $(OBJECTS_MAYAQUA) $(OBJECTS_CEDAR)
|
||||||
|
$(CC) code/vpncmd.a $(OPTIONS_LINK) -o bin/vpncmd
|
||||||
|
|
||||||
|
code/vpncmd.a: object/vpncmd.o $(HEADERS_MAYAQUA) $(HEADERS_CEDAR) $(OBJECTS_MAYAQUA) $(OBJECTS_CEDAR)
|
||||||
|
rm -f code/vpncmd.a
|
||||||
|
ar r code/vpncmd.a $(OBJECTS_MAYAQUA) $(OBJECTS_CEDAR) object/vpncmd.o
|
||||||
|
ranlib code/vpncmd.a
|
||||||
|
|
||||||
|
object/vpncmd.o: vpncmd/vpncmd.c $(HEADERS_MAYAQUA) $(HEADERS_CEDAR) $(OBJECTS_MAYAQUA) $(OBJECTS_CEDAR)
|
||||||
|
$(CC) $(OPTIONS_COMPILE) -c vpncmd/vpncmd.c -o object/vpncmd.o
|
||||||
|
|
||||||
|
# Clean
|
||||||
|
clean:
|
||||||
|
-rm -f $(OBJECTS_MAYAQUA)
|
||||||
|
-rm -f $(OBJECTS_CEDAR)
|
||||||
|
-rm -f object/Ham.o
|
||||||
|
-rm -f code/Ham.a
|
||||||
|
-rm -f bin/ham
|
||||||
|
-rm -f object/vpnserver.o
|
||||||
|
-rm -f code/vpnserver.a
|
||||||
|
-rm -f bin/vpnserver
|
||||||
|
-rm -f object/vpnbridge.o
|
||||||
|
-rm -f code/vpnbridge.a
|
||||||
|
-rm -f bin/vpnbridge
|
||||||
|
-rm -f object/vpnclient.o
|
||||||
|
-rm -f code/vpnclient.a
|
||||||
|
-rm -f bin/vpnclient
|
||||||
|
-rm -f object/vpncmd.o
|
||||||
|
-rm -f code/vpncmd.a
|
||||||
|
-rm -f bin/vpncmd
|
||||||
|
|
||||||
|
# Help Strings
|
||||||
|
help:
|
||||||
|
@echo "make [DEBUG=YES]"
|
||||||
|
|
@ -229,6 +229,8 @@ static LOCK *host_ip_address_list_cache_lock = NULL;
|
|||||||
static UINT64 host_ip_address_list_cache_last = 0;
|
static UINT64 host_ip_address_list_cache_last = 0;
|
||||||
static LIST *host_ip_address_cache = NULL;
|
static LIST *host_ip_address_cache = NULL;
|
||||||
static bool disable_gethostname_by_accept = false;
|
static bool disable_gethostname_by_accept = false;
|
||||||
|
static COUNTER *getip_thread_counter = NULL;
|
||||||
|
static UINT max_getip_thread = 0;
|
||||||
|
|
||||||
|
|
||||||
static char *cipher_list = "RC4-MD5 RC4-SHA AES128-SHA AES256-SHA DES-CBC-SHA DES-CBC3-SHA DHE-RSA-AES128-SHA DHE-RSA-AES256-SHA";
|
static char *cipher_list = "RC4-MD5 RC4-SHA AES128-SHA AES256-SHA DES-CBC-SHA DES-CBC3-SHA DHE-RSA-AES128-SHA DHE-RSA-AES256-SHA";
|
||||||
@ -2005,6 +2007,17 @@ bool RUDPIsIpInValidateList(RUDP_STACK *r, IP *ip)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Always allow private IP addresses
|
||||||
|
if (IsIPPrivate(ip))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IsIPAddressInSameLocalNetwork(ip))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
for (i = 0;i < LIST_NUM(r->NatT_SourceIpList);i++)
|
for (i = 0;i < LIST_NUM(r->NatT_SourceIpList);i++)
|
||||||
{
|
{
|
||||||
RUDP_SOURCE_IP *s = (RUDP_SOURCE_IP *)LIST_DATA(r->NatT_SourceIpList, i);
|
RUDP_SOURCE_IP *s = (RUDP_SOURCE_IP *)LIST_DATA(r->NatT_SourceIpList, i);
|
||||||
@ -4350,6 +4363,7 @@ void RUDPIpQueryThread(THREAD *thread, void *param)
|
|||||||
void *route_change_poller = NULL;
|
void *route_change_poller = NULL;
|
||||||
char current_hostname[MAX_SIZE];
|
char current_hostname[MAX_SIZE];
|
||||||
bool last_time_ip_changed = false;
|
bool last_time_ip_changed = false;
|
||||||
|
UINT num_retry = 0;
|
||||||
// Validate arguments
|
// Validate arguments
|
||||||
if (thread == NULL || param == NULL)
|
if (thread == NULL || param == NULL)
|
||||||
{
|
{
|
||||||
@ -4429,7 +4443,9 @@ void RUDPIpQueryThread(THREAD *thread, void *param)
|
|||||||
|
|
||||||
if (IsZeroIp(&r->NatT_IP))
|
if (IsZeroIp(&r->NatT_IP))
|
||||||
{
|
{
|
||||||
next_getip_tick = now + (UINT64)UDP_NAT_T_GET_IP_INTERVAL;
|
num_retry++;
|
||||||
|
|
||||||
|
next_getip_tick = now + MIN((UINT64)UDP_NAT_T_GET_IP_INTERVAL * (UINT64)num_retry, (UINT64)UDP_NAT_T_GET_IP_INTERVAL_MAX);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -6730,6 +6746,46 @@ bool IsInSameNetwork4(IP *a1, IP *a2, IP *subnet)
|
|||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
bool IsInSameNetwork4Standard(IP *a1, IP *a2)
|
||||||
|
{
|
||||||
|
IP subnet;
|
||||||
|
|
||||||
|
SetIP(&subnet, 255, 255, 0, 0);
|
||||||
|
|
||||||
|
return IsInSameNetwork4(a1, a2, &subnet);
|
||||||
|
}
|
||||||
|
bool IsInSameLocalNetworkToMe4(IP *a)
|
||||||
|
{
|
||||||
|
IP g1, g2;
|
||||||
|
|
||||||
|
Zero(&g1, sizeof(g1));
|
||||||
|
Zero(&g2, sizeof(g2));
|
||||||
|
|
||||||
|
GetCurrentGlobalIPGuess(&g1, false);
|
||||||
|
|
||||||
|
if (IsZeroIp(&g1) == false)
|
||||||
|
{
|
||||||
|
if (IsInSameNetwork4Standard(&g1, a))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (GetCurrentGlobalIP(&g2, false))
|
||||||
|
{
|
||||||
|
if (IsInSameNetwork4Standard(&g2, a))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IsIPAddressInSameLocalNetwork(a))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
// Check whether it is a network address prefix
|
// Check whether it is a network address prefix
|
||||||
bool IsNetworkAddress6(IP *ip, IP *subnet)
|
bool IsNetworkAddress6(IP *ip, IP *subnet)
|
||||||
@ -10926,6 +10982,20 @@ void InitHostCache()
|
|||||||
HostCacheList = NewList(CompareHostCache);
|
HostCacheList = NewList(CompareHostCache);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Get the number of wait threads
|
||||||
|
UINT GetNumWaitThread()
|
||||||
|
{
|
||||||
|
UINT ret = 0;
|
||||||
|
|
||||||
|
LockList(WaitThreadList);
|
||||||
|
{
|
||||||
|
ret = LIST_NUM(WaitThreadList);
|
||||||
|
}
|
||||||
|
UnlockList(WaitThreadList);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
// Add the thread to the thread waiting list
|
// Add the thread to the thread waiting list
|
||||||
void AddWaitThread(THREAD *t)
|
void AddWaitThread(THREAD *t)
|
||||||
{
|
{
|
||||||
@ -16631,6 +16701,8 @@ void GetIP4Ex6ExThread(THREAD *t, void *param)
|
|||||||
ReleaseGetIPThreadParam(p);
|
ReleaseGetIPThreadParam(p);
|
||||||
|
|
||||||
DelWaitThread(t);
|
DelWaitThread(t);
|
||||||
|
|
||||||
|
Dec(getip_thread_counter);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Perform a forward DNS query (with timeout)
|
// Perform a forward DNS query (with timeout)
|
||||||
@ -16645,9 +16717,13 @@ bool GetIP4Ex6Ex2(IP *ip, char *hostname_arg, UINT timeout, bool ipv6, bool *can
|
|||||||
bool ret = false;
|
bool ret = false;
|
||||||
UINT64 start_tick = 0;
|
UINT64 start_tick = 0;
|
||||||
UINT64 end_tick = 0;
|
UINT64 end_tick = 0;
|
||||||
|
UINT64 spent_time = 0;
|
||||||
|
UINT64 now;
|
||||||
|
UINT n;
|
||||||
bool use_dns_proxy = false;
|
bool use_dns_proxy = false;
|
||||||
char hostname[260];
|
char hostname[260];
|
||||||
UINT i;
|
UINT i;
|
||||||
|
bool timed_out;
|
||||||
// Validate arguments
|
// Validate arguments
|
||||||
if (ip == NULL || hostname_arg == NULL)
|
if (ip == NULL || hostname_arg == NULL)
|
||||||
{
|
{
|
||||||
@ -16718,6 +16794,89 @@ bool GetIP4Ex6Ex2(IP *ip, char *hostname_arg, UINT timeout, bool ipv6, bool *can
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// check the quota
|
||||||
|
start_tick = Tick64();
|
||||||
|
end_tick = start_tick + (UINT64)timeout;
|
||||||
|
|
||||||
|
n = 0;
|
||||||
|
|
||||||
|
timed_out = false;
|
||||||
|
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
UINT64 now = Tick64();
|
||||||
|
UINT64 remain;
|
||||||
|
UINT remain32;
|
||||||
|
|
||||||
|
if (GetGetIpThreadMaxNum() > GetCurrentGetIpThreadNum())
|
||||||
|
{
|
||||||
|
// below the quota
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (now >= end_tick)
|
||||||
|
{
|
||||||
|
// timeouted
|
||||||
|
timed_out = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cancel != NULL && (*cancel))
|
||||||
|
{
|
||||||
|
// cancelled
|
||||||
|
timed_out = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
remain = end_tick - now;
|
||||||
|
remain32 = MIN((UINT)remain, 100);
|
||||||
|
|
||||||
|
SleepThread(remain32);
|
||||||
|
n++;
|
||||||
|
}
|
||||||
|
|
||||||
|
now = Tick64();
|
||||||
|
spent_time = now - start_tick;
|
||||||
|
|
||||||
|
if (n == 0)
|
||||||
|
{
|
||||||
|
spent_time = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((UINT)spent_time >= timeout)
|
||||||
|
{
|
||||||
|
timed_out = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (timed_out)
|
||||||
|
{
|
||||||
|
IP ip2;
|
||||||
|
|
||||||
|
// timed out, cancelled
|
||||||
|
if (QueryDnsCache(&ip2, hostname))
|
||||||
|
{
|
||||||
|
ret = true;
|
||||||
|
|
||||||
|
Copy(ip, &ip2, sizeof(IP));
|
||||||
|
}
|
||||||
|
|
||||||
|
Debug("GetIP4Ex6Ex2: Worker thread quota exceeded: max=%u current=%u\n",
|
||||||
|
GetGetIpThreadMaxNum(), GetCurrentGetIpThreadNum());
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Increment the counter
|
||||||
|
Inc(getip_thread_counter);
|
||||||
|
|
||||||
|
if (spent_time != 0)
|
||||||
|
{
|
||||||
|
Debug("GetIP4Ex6Ex2: Waited for %u msecs to create a worker thread.\n",
|
||||||
|
spent_time);
|
||||||
|
}
|
||||||
|
|
||||||
|
timeout -= (UINT)spent_time;
|
||||||
|
|
||||||
p = ZeroMalloc(sizeof(GETIP_THREAD_PARAM));
|
p = ZeroMalloc(sizeof(GETIP_THREAD_PARAM));
|
||||||
p->Ref = NewRef();
|
p->Ref = NewRef();
|
||||||
StrCpy(p->HostName, sizeof(p->HostName), hostname);
|
StrCpy(p->HostName, sizeof(p->HostName), hostname);
|
||||||
@ -16774,6 +16933,7 @@ bool GetIP4Ex6Ex2(IP *ip, char *hostname_arg, UINT timeout, bool ipv6, bool *can
|
|||||||
{
|
{
|
||||||
IP ip2;
|
IP ip2;
|
||||||
|
|
||||||
|
#if 0
|
||||||
if (only_direct_dns == false)
|
if (only_direct_dns == false)
|
||||||
{
|
{
|
||||||
if (ipv6)
|
if (ipv6)
|
||||||
@ -16802,6 +16962,7 @@ bool GetIP4Ex6Ex2(IP *ip, char *hostname_arg, UINT timeout, bool ipv6, bool *can
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (QueryDnsCache(&ip2, hostname))
|
if (QueryDnsCache(&ip2, hostname))
|
||||||
{
|
{
|
||||||
@ -17457,6 +17618,27 @@ void FreeSSLCtx(struct ssl_ctx_st *ctx)
|
|||||||
SSL_CTX_free(ctx);
|
SSL_CTX_free(ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// The number of get ip threads
|
||||||
|
void SetGetIpThreadMaxNum(UINT num)
|
||||||
|
{
|
||||||
|
max_getip_thread = num;
|
||||||
|
}
|
||||||
|
UINT GetGetIpThreadMaxNum()
|
||||||
|
{
|
||||||
|
UINT ret = max_getip_thread;
|
||||||
|
|
||||||
|
if (ret == 0)
|
||||||
|
{
|
||||||
|
ret = 0x7FFFFFFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
UINT GetCurrentGetIpThreadNum()
|
||||||
|
{
|
||||||
|
return Count(getip_thread_counter);
|
||||||
|
}
|
||||||
|
|
||||||
// Initialize the network communication module
|
// Initialize the network communication module
|
||||||
void InitNetwork()
|
void InitNetwork()
|
||||||
{
|
{
|
||||||
@ -17471,6 +17653,8 @@ void InitNetwork()
|
|||||||
|
|
||||||
num_tcp_connections = NewCounter();
|
num_tcp_connections = NewCounter();
|
||||||
|
|
||||||
|
getip_thread_counter = NewCounter();
|
||||||
|
|
||||||
// Initialization of client list
|
// Initialization of client list
|
||||||
InitIpClientList();
|
InitIpClientList();
|
||||||
|
|
||||||
@ -17515,6 +17699,8 @@ void InitNetwork()
|
|||||||
dh_1024 = DhNewGroup2();
|
dh_1024 = DhNewGroup2();
|
||||||
|
|
||||||
Zero(rand_port_numbers, sizeof(rand_port_numbers));
|
Zero(rand_port_numbers, sizeof(rand_port_numbers));
|
||||||
|
|
||||||
|
SetGetIpThreadMaxNum(DEFAULT_GETIP_THREAD_MAX_NUM);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Enable the network name cache
|
// Enable the network name cache
|
||||||
@ -17770,6 +17956,45 @@ void FreePrivateIPFile()
|
|||||||
g_use_privateip_file = false;
|
g_use_privateip_file = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check whether the specified IP address is in the same network to this computer
|
||||||
|
bool IsIPAddressInSameLocalNetwork(IP *a)
|
||||||
|
{
|
||||||
|
bool ret = false;
|
||||||
|
LIST *o;
|
||||||
|
UINT i;
|
||||||
|
// Validate arguments
|
||||||
|
if (a == NULL)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
o = GetHostIPAddressList();
|
||||||
|
|
||||||
|
if (o != NULL)
|
||||||
|
{
|
||||||
|
for (i = 0;i < LIST_NUM(o);i++)
|
||||||
|
{
|
||||||
|
IP *p = LIST_DATA(o, i);
|
||||||
|
|
||||||
|
if (IsIP4(p))
|
||||||
|
{
|
||||||
|
if (IsZeroIp(p) == false && p->addr[0] != 127)
|
||||||
|
{
|
||||||
|
if (IsInSameNetwork4Standard(p, a))
|
||||||
|
{
|
||||||
|
ret = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
FreeHostIPAddressList(o);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
// Guess the IPv4, IPv6 global address from the IP address list of the current interface
|
// Guess the IPv4, IPv6 global address from the IP address list of the current interface
|
||||||
void GetCurrentGlobalIPGuess(IP *ip, bool ipv6)
|
void GetCurrentGlobalIPGuess(IP *ip, bool ipv6)
|
||||||
{
|
{
|
||||||
@ -17950,6 +18175,9 @@ void FreeNetwork()
|
|||||||
|
|
||||||
FreeDynList();
|
FreeDynList();
|
||||||
|
|
||||||
|
DeleteCounter(getip_thread_counter);
|
||||||
|
getip_thread_counter = NULL;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add a socket to socket list
|
// Add a socket to socket list
|
||||||
@ -19114,6 +19342,46 @@ int CmpIpAddressList(void *p1, void *p2)
|
|||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Get the IP address list hash of the host
|
||||||
|
UINT64 GetHostIPAddressListHash()
|
||||||
|
{
|
||||||
|
UINT i;
|
||||||
|
LIST *o;
|
||||||
|
BUF *buf = NewBuf();
|
||||||
|
UCHAR hash[SHA1_SIZE];
|
||||||
|
UINT64 ret = 0;
|
||||||
|
|
||||||
|
o = GetHostIPAddressList();
|
||||||
|
|
||||||
|
if (o != NULL)
|
||||||
|
{
|
||||||
|
for (i = 0;i < LIST_NUM(o);i++)
|
||||||
|
{
|
||||||
|
IP *ip = LIST_DATA(o, i);
|
||||||
|
char tmp[128];
|
||||||
|
|
||||||
|
Zero(tmp, sizeof(tmp));
|
||||||
|
IPToStr(tmp, sizeof(tmp), ip);
|
||||||
|
|
||||||
|
WriteBufStr(buf, tmp);
|
||||||
|
}
|
||||||
|
|
||||||
|
FreeHostIPAddressList(o);
|
||||||
|
}
|
||||||
|
|
||||||
|
WriteBufStr(buf, "test");
|
||||||
|
|
||||||
|
HashSha1(hash, buf->Buf, buf->Size);
|
||||||
|
|
||||||
|
FreeBuf(buf);
|
||||||
|
|
||||||
|
Copy(&ret, hash, sizeof(UINT64));
|
||||||
|
|
||||||
|
ret = Endian64(ret);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
// Get the IP address list of the host (using cache)
|
// Get the IP address list of the host (using cache)
|
||||||
LIST *GetHostIPAddressList()
|
LIST *GetHostIPAddressList()
|
||||||
{
|
{
|
||||||
|
@ -147,6 +147,13 @@ struct DYN_VALUE
|
|||||||
|
|
||||||
#define MAX_NUM_IGNORE_ERRORS 1024
|
#define MAX_NUM_IGNORE_ERRORS 1024
|
||||||
|
|
||||||
|
#ifndef USE_STRATEGY_LOW_MEMORY
|
||||||
|
#define DEFAULT_GETIP_THREAD_MAX_NUM 512
|
||||||
|
#else // USE_STRATEGY_LOW_MEMORY
|
||||||
|
#define DEFAULT_GETIP_THREAD_MAX_NUM 64
|
||||||
|
#endif // USE_STRATEGY_LOW_MEMORY
|
||||||
|
|
||||||
|
|
||||||
// SSL logging function
|
// SSL logging function
|
||||||
//#define ENABLE_SSL_LOGGING
|
//#define ENABLE_SSL_LOGGING
|
||||||
#define SSL_LOGGING_DIRNAME "@ssl_log"
|
#define SSL_LOGGING_DIRNAME "@ssl_log"
|
||||||
@ -748,6 +755,7 @@ struct RUDP_SESSION
|
|||||||
|
|
||||||
// Related to processing to get the IP address of the NAT-T server
|
// Related to processing to get the IP address of the NAT-T server
|
||||||
#define UDP_NAT_T_GET_IP_INTERVAL DYN32(UDP_NAT_T_GET_IP_INTERVAL, (5 * 1000)) // IP address acquisition interval of NAT-T server (before success)
|
#define UDP_NAT_T_GET_IP_INTERVAL DYN32(UDP_NAT_T_GET_IP_INTERVAL, (5 * 1000)) // IP address acquisition interval of NAT-T server (before success)
|
||||||
|
#define UDP_NAT_T_GET_IP_INTERVAL_MAX DYN32(UDP_NAT_T_GET_IP_INTERVAL, (150 * 1000)) // IP address acquisition interval of NAT-T server (before success)
|
||||||
#define UDP_NAT_T_GET_IP_INTERVAL_AFTER DYN32(UDP_NAT_T_GET_IP_INTERVAL_AFTER, (5 * 60 * 1000)) // IP address acquisition interval of NAT-T server (after success)
|
#define UDP_NAT_T_GET_IP_INTERVAL_AFTER DYN32(UDP_NAT_T_GET_IP_INTERVAL_AFTER, (5 * 60 * 1000)) // IP address acquisition interval of NAT-T server (after success)
|
||||||
|
|
||||||
// Related to process to get the private IP address of itself with making a TCP connection to the NAT-T server
|
// Related to process to get the private IP address of itself with making a TCP connection to the NAT-T server
|
||||||
@ -1418,6 +1426,7 @@ void RouteToStr(char *str, UINT str_size, ROUTE_ENTRY *e);
|
|||||||
void DebugPrintRoute(ROUTE_ENTRY *e);
|
void DebugPrintRoute(ROUTE_ENTRY *e);
|
||||||
void DebugPrintRouteTable(ROUTE_TABLE *r);
|
void DebugPrintRouteTable(ROUTE_TABLE *r);
|
||||||
bool IsIPv6LocalNetworkAddress(IP *ip);
|
bool IsIPv6LocalNetworkAddress(IP *ip);
|
||||||
|
UINT GetNumWaitThread();
|
||||||
|
|
||||||
#ifdef ENABLE_SSL_LOGGING
|
#ifdef ENABLE_SSL_LOGGING
|
||||||
void SockEnableSslLogging(SOCK *s);
|
void SockEnableSslLogging(SOCK *s);
|
||||||
@ -1484,6 +1493,8 @@ void IPNot4(IP *dst, IP *a);
|
|||||||
void IPOr4(IP *dst, IP *a, IP *b);
|
void IPOr4(IP *dst, IP *a, IP *b);
|
||||||
void IPAnd4(IP *dst, IP *a, IP *b);
|
void IPAnd4(IP *dst, IP *a, IP *b);
|
||||||
bool IsInSameNetwork4(IP *a1, IP *a2, IP *subnet);
|
bool IsInSameNetwork4(IP *a1, IP *a2, IP *subnet);
|
||||||
|
bool IsInSameNetwork4Standard(IP *a1, IP *a2);
|
||||||
|
bool IsInSameLocalNetworkToMe4(IP *a);
|
||||||
|
|
||||||
bool ParseIpAndSubnetMask4(char *src, UINT *ip, UINT *mask);
|
bool ParseIpAndSubnetMask4(char *src, UINT *ip, UINT *mask);
|
||||||
bool ParseIpAndSubnetMask6(char *src, IP *ip, IP *mask);
|
bool ParseIpAndSubnetMask6(char *src, IP *ip, IP *mask);
|
||||||
@ -1539,6 +1550,7 @@ bool IsMyIPAddress(IP *ip);
|
|||||||
void FreeHostIPAddressList(LIST *o);
|
void FreeHostIPAddressList(LIST *o);
|
||||||
void AddHostIPAddressToList(LIST *o, IP *ip);
|
void AddHostIPAddressToList(LIST *o, IP *ip);
|
||||||
int CmpIpAddressList(void *p1, void *p2);
|
int CmpIpAddressList(void *p1, void *p2);
|
||||||
|
UINT64 GetHostIPAddressListHash();
|
||||||
|
|
||||||
UDPLISTENER *NewUdpListener(UDPLISTENER_RECV_PROC *recv_proc, void *param);
|
UDPLISTENER *NewUdpListener(UDPLISTENER_RECV_PROC *recv_proc, void *param);
|
||||||
void UdpListenerThread(THREAD *thread, void *param);
|
void UdpListenerThread(THREAD *thread, void *param);
|
||||||
@ -1599,6 +1611,7 @@ bool SslBioSync(SSL_BIO *b, bool sync_send, bool sync_recv);
|
|||||||
void SetCurrentGlobalIP(IP *ip, bool ipv6);
|
void SetCurrentGlobalIP(IP *ip, bool ipv6);
|
||||||
bool GetCurrentGlobalIP(IP *ip, bool ipv6);
|
bool GetCurrentGlobalIP(IP *ip, bool ipv6);
|
||||||
void GetCurrentGlobalIPGuess(IP *ip, bool ipv6);
|
void GetCurrentGlobalIPGuess(IP *ip, bool ipv6);
|
||||||
|
bool IsIPAddressInSameLocalNetwork(IP *a);
|
||||||
|
|
||||||
bool IsIPPrivate(IP *ip);
|
bool IsIPPrivate(IP *ip);
|
||||||
bool IsIPMyHost(IP *ip);
|
bool IsIPMyHost(IP *ip);
|
||||||
@ -1631,6 +1644,11 @@ QUERYIPTHREAD *NewQueryIpThread(char *hostname, UINT interval_last_ok, UINT inte
|
|||||||
bool GetQueryIpThreadResult(QUERYIPTHREAD *t, IP *ip);
|
bool GetQueryIpThreadResult(QUERYIPTHREAD *t, IP *ip);
|
||||||
void FreeQueryIpThread(QUERYIPTHREAD *t);
|
void FreeQueryIpThread(QUERYIPTHREAD *t);
|
||||||
|
|
||||||
|
void SetGetIpThreadMaxNum(UINT num);
|
||||||
|
UINT GetGetIpThreadMaxNum();
|
||||||
|
UINT GetCurrentGetIpThreadNum();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
bool IsIpInStrList(IP *ip, char *ip_list);
|
bool IsIpInStrList(IP *ip, char *ip_list);
|
||||||
bool IsInStrByStrList(char *str, char *str_list);
|
bool IsInStrByStrList(char *str, char *str_list);
|
||||||
|
@ -3304,11 +3304,44 @@ BUF *BuildDhcpOptionsBuf(LIST *o)
|
|||||||
for (i = 0;i < LIST_NUM(o);i++)
|
for (i = 0;i < LIST_NUM(o);i++)
|
||||||
{
|
{
|
||||||
DHCP_OPTION *d = LIST_DATA(o, i);
|
DHCP_OPTION *d = LIST_DATA(o, i);
|
||||||
|
UINT current_size = d->Size;
|
||||||
|
UINT current_pos = 0;
|
||||||
|
|
||||||
id = (UCHAR)d->Id;
|
id = (UCHAR)d->Id;
|
||||||
sz = (UCHAR)d->Size;
|
if (d->Size <= 255)
|
||||||
|
{
|
||||||
|
sz = (UCHAR)d->Size;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sz = 0xFF;
|
||||||
|
}
|
||||||
WriteBuf(b, &id, 1);
|
WriteBuf(b, &id, 1);
|
||||||
WriteBuf(b, &sz, 1);
|
WriteBuf(b, &sz, 1);
|
||||||
WriteBuf(b, d->Data, d->Size);
|
WriteBuf(b, d->Data, sz);
|
||||||
|
|
||||||
|
current_size -= sz;
|
||||||
|
current_pos += sz;
|
||||||
|
|
||||||
|
while (current_size != 0)
|
||||||
|
{
|
||||||
|
id = DHCP_ID_PRIVATE;
|
||||||
|
if (current_size <= 255)
|
||||||
|
{
|
||||||
|
sz = (UCHAR)current_size;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sz = 0xFF;
|
||||||
|
}
|
||||||
|
WriteBuf(b, &id, 1);
|
||||||
|
WriteBuf(b, &sz, 1);
|
||||||
|
WriteBuf(b, ((UCHAR *)d->Data) + current_pos, sz);
|
||||||
|
|
||||||
|
current_size -= sz;
|
||||||
|
current_pos += sz;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
id = 0xff;
|
id = 0xff;
|
||||||
@ -3755,27 +3788,24 @@ BUF *DhcpBuildClasslessRouteData(DHCP_CLASSLESS_ROUTE_TABLE *t)
|
|||||||
|
|
||||||
if (r->Exists && r->SubnetMaskLen <= 32)
|
if (r->Exists && r->SubnetMaskLen <= 32)
|
||||||
{
|
{
|
||||||
if (b->Size <= (255 - 9))
|
UCHAR c;
|
||||||
{
|
UINT data_len;
|
||||||
UCHAR c;
|
UINT ip32;
|
||||||
UINT data_len;
|
UCHAR tmp[4];
|
||||||
UINT ip32;
|
|
||||||
UCHAR tmp[4];
|
|
||||||
|
|
||||||
// Width of subnet mask
|
// Width of subnet mask
|
||||||
c = (UCHAR)r->SubnetMaskLen;
|
c = (UCHAR)r->SubnetMaskLen;
|
||||||
WriteBuf(b, &c, 1);
|
WriteBuf(b, &c, 1);
|
||||||
|
|
||||||
// Number of significant octets
|
// Number of significant octets
|
||||||
data_len = (r->SubnetMaskLen + 7) / 8;
|
data_len = (r->SubnetMaskLen + 7) / 8;
|
||||||
Zero(tmp, sizeof(tmp));
|
Zero(tmp, sizeof(tmp));
|
||||||
Copy(tmp, &r->Network, data_len);
|
Copy(tmp, &r->Network, data_len);
|
||||||
WriteBuf(b, tmp, data_len);
|
WriteBuf(b, tmp, data_len);
|
||||||
|
|
||||||
// Gateway
|
// Gateway
|
||||||
ip32 = IPToUINT(&r->Gateway);
|
ip32 = IPToUINT(&r->Gateway);
|
||||||
WriteBuf(b, &ip32, sizeof(UINT));
|
WriteBuf(b, &ip32, sizeof(UINT));
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3965,6 +3995,7 @@ LIST *ParseDhcpOptions(void *data, UINT size)
|
|||||||
{
|
{
|
||||||
BUF *b;
|
BUF *b;
|
||||||
LIST *o;
|
LIST *o;
|
||||||
|
DHCP_OPTION *last_opt;
|
||||||
// Validate arguments
|
// Validate arguments
|
||||||
if (data == NULL)
|
if (data == NULL)
|
||||||
{
|
{
|
||||||
@ -3977,6 +4008,8 @@ LIST *ParseDhcpOptions(void *data, UINT size)
|
|||||||
|
|
||||||
o = NewListFast(NULL);
|
o = NewListFast(NULL);
|
||||||
|
|
||||||
|
last_opt = NULL;
|
||||||
|
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
UCHAR c = 0;
|
UCHAR c = 0;
|
||||||
@ -3995,12 +4028,27 @@ LIST *ParseDhcpOptions(void *data, UINT size)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
opt = ZeroMalloc(sizeof(DHCP_OPTION));
|
if (c == DHCP_ID_PRIVATE && last_opt != NULL)
|
||||||
opt->Id = (UINT)c;
|
{
|
||||||
opt->Size = (UINT)sz;
|
UINT new_size = last_opt->Size + (UINT)sz;
|
||||||
opt->Data = ZeroMalloc((UINT)sz);
|
UCHAR *new_buf = ZeroMalloc(new_size);
|
||||||
ReadBuf(b, opt->Data, sz);
|
Copy(new_buf, last_opt->Data, last_opt->Size);
|
||||||
Add(o, opt);
|
ReadBuf(b, new_buf + last_opt->Size, sz);
|
||||||
|
Free(last_opt->Data);
|
||||||
|
last_opt->Data = new_buf;
|
||||||
|
last_opt->Size = new_size;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
opt = ZeroMalloc(sizeof(DHCP_OPTION));
|
||||||
|
opt->Id = (UINT)c;
|
||||||
|
opt->Size = (UINT)sz;
|
||||||
|
opt->Data = ZeroMalloc((UINT)sz);
|
||||||
|
ReadBuf(b, opt->Data, sz);
|
||||||
|
Add(o, opt);
|
||||||
|
|
||||||
|
last_opt = opt;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
FreeBuf(b);
|
FreeBuf(b);
|
||||||
|
@ -625,6 +625,7 @@ struct ICMPV6_HEADER_INFO
|
|||||||
#define DHCP_ID_REQ_PARAM_LIST 0x37
|
#define DHCP_ID_REQ_PARAM_LIST 0x37
|
||||||
#define DHCP_ID_CLASSLESS_ROUTE 0x79
|
#define DHCP_ID_CLASSLESS_ROUTE 0x79
|
||||||
#define DHCP_ID_MS_CLASSLESS_ROUTE 0xF9
|
#define DHCP_ID_MS_CLASSLESS_ROUTE 0xF9
|
||||||
|
#define DHCP_ID_PRIVATE 0xFA
|
||||||
|
|
||||||
|
|
||||||
// DHCP client action
|
// DHCP client action
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = NetTrans
|
Class = NetTrans
|
||||||
ClassGUID = {4D36E975-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E975-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_selow.cat
|
CatalogFile.NT = inf_selow.cat
|
||||||
|
|
||||||
@ -66,5 +66,5 @@ SeLow_Description = "A lightweight helper kernel-mode module for PacketiX VPN
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
; Auto Generated 20141022_203021.056
|
; Auto Generated 20141117_222152.555
|
||||||
|
|
||||||
|
Binary file not shown.
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = NetTrans
|
Class = NetTrans
|
||||||
ClassGUID = {4D36E975-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E975-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_selow.cat
|
CatalogFile.NT = inf_selow.cat
|
||||||
|
|
||||||
@ -66,5 +66,5 @@ SeLow_Description = "A lightweight helper kernel-mode module for PacketiX VPN
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
; Auto Generated 20141022_202525.677
|
; Auto Generated 20141117_221645.757
|
||||||
|
|
||||||
|
Binary file not shown.
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN.cat
|
CatalogFile.NT = inf_VPN.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN10.cat
|
CatalogFile.NT = inf_VPN10.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN100.cat
|
CatalogFile.NT = inf_VPN100.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN101.cat
|
CatalogFile.NT = inf_VPN101.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN102.cat
|
CatalogFile.NT = inf_VPN102.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN103.cat
|
CatalogFile.NT = inf_VPN103.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN104.cat
|
CatalogFile.NT = inf_VPN104.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN105.cat
|
CatalogFile.NT = inf_VPN105.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN106.cat
|
CatalogFile.NT = inf_VPN106.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN107.cat
|
CatalogFile.NT = inf_VPN107.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN108.cat
|
CatalogFile.NT = inf_VPN108.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN109.cat
|
CatalogFile.NT = inf_VPN109.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN11.cat
|
CatalogFile.NT = inf_VPN11.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN110.cat
|
CatalogFile.NT = inf_VPN110.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN111.cat
|
CatalogFile.NT = inf_VPN111.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN112.cat
|
CatalogFile.NT = inf_VPN112.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN113.cat
|
CatalogFile.NT = inf_VPN113.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN114.cat
|
CatalogFile.NT = inf_VPN114.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN115.cat
|
CatalogFile.NT = inf_VPN115.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN116.cat
|
CatalogFile.NT = inf_VPN116.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN117.cat
|
CatalogFile.NT = inf_VPN117.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN118.cat
|
CatalogFile.NT = inf_VPN118.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN119.cat
|
CatalogFile.NT = inf_VPN119.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN12.cat
|
CatalogFile.NT = inf_VPN12.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN120.cat
|
CatalogFile.NT = inf_VPN120.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN121.cat
|
CatalogFile.NT = inf_VPN121.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN122.cat
|
CatalogFile.NT = inf_VPN122.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN123.cat
|
CatalogFile.NT = inf_VPN123.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN124.cat
|
CatalogFile.NT = inf_VPN124.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN125.cat
|
CatalogFile.NT = inf_VPN125.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN126.cat
|
CatalogFile.NT = inf_VPN126.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN127.cat
|
CatalogFile.NT = inf_VPN127.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN13.cat
|
CatalogFile.NT = inf_VPN13.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN14.cat
|
CatalogFile.NT = inf_VPN14.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN15.cat
|
CatalogFile.NT = inf_VPN15.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN16.cat
|
CatalogFile.NT = inf_VPN16.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN17.cat
|
CatalogFile.NT = inf_VPN17.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN18.cat
|
CatalogFile.NT = inf_VPN18.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN19.cat
|
CatalogFile.NT = inf_VPN19.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN2.cat
|
CatalogFile.NT = inf_VPN2.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN20.cat
|
CatalogFile.NT = inf_VPN20.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN21.cat
|
CatalogFile.NT = inf_VPN21.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN22.cat
|
CatalogFile.NT = inf_VPN22.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN23.cat
|
CatalogFile.NT = inf_VPN23.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN24.cat
|
CatalogFile.NT = inf_VPN24.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN25.cat
|
CatalogFile.NT = inf_VPN25.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN26.cat
|
CatalogFile.NT = inf_VPN26.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN27.cat
|
CatalogFile.NT = inf_VPN27.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN28.cat
|
CatalogFile.NT = inf_VPN28.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN29.cat
|
CatalogFile.NT = inf_VPN29.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN3.cat
|
CatalogFile.NT = inf_VPN3.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN30.cat
|
CatalogFile.NT = inf_VPN30.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN31.cat
|
CatalogFile.NT = inf_VPN31.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN32.cat
|
CatalogFile.NT = inf_VPN32.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN33.cat
|
CatalogFile.NT = inf_VPN33.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN34.cat
|
CatalogFile.NT = inf_VPN34.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN35.cat
|
CatalogFile.NT = inf_VPN35.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN36.cat
|
CatalogFile.NT = inf_VPN36.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN37.cat
|
CatalogFile.NT = inf_VPN37.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN38.cat
|
CatalogFile.NT = inf_VPN38.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN39.cat
|
CatalogFile.NT = inf_VPN39.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN4.cat
|
CatalogFile.NT = inf_VPN4.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN40.cat
|
CatalogFile.NT = inf_VPN40.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN41.cat
|
CatalogFile.NT = inf_VPN41.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN42.cat
|
CatalogFile.NT = inf_VPN42.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN43.cat
|
CatalogFile.NT = inf_VPN43.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN44.cat
|
CatalogFile.NT = inf_VPN44.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN45.cat
|
CatalogFile.NT = inf_VPN45.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN46.cat
|
CatalogFile.NT = inf_VPN46.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN47.cat
|
CatalogFile.NT = inf_VPN47.cat
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
|||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 10/22/2014, 4.11.0.9506
|
DriverVer = 11/17/2014, 4.12.0.9514
|
||||||
|
|
||||||
CatalogFile.NT = inf_VPN48.cat
|
CatalogFile.NT = inf_VPN48.cat
|
||||||
|
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user