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();
|
||||
|
||||
StrCpy(c->OpenVPNDefaultClientOption, sizeof(c->OpenVPNDefaultClientOption), OVPN_DEF_CLIENT_OPTION_STRING);
|
||||
|
||||
#ifdef BETA_NUMBER
|
||||
c->Beta = BETA_NUMBER;
|
||||
#endif // BETA_NUMBER
|
||||
|
@ -135,10 +135,10 @@
|
||||
|
||||
|
||||
// Version number
|
||||
#define CEDAR_VER 411
|
||||
#define CEDAR_VER 412
|
||||
|
||||
// Build Number
|
||||
#define CEDAR_BUILD 9506
|
||||
#define CEDAR_BUILD 9514
|
||||
|
||||
// Beta number
|
||||
//#define BETA_NUMBER 3
|
||||
@ -158,11 +158,11 @@
|
||||
|
||||
// Specifies the build date
|
||||
#define BUILD_DATE_Y 2014
|
||||
#define BUILD_DATE_M 10
|
||||
#define BUILD_DATE_D 22
|
||||
#define BUILD_DATE_HO 19
|
||||
#define BUILD_DATE_MI 51
|
||||
#define BUILD_DATE_SE 55
|
||||
#define BUILD_DATE_M 11
|
||||
#define BUILD_DATE_D 17
|
||||
#define BUILD_DATE_HO 21
|
||||
#define BUILD_DATE_MI 41
|
||||
#define BUILD_DATE_SE 16
|
||||
|
||||
// Tolerable time difference
|
||||
#define ALLOW_TIMESTAMP_DIFF (UINT64)(3 * 24 * 60 * 60 * 1000)
|
||||
@ -1052,6 +1052,7 @@ typedef struct CEDAR
|
||||
LOCK *FifoBudgetLock; // Fifo budget lock
|
||||
UINT FifoBudget; // Fifo budget
|
||||
bool AcceptOnlyTls; // Accept only TLS (Disable SSL)
|
||||
char OpenVPNDefaultClientOption[MAX_SIZE]; // OpenVPN Default Client Option String
|
||||
} CEDAR;
|
||||
|
||||
// Type of CEDAR
|
||||
|
@ -137,6 +137,13 @@ typedef struct AUTHRADIUS AUTHRADIUS;
|
||||
typedef struct AUTHNT AUTHNT;
|
||||
|
||||
|
||||
// ==============================================================
|
||||
// RADIUS
|
||||
// ==============================================================
|
||||
|
||||
typedef struct RADIUS_LOGIN_OPTION RADIUS_LOGIN_OPTION;
|
||||
|
||||
|
||||
// ==============================================================
|
||||
// Listener
|
||||
// ==============================================================
|
||||
|
@ -597,6 +597,7 @@ void DataToHubOptionStruct(HUB_OPTION *o, RPC_ADMIN_OPTION *ao)
|
||||
GetHubAdminOptionDataAndSet(ao, "DropArpInPrivacyFilterMode", &o->DropArpInPrivacyFilterMode);
|
||||
GetHubAdminOptionDataAndSet(ao, "SuppressClientUpdateNotification", &o->SuppressClientUpdateNotification);
|
||||
GetHubAdminOptionDataAndSet(ao, "FloodingSendQueueBufferQuota", &o->FloodingSendQueueBufferQuota);
|
||||
GetHubAdminOptionDataAndSet(ao, "AssignVLanIdByRadiusAttribute", &o->AssignVLanIdByRadiusAttribute);
|
||||
}
|
||||
|
||||
// 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("SuppressClientUpdateNotification", o->SuppressClientUpdateNotification));
|
||||
Add(aol, NewAdminOption("FloodingSendQueueBufferQuota", o->FloodingSendQueueBufferQuota));
|
||||
Add(aol, NewAdminOption("AssignVLanIdByRadiusAttribute", o->AssignVLanIdByRadiusAttribute));
|
||||
|
||||
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 SuppressClientUpdateNotification; // Suppress the update notification function on the VPN Client
|
||||
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
|
||||
|
@ -766,6 +766,7 @@ void OvsSetupSessionParameters(OPENVPN_SERVER *s, OPENVPN_SESSION *se, OPENVPN_C
|
||||
{
|
||||
LIST *o;
|
||||
BUF *b;
|
||||
char opt_str[MAX_SIZE];
|
||||
// Validate arguments
|
||||
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);
|
||||
|
||||
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)
|
||||
{
|
||||
|
@ -311,6 +311,9 @@ struct OPENVPN_SERVER_UDP
|
||||
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
|
||||
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));
|
||||
|
||||
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;
|
||||
IPV4_SET_VERSION(ip, 4);
|
||||
|
@ -842,24 +842,24 @@ void GenerateMachineUniqueHash(void *data)
|
||||
{
|
||||
BUF *b;
|
||||
char name[64];
|
||||
char ip_str[64];
|
||||
IP ip;
|
||||
OS_INFO *osinfo;
|
||||
UINT64 iphash = 0;
|
||||
// Validate arguments
|
||||
if (data == NULL)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
iphash = GetHostIPAddressListHash();
|
||||
|
||||
b = NewBuf();
|
||||
GetMachineName(name, sizeof(name));
|
||||
GetMachineIp(&ip);
|
||||
IPToStr(ip_str, sizeof(ip_str), &ip);
|
||||
|
||||
osinfo = GetOsInfo();
|
||||
|
||||
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->KernelName, StrLen(osinfo->KernelName));
|
||||
@ -1265,6 +1265,7 @@ bool ServerAccept(CONNECTION *c)
|
||||
RC4_KEY_PAIR key_pair;
|
||||
UINT authtype;
|
||||
POLICY *policy;
|
||||
UINT assigned_vlan_id = 0;
|
||||
HUB *hub;
|
||||
SESSION *s = NULL;
|
||||
UINT64 user_expires = 0;
|
||||
@ -1330,6 +1331,8 @@ bool ServerAccept(CONNECTION *c)
|
||||
return false;
|
||||
}
|
||||
|
||||
GenerateMachineUniqueHash(unique2);
|
||||
|
||||
Zero(ctoken_hash_str, sizeof(ctoken_hash_str));
|
||||
|
||||
Zero(mschap_v2_server_response_20, sizeof(mschap_v2_server_response_20));
|
||||
@ -1623,6 +1626,8 @@ bool ServerAccept(CONNECTION *c)
|
||||
USER *user;
|
||||
USERGROUP *group;
|
||||
char plain_password[MAX_PASSWORD_LEN + 1];
|
||||
RADIUS_LOGIN_OPTION radius_login_opt;
|
||||
|
||||
if (hub->Halt || hub->Offline)
|
||||
{
|
||||
// HUB is off-line
|
||||
@ -1633,6 +1638,13 @@ bool ServerAccept(CONNECTION *c)
|
||||
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
|
||||
use_encrypt = PackGetInt(p, "use_encrypt") == 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)
|
||||
{
|
||||
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)
|
||||
@ -2028,7 +2040,7 @@ bool ServerAccept(CONNECTION *c)
|
||||
// If there is asterisk user, log on as the user
|
||||
if (b)
|
||||
{
|
||||
auth_ret = SamAuthUserByPlainPassword(c, hub, username, plain_password, true, mschap_v2_server_response_20);
|
||||
auth_ret = SamAuthUserByPlainPassword(c, hub, username, plain_password, true, mschap_v2_server_response_20, &radius_login_opt);
|
||||
if (auth_ret && pol == NULL)
|
||||
{
|
||||
pol = SamGetUserPolicy(hub, "*");
|
||||
@ -2180,6 +2192,12 @@ bool ServerAccept(CONNECTION *c)
|
||||
// Authentication success
|
||||
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)
|
||||
{
|
||||
// Get the policy
|
||||
@ -2468,8 +2486,6 @@ bool ServerAccept(CONNECTION *c)
|
||||
policy->NoRouting = true;
|
||||
}
|
||||
|
||||
GenerateMachineUniqueHash(unique2);
|
||||
|
||||
if (Cmp(unique, unique2, SHA1_SIZE) == 0)
|
||||
{
|
||||
// It's a localhost session
|
||||
@ -2865,6 +2881,18 @@ bool ServerAccept(CONNECTION *c)
|
||||
// Remove the connection from Cedar
|
||||
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
|
||||
StrLower(username);
|
||||
s = NewServerSessionEx(c->Cedar, c, hub, username, policy, c->IsInProc);
|
||||
@ -3050,6 +3078,7 @@ bool ServerAccept(CONNECTION *c)
|
||||
s->QoS = qos;
|
||||
s->NoReconnectToSession = no_reconnect_to_session;
|
||||
|
||||
|
||||
if (policy != NULL)
|
||||
{
|
||||
s->VLanId = policy->VLanId;
|
||||
@ -3245,6 +3274,11 @@ bool ServerAccept(CONNECTION *c)
|
||||
NodeInfoToStr(tmp, sizeof(tmp), &s->NodeInfo);
|
||||
|
||||
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
|
||||
|
@ -114,7 +114,8 @@
|
||||
#include "CedarPch.h"
|
||||
|
||||
// Attempts Radius authentication (with specifying retry interval and multiple server)
|
||||
bool RadiusLogin(CONNECTION *c, char *server, UINT port, UCHAR *secret, UINT secret_size, wchar_t *username, char *password, UINT interval, UCHAR *mschap_v2_server_response_20)
|
||||
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 id;
|
||||
@ -128,6 +129,7 @@ bool RadiusLogin(CONNECTION *c, char *server, UINT port, UCHAR *secret, UINT sec
|
||||
IPC_MSCHAP_V2_AUTHINFO mschap;
|
||||
bool is_mschap;
|
||||
char client_ip_str[MAX_SIZE];
|
||||
RADIUS_LOGIN_OPTION opt_dummy;
|
||||
static UINT packet_id = 0;
|
||||
// Validate arguments
|
||||
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;
|
||||
}
|
||||
|
||||
if (opt == NULL)
|
||||
{
|
||||
Zero(&opt_dummy, sizeof(opt_dummy));
|
||||
|
||||
opt = &opt_dummy;
|
||||
}
|
||||
|
||||
opt->Out_VLanId = 0;
|
||||
|
||||
Zero(client_ip_str, sizeof(client_ip_str));
|
||||
if (c != NULL && c->FirstSock != NULL)
|
||||
{
|
||||
@ -450,6 +461,34 @@ RECV_RETRY:
|
||||
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;
|
||||
}
|
||||
@ -484,6 +523,68 @@ RECV_RETRY:
|
||||
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
|
||||
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_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
|
||||
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 *RadiusCreateUserName(wchar_t *username);
|
||||
BUF *RadiusCreateUserPassword(void *data, UINT size);
|
||||
BUF *RadiusCreateNasId(char *name);
|
||||
void RadiusAddValue(BUF *b, UCHAR t, UINT v, UCHAR vt, void *data, UINT size);
|
||||
LIST *RadiusParseOptions(BUF *b);
|
||||
|
||||
#endif // RADIUS_H
|
||||
|
||||
|
@ -2670,7 +2670,7 @@ void SwDefineTasks(SW *sw, SW_TASK *t, SW_COMPONENT *c)
|
||||
SW_TASK_COPY *vpninstall;
|
||||
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));
|
||||
|
||||
if (x64 == false)
|
||||
|
@ -175,7 +175,7 @@ bool SamAuthUserByAnonymous(HUB *h, char *username)
|
||||
}
|
||||
|
||||
// Plaintext password authentication of user
|
||||
bool SamAuthUserByPlainPassword(CONNECTION *c, HUB *hub, char *username, char *password, bool ast, UCHAR *mschap_v2_server_response_20)
|
||||
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;
|
||||
wchar_t *name = NULL;
|
||||
@ -267,7 +267,7 @@ bool SamAuthUserByPlainPassword(CONNECTION *c, HUB *hub, char *username, char *p
|
||||
// Attempt to login
|
||||
b = RadiusLogin(c, radius_server_addr, radius_server_port,
|
||||
radius_secret, StrLen(radius_secret),
|
||||
name, password, interval, mschap_v2_server_response_20);
|
||||
name, password, interval, mschap_v2_server_response_20, opt);
|
||||
}
|
||||
|
||||
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 SamAuthUserByAnonymous(HUB *h, char *username);
|
||||
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);
|
||||
|
||||
void GenRamdom(void *random);
|
||||
|
@ -260,6 +260,7 @@ UINT SiDebug(SERVER *s, RPC_TEST *ret, UINT i, char *str)
|
||||
{10, "Get VgsMessageDisplayed Flag", "", SiDebugProcGetVgsMessageDisplayedValue},
|
||||
{11, "Set VgsMessageDisplayed Flag", "", SiDebugProcSetVgsMessageDisplayedValue},
|
||||
{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 j;
|
||||
@ -478,6 +479,25 @@ UINT SiDebugProcGetCurrentTcpSendQueueLength(SERVER *s, char *in_str, char *ret_
|
||||
|
||||
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)
|
||||
{
|
||||
// Validate arguments
|
||||
@ -4081,6 +4101,7 @@ void SiLoadHubOptionCfg(FOLDER *f, HUB_OPTION *o)
|
||||
o->DisableCheckMacOnLocalBridge = CfgGetBool(f, "DisableCheckMacOnLocalBridge");
|
||||
o->DisableCorrectIpOffloadChecksum = CfgGetBool(f, "DisableCorrectIpOffloadChecksum");
|
||||
o->SuppressClientUpdateNotification = CfgGetBool(f, "SuppressClientUpdateNotification");
|
||||
o->AssignVLanIdByRadiusAttribute = CfgGetBool(f, "AssignVLanIdByRadiusAttribute");
|
||||
|
||||
// Enabled by default
|
||||
if (CfgIsItem(f, "ManageOnlyPrivateIP"))
|
||||
@ -4156,6 +4177,7 @@ void SiWriteHubOptionCfg(FOLDER *f, HUB_OPTION *o)
|
||||
CfgAddBool(f, "DropBroadcastsInPrivacyFilterMode", o->DropBroadcastsInPrivacyFilterMode);
|
||||
CfgAddBool(f, "DropArpInPrivacyFilterMode", o->DropArpInPrivacyFilterMode);
|
||||
CfgAddBool(f, "SuppressClientUpdateNotification", o->SuppressClientUpdateNotification);
|
||||
CfgAddBool(f, "AssignVLanIdByRadiusAttribute", o->AssignVLanIdByRadiusAttribute);
|
||||
CfgAddBool(f, "NoLookBPDUBridgeId", o->NoLookBPDUBridgeId);
|
||||
CfgAddInt(f, "AdjustTcpMssValue", o->AdjustTcpMssValue);
|
||||
CfgAddBool(f, "DisableAdjustTcpMss", o->DisableAdjustTcpMss);
|
||||
@ -5748,6 +5770,7 @@ void SiLoadServerCfg(SERVER *s, FOLDER *f)
|
||||
bool cluster_allowed = false;
|
||||
UINT num_connections_per_ip = 0;
|
||||
FOLDER *params_folder;
|
||||
UINT i;
|
||||
// Validate arguments
|
||||
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);
|
||||
}
|
||||
|
||||
i = CfgGetInt(f, "MaxConcurrentDnsClientThreads");
|
||||
if (i != 0)
|
||||
{
|
||||
SetGetIpThreadMaxNum(i);
|
||||
}
|
||||
else
|
||||
{
|
||||
SetGetIpThreadMaxNum(DEFAULT_GETIP_THREAD_MAX_NUM);
|
||||
}
|
||||
|
||||
s->DontBackupConfig = CfgGetBool(f, "DontBackupConfig");
|
||||
|
||||
if (CfgIsItem(f, "BackupConfigOnlyWhenModified"))
|
||||
@ -5900,6 +5933,16 @@ void SiLoadServerCfg(SERVER *s, FOLDER *f)
|
||||
// Disable the OpenVPN server function
|
||||
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
|
||||
s->DisableNatTraversal = CfgGetBool(f, "DisableNatTraversal");
|
||||
|
||||
@ -6190,6 +6233,8 @@ void SiWriteServerCfg(FOLDER *f, SERVER *s)
|
||||
return;
|
||||
}
|
||||
|
||||
CfgAddInt(f, "MaxConcurrentDnsClientThreads", GetGetIpThreadMaxNum());
|
||||
|
||||
CfgAddInt(f, "CurrentBuild", s->Cedar->Build);
|
||||
|
||||
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)
|
||||
{
|
||||
// VPN over ICMP
|
||||
@ -7431,6 +7478,7 @@ void SiCalledUpdateHub(SERVER *s, PACK *p)
|
||||
o.DropBroadcastsInPrivacyFilterMode = PackGetBool(p, "DropBroadcastsInPrivacyFilterMode");
|
||||
o.DropArpInPrivacyFilterMode = PackGetBool(p, "DropArpInPrivacyFilterMode");
|
||||
o.SuppressClientUpdateNotification = PackGetBool(p, "SuppressClientUpdateNotification");
|
||||
o.AssignVLanIdByRadiusAttribute = PackGetBool(p, "AssignVLanIdByRadiusAttribute");
|
||||
o.VlanTypeId = PackGetInt(p, "VlanTypeId");
|
||||
if (o.VlanTypeId == 0)
|
||||
{
|
||||
@ -9270,6 +9318,7 @@ void SiPackAddCreateHub(PACK *p, HUB *h)
|
||||
PackAddBool(p, "DropBroadcastsInPrivacyFilterMode", h->Option->DropBroadcastsInPrivacyFilterMode);
|
||||
PackAddBool(p, "DropArpInPrivacyFilterMode", h->Option->DropArpInPrivacyFilterMode);
|
||||
PackAddBool(p, "SuppressClientUpdateNotification", h->Option->SuppressClientUpdateNotification);
|
||||
PackAddBool(p, "AssignVLanIdByRadiusAttribute", h->Option->AssignVLanIdByRadiusAttribute);
|
||||
PackAddInt(p, "ClientMinimumRequiredBuild", h->Option->ClientMinimumRequiredBuild);
|
||||
PackAddBool(p, "FixForDLinkBPDU", h->Option->FixForDLinkBPDU);
|
||||
PackAddBool(p, "BroadcastLimiterStrictMode", h->Option->BroadcastLimiterStrictMode);
|
||||
@ -10811,6 +10860,8 @@ SERVER *SiNewServerEx(bool bridge, bool in_client_inner_server)
|
||||
LISTENER *azure;
|
||||
LISTENER *rudp;
|
||||
|
||||
SetGetIpThreadMaxNum(DEFAULT_GETIP_THREAD_MAX_NUM);
|
||||
|
||||
s = ZeroMalloc(sizeof(SERVER));
|
||||
|
||||
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 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 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);
|
||||
|
||||
|
@ -1034,6 +1034,11 @@ UDP_ACCEL *NewUdpAccel(CEDAR *cedar, IP *ip, bool client_mode, bool random_port,
|
||||
|
||||
a->IsIPv6 = IsIP6(ip);
|
||||
|
||||
if (a->IsIPv6)
|
||||
{
|
||||
a->NoNatT = true;
|
||||
}
|
||||
|
||||
a->RecvBlockQueue = NewQueue();
|
||||
|
||||
Rand(a->NextIv, sizeof(a->NextIv));
|
||||
@ -1088,6 +1093,8 @@ void NatT_GetIpThread(THREAD *thread, void *param)
|
||||
{
|
||||
UDP_ACCEL *a;
|
||||
char hostname[MAX_SIZE];
|
||||
static IP dummy_ip = {0};
|
||||
UINT num_retry = 0;
|
||||
// Validate arguments
|
||||
if (thread == NULL || param == NULL)
|
||||
{
|
||||
@ -1096,11 +1103,17 @@ void NatT_GetIpThread(THREAD *thread, void *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)
|
||||
{
|
||||
IP ip;
|
||||
UINT wait_time = UDP_NAT_T_GET_IP_INTERVAL;
|
||||
|
||||
// Get the IP address
|
||||
bool ret = GetIP4Ex(&ip, hostname, 0, &a->NatT_Halt);
|
||||
@ -1125,7 +1138,11 @@ void NatT_GetIpThread(THREAD *thread, void *param)
|
||||
}
|
||||
|
||||
// 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
|
||||
VERSION 411
|
||||
BUILD_NUMBER 9514
|
||||
VERSION 412
|
||||
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 LIST *host_ip_address_cache = NULL;
|
||||
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";
|
||||
@ -2005,6 +2007,17 @@ bool RUDPIsIpInValidateList(RUDP_STACK *r, IP *ip)
|
||||
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++)
|
||||
{
|
||||
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;
|
||||
char current_hostname[MAX_SIZE];
|
||||
bool last_time_ip_changed = false;
|
||||
UINT num_retry = 0;
|
||||
// Validate arguments
|
||||
if (thread == NULL || param == NULL)
|
||||
{
|
||||
@ -4429,7 +4443,9 @@ void RUDPIpQueryThread(THREAD *thread, void *param)
|
||||
|
||||
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
|
||||
{
|
||||
@ -6730,6 +6746,46 @@ bool IsInSameNetwork4(IP *a1, IP *a2, IP *subnet)
|
||||
|
||||
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
|
||||
bool IsNetworkAddress6(IP *ip, IP *subnet)
|
||||
@ -10926,6 +10982,20 @@ void InitHostCache()
|
||||
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
|
||||
void AddWaitThread(THREAD *t)
|
||||
{
|
||||
@ -16631,6 +16701,8 @@ void GetIP4Ex6ExThread(THREAD *t, void *param)
|
||||
ReleaseGetIPThreadParam(p);
|
||||
|
||||
DelWaitThread(t);
|
||||
|
||||
Dec(getip_thread_counter);
|
||||
}
|
||||
|
||||
// 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;
|
||||
UINT64 start_tick = 0;
|
||||
UINT64 end_tick = 0;
|
||||
UINT64 spent_time = 0;
|
||||
UINT64 now;
|
||||
UINT n;
|
||||
bool use_dns_proxy = false;
|
||||
char hostname[260];
|
||||
UINT i;
|
||||
bool timed_out;
|
||||
// Validate arguments
|
||||
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->Ref = NewRef();
|
||||
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;
|
||||
|
||||
#if 0
|
||||
if (only_direct_dns == false)
|
||||
{
|
||||
if (ipv6)
|
||||
@ -16802,6 +16962,7 @@ bool GetIP4Ex6Ex2(IP *ip, char *hostname_arg, UINT timeout, bool ipv6, bool *can
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
if (QueryDnsCache(&ip2, hostname))
|
||||
{
|
||||
@ -17457,6 +17618,27 @@ void FreeSSLCtx(struct ssl_ctx_st *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
|
||||
void InitNetwork()
|
||||
{
|
||||
@ -17471,6 +17653,8 @@ void InitNetwork()
|
||||
|
||||
num_tcp_connections = NewCounter();
|
||||
|
||||
getip_thread_counter = NewCounter();
|
||||
|
||||
// Initialization of client list
|
||||
InitIpClientList();
|
||||
|
||||
@ -17515,6 +17699,8 @@ void InitNetwork()
|
||||
dh_1024 = DhNewGroup2();
|
||||
|
||||
Zero(rand_port_numbers, sizeof(rand_port_numbers));
|
||||
|
||||
SetGetIpThreadMaxNum(DEFAULT_GETIP_THREAD_MAX_NUM);
|
||||
}
|
||||
|
||||
// Enable the network name cache
|
||||
@ -17770,6 +17956,45 @@ void FreePrivateIPFile()
|
||||
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
|
||||
void GetCurrentGlobalIPGuess(IP *ip, bool ipv6)
|
||||
{
|
||||
@ -17950,6 +18175,9 @@ void FreeNetwork()
|
||||
|
||||
FreeDynList();
|
||||
|
||||
DeleteCounter(getip_thread_counter);
|
||||
getip_thread_counter = NULL;
|
||||
|
||||
}
|
||||
|
||||
// Add a socket to socket list
|
||||
@ -19114,6 +19342,46 @@ int CmpIpAddressList(void *p1, void *p2)
|
||||
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)
|
||||
LIST *GetHostIPAddressList()
|
||||
{
|
||||
|
@ -147,6 +147,13 @@ struct DYN_VALUE
|
||||
|
||||
#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
|
||||
//#define ENABLE_SSL_LOGGING
|
||||
#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
|
||||
#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)
|
||||
|
||||
// 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 DebugPrintRouteTable(ROUTE_TABLE *r);
|
||||
bool IsIPv6LocalNetworkAddress(IP *ip);
|
||||
UINT GetNumWaitThread();
|
||||
|
||||
#ifdef ENABLE_SSL_LOGGING
|
||||
void SockEnableSslLogging(SOCK *s);
|
||||
@ -1484,6 +1493,8 @@ void IPNot4(IP *dst, IP *a);
|
||||
void IPOr4(IP *dst, IP *a, IP *b);
|
||||
void IPAnd4(IP *dst, IP *a, IP *b);
|
||||
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 ParseIpAndSubnetMask6(char *src, IP *ip, IP *mask);
|
||||
@ -1539,6 +1550,7 @@ bool IsMyIPAddress(IP *ip);
|
||||
void FreeHostIPAddressList(LIST *o);
|
||||
void AddHostIPAddressToList(LIST *o, IP *ip);
|
||||
int CmpIpAddressList(void *p1, void *p2);
|
||||
UINT64 GetHostIPAddressListHash();
|
||||
|
||||
UDPLISTENER *NewUdpListener(UDPLISTENER_RECV_PROC *recv_proc, 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);
|
||||
bool GetCurrentGlobalIP(IP *ip, bool ipv6);
|
||||
void GetCurrentGlobalIPGuess(IP *ip, bool ipv6);
|
||||
bool IsIPAddressInSameLocalNetwork(IP *a);
|
||||
|
||||
bool IsIPPrivate(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);
|
||||
void FreeQueryIpThread(QUERYIPTHREAD *t);
|
||||
|
||||
void SetGetIpThreadMaxNum(UINT num);
|
||||
UINT GetGetIpThreadMaxNum();
|
||||
UINT GetCurrentGetIpThreadNum();
|
||||
|
||||
|
||||
|
||||
bool IsIpInStrList(IP *ip, char *ip_list);
|
||||
bool IsInStrByStrList(char *str, char *str_list);
|
||||
|
@ -3304,11 +3304,44 @@ BUF *BuildDhcpOptionsBuf(LIST *o)
|
||||
for (i = 0;i < LIST_NUM(o);i++)
|
||||
{
|
||||
DHCP_OPTION *d = LIST_DATA(o, i);
|
||||
UINT current_size = d->Size;
|
||||
UINT current_pos = 0;
|
||||
|
||||
id = (UCHAR)d->Id;
|
||||
if (d->Size <= 255)
|
||||
{
|
||||
sz = (UCHAR)d->Size;
|
||||
}
|
||||
else
|
||||
{
|
||||
sz = 0xFF;
|
||||
}
|
||||
WriteBuf(b, &id, 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;
|
||||
@ -3754,8 +3787,6 @@ BUF *DhcpBuildClasslessRouteData(DHCP_CLASSLESS_ROUTE_TABLE *t)
|
||||
DHCP_CLASSLESS_ROUTE *r = &t->Entries[i];
|
||||
|
||||
if (r->Exists && r->SubnetMaskLen <= 32)
|
||||
{
|
||||
if (b->Size <= (255 - 9))
|
||||
{
|
||||
UCHAR c;
|
||||
UINT data_len;
|
||||
@ -3777,7 +3808,6 @@ BUF *DhcpBuildClasslessRouteData(DHCP_CLASSLESS_ROUTE_TABLE *t)
|
||||
WriteBuf(b, &ip32, sizeof(UINT));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
SeekBufToBegin(b);
|
||||
|
||||
@ -3965,6 +3995,7 @@ LIST *ParseDhcpOptions(void *data, UINT size)
|
||||
{
|
||||
BUF *b;
|
||||
LIST *o;
|
||||
DHCP_OPTION *last_opt;
|
||||
// Validate arguments
|
||||
if (data == NULL)
|
||||
{
|
||||
@ -3977,6 +4008,8 @@ LIST *ParseDhcpOptions(void *data, UINT size)
|
||||
|
||||
o = NewListFast(NULL);
|
||||
|
||||
last_opt = NULL;
|
||||
|
||||
while (true)
|
||||
{
|
||||
UCHAR c = 0;
|
||||
@ -3995,12 +4028,27 @@ LIST *ParseDhcpOptions(void *data, UINT size)
|
||||
break;
|
||||
}
|
||||
|
||||
if (c == DHCP_ID_PRIVATE && last_opt != NULL)
|
||||
{
|
||||
UINT new_size = last_opt->Size + (UINT)sz;
|
||||
UCHAR *new_buf = ZeroMalloc(new_size);
|
||||
Copy(new_buf, last_opt->Data, last_opt->Size);
|
||||
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);
|
||||
|
@ -625,6 +625,7 @@ struct ICMPV6_HEADER_INFO
|
||||
#define DHCP_ID_REQ_PARAM_LIST 0x37
|
||||
#define DHCP_ID_CLASSLESS_ROUTE 0x79
|
||||
#define DHCP_ID_MS_CLASSLESS_ROUTE 0xF9
|
||||
#define DHCP_ID_PRIVATE 0xFA
|
||||
|
||||
|
||||
// DHCP client action
|
||||
|
Binary file not shown.
Binary file not shown.
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = NetTrans
|
||||
ClassGUID = {4D36E975-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
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
|
||||
ClassGUID = {4D36E975-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
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
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN10.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN100.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN101.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN102.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN103.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN104.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN105.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN106.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN107.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN108.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN109.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN11.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN110.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN111.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN112.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN113.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN114.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN115.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN116.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN117.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN118.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN119.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN12.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN120.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN121.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN122.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN123.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN124.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN125.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN126.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN127.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN13.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN14.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN15.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN16.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN17.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN18.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN19.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN2.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN20.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN21.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN22.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN23.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN24.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN25.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN26.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN27.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN28.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN29.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN3.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN30.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN31.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN32.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN33.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN34.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN35.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN36.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN37.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN38.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN39.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN4.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN40.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN41.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN42.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN43.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN44.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN45.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN46.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
CatalogFile.NT = inf_VPN47.cat
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signature = "$Windows NT$"
|
||||
Class = Net
|
||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||
Provider = %CompanyName%
|
||||
DriverVer = 10/22/2014, 4.11.0.9506
|
||||
DriverVer = 11/17/2014, 4.12.0.9514
|
||||
|
||||
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