mirror of
https://github.com/SoftEtherVPN/SoftEtherVPN.git
synced 2025-07-07 08:14:58 +03:00
v4.10-9505-beta
This commit is contained in:
@ -118,11 +118,15 @@ static LOCK *server_lock = NULL;
|
||||
char *SERVER_CONFIG_FILE_NAME = "@vpn_server.config";
|
||||
char *SERVER_CONFIG_FILE_NAME_IN_CLIENT = "@vpn_gate_svc.config";
|
||||
char *BRIDGE_CONFIG_FILE_NAME = "@vpn_bridge.config";
|
||||
char *SERVER_CONFIG_TEMPLATE_NAME = "@vpn_server_template.config";
|
||||
char *BRIDGE_CONFIG_TEMPLATE_NAME = "@vpn_server_template.config";
|
||||
|
||||
static bool server_reset_setting = false;
|
||||
|
||||
static volatile UINT global_server_flags[NUM_GLOBAL_SERVER_FLAGS] = {0};
|
||||
|
||||
UINT vpn_global_parameters[NUM_GLOBAL_PARAMS] = {0};
|
||||
|
||||
// Set the OpenVPN and SSTP setting
|
||||
void SiSetOpenVPNAndSSTPConfig(SERVER *s, OPENVPN_SSTP_CONFIG *c)
|
||||
{
|
||||
@ -255,6 +259,7 @@ UINT SiDebug(SERVER *s, RPC_TEST *ret, UINT i, char *str)
|
||||
{9, "Set IPsecMessageDisplayed Flag", "", SiDebugProcSetIPsecMessageDisplayedValue},
|
||||
{10, "Get VgsMessageDisplayed Flag", "", SiDebugProcGetVgsMessageDisplayedValue},
|
||||
{11, "Set VgsMessageDisplayed Flag", "", SiDebugProcSetVgsMessageDisplayedValue},
|
||||
{12, "Get the current TCP send queue length", "", SiDebugProcGetCurrentTcpSendQueueLength},
|
||||
};
|
||||
UINT num_proc_list = sizeof(proc_list) / sizeof(proc_list[0]);
|
||||
UINT j;
|
||||
@ -452,6 +457,27 @@ UINT SiDebugProcGetVgsMessageDisplayedValue(SERVER *s, char *in_str, char *ret_s
|
||||
|
||||
return ERR_NO_ERROR;
|
||||
}
|
||||
UINT SiDebugProcGetCurrentTcpSendQueueLength(SERVER *s, char *in_str, char *ret_str, UINT ret_str_size)
|
||||
{
|
||||
char tmp1[64], tmp2[64], tmp3[64];
|
||||
// Validate arguments
|
||||
if (s == NULL || in_str == NULL || ret_str == NULL)
|
||||
{
|
||||
return ERR_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
ToStr3(tmp1, 0, CedarGetCurrentTcpQueueSize(s->Cedar));
|
||||
ToStr3(tmp2, 0, CedarGetQueueBudgetConsuming(s->Cedar));
|
||||
ToStr3(tmp3, 0, CedarGetFifoBudgetConsuming(s->Cedar));
|
||||
|
||||
Format(ret_str, 0,
|
||||
"CurrentTcpQueueSize = %s\n"
|
||||
"QueueBudgetConsuming = %s\n"
|
||||
"FifoBudgetConsuming = %s\n",
|
||||
tmp1, tmp2, tmp3);
|
||||
|
||||
return ERR_NO_ERROR;
|
||||
}
|
||||
UINT SiDebugProcSetVgsMessageDisplayedValue(SERVER *s, char *in_str, char *ret_str, UINT ret_str_size)
|
||||
{
|
||||
// Validate arguments
|
||||
@ -491,6 +517,7 @@ void SiCheckDeadLockMain(SERVER *s, UINT timeout)
|
||||
|
||||
//Debug("SiCheckDeadLockMain Start.\n");
|
||||
|
||||
|
||||
cedar = s->Cedar;
|
||||
|
||||
if (s->ServerListenerList != NULL)
|
||||
@ -2440,6 +2467,7 @@ void SiSetDefaultHubOption(HUB_OPTION *o)
|
||||
o->NoDhcpPacketLogOutsideHub = true;
|
||||
o->AccessListIncludeFileCacheLifetime = ACCESS_LIST_INCLUDE_FILE_CACHE_LIFETIME;
|
||||
o->RemoveDefGwOnDhcpForLocalhost = true;
|
||||
o->FloodingSendQueueBufferQuota = DEFAULT_FLOODING_QUEUE_LENGTH;
|
||||
}
|
||||
|
||||
// Create a default virtual HUB
|
||||
@ -2534,6 +2562,8 @@ void SiLoadInitialConfiguration(SERVER *s)
|
||||
|
||||
s->Weight = FARM_DEFAULT_WEIGHT;
|
||||
|
||||
SiLoadGlobalParamsCfg(NULL);
|
||||
|
||||
// KEEP related
|
||||
Zero(&k, sizeof(k));
|
||||
|
||||
@ -2676,8 +2706,9 @@ bool SiLoadConfigurationFile(SERVER *s)
|
||||
}
|
||||
|
||||
|
||||
s->CfgRw = NewCfgRw(&root,
|
||||
s->Cedar->Bridge == false ? server_config_filename : BRIDGE_CONFIG_FILE_NAME);
|
||||
s->CfgRw = NewCfgRwEx2A(&root,
|
||||
s->Cedar->Bridge == false ? server_config_filename : BRIDGE_CONFIG_FILE_NAME, false,
|
||||
s->Cedar->Bridge == false ? SERVER_CONFIG_TEMPLATE_NAME : BRIDGE_CONFIG_TEMPLATE_NAME);
|
||||
|
||||
if (server_reset_setting)
|
||||
{
|
||||
@ -2731,6 +2762,8 @@ void SiInitConfiguration(SERVER *s)
|
||||
SLog(s->Cedar, "LS_LOAD_CONFIG_3");
|
||||
SiLoadInitialConfiguration(s);
|
||||
|
||||
SetFifoCurrentReallocMemSize(MEM_FIFO_REALLOC_MEM_SIZE);
|
||||
|
||||
server_reset_setting = false;
|
||||
}
|
||||
else
|
||||
@ -3155,6 +3188,10 @@ void SiWriteLocalBridges(FOLDER *f, SERVER *s)
|
||||
CfgAddBool(f, "EnableSoftEtherKernelModeDriver", Win32GetEnableSeLow());
|
||||
#endif // OS_WIN32
|
||||
|
||||
#ifdef UNIX_LINUX
|
||||
CfgAddBool(f, "DoNotDisableOffloading", GetGlobalServerFlag(GSF_LOCALBRIDGE_NO_DISABLE_OFFLOAD));
|
||||
#endif // UNIX_LINUX
|
||||
|
||||
LockList(s->Cedar->LocalBridgeList);
|
||||
{
|
||||
UINT i;
|
||||
@ -3234,6 +3271,10 @@ void SiLoadLocalBridges(SERVER *s, FOLDER *f)
|
||||
Win32EthSetShowAllIf(CfgGetBool(f, "ShowAllInterfaces"));
|
||||
#endif // OS_WIN32
|
||||
|
||||
#ifdef UNIX_LINUX
|
||||
SetGlobalServerFlag(GSF_LOCALBRIDGE_NO_DISABLE_OFFLOAD, CfgGetBool(f, "DoNotDisableOffloading"));
|
||||
#endif // UNIX_LINUX
|
||||
|
||||
t = CfgEnumFolderToTokenList(f);
|
||||
|
||||
for (i = 0;i < t->NumTokens;i++)
|
||||
@ -3972,6 +4013,14 @@ void SiLoadHubOptionCfg(FOLDER *f, HUB_OPTION *o)
|
||||
o->FixForDLinkBPDU = CfgGetBool(f, "FixForDLinkBPDU");
|
||||
o->BroadcastLimiterStrictMode = CfgGetBool(f, "BroadcastLimiterStrictMode");
|
||||
o->MaxLoggedPacketsPerMinute = CfgGetInt(f, "MaxLoggedPacketsPerMinute");
|
||||
if (CfgIsItem(f, "FloodingSendQueueBufferQuota"))
|
||||
{
|
||||
o->FloodingSendQueueBufferQuota = CfgGetInt(f, "FloodingSendQueueBufferQuota");
|
||||
}
|
||||
else
|
||||
{
|
||||
o->FloodingSendQueueBufferQuota = DEFAULT_FLOODING_QUEUE_LENGTH;
|
||||
}
|
||||
o->DoNotSaveHeavySecurityLogs = CfgGetBool(f, "DoNotSaveHeavySecurityLogs");
|
||||
|
||||
if (CfgIsItem(f, "DropBroadcastsInPrivacyFilterMode"))
|
||||
@ -4102,6 +4151,7 @@ void SiWriteHubOptionCfg(FOLDER *f, HUB_OPTION *o)
|
||||
}
|
||||
CfgAddBool(f, "BroadcastLimiterStrictMode", o->BroadcastLimiterStrictMode);
|
||||
CfgAddInt(f, "MaxLoggedPacketsPerMinute", o->MaxLoggedPacketsPerMinute);
|
||||
CfgAddInt(f, "FloodingSendQueueBufferQuota", o->FloodingSendQueueBufferQuota);
|
||||
CfgAddBool(f, "DoNotSaveHeavySecurityLogs", o->DoNotSaveHeavySecurityLogs);
|
||||
CfgAddBool(f, "DropBroadcastsInPrivacyFilterMode", o->DropBroadcastsInPrivacyFilterMode);
|
||||
CfgAddBool(f, "DropArpInPrivacyFilterMode", o->DropArpInPrivacyFilterMode);
|
||||
@ -5697,6 +5747,7 @@ void SiLoadServerCfg(SERVER *s, FOLDER *f)
|
||||
K *k = NULL;
|
||||
bool cluster_allowed = false;
|
||||
UINT num_connections_per_ip = 0;
|
||||
FOLDER *params_folder;
|
||||
// Validate arguments
|
||||
if (s == NULL || f == NULL)
|
||||
{
|
||||
@ -5725,6 +5776,19 @@ void SiLoadServerCfg(SERVER *s, FOLDER *f)
|
||||
s->BackupConfigOnlyWhenModified = true;
|
||||
}
|
||||
|
||||
// Server log switch type
|
||||
if (CfgIsItem(f, "ServerLogSwitchType"))
|
||||
{
|
||||
UINT st = CfgGetInt(f, "ServerLogSwitchType");
|
||||
|
||||
SetLogSwitchType(s->Logger, st);
|
||||
}
|
||||
|
||||
SetMaxLogSize(CfgGetInt64(f, "LoggerMaxLogSize"));
|
||||
|
||||
params_folder = CfgGetFolder(f, "GlobalParams");
|
||||
SiLoadGlobalParamsCfg(params_folder);
|
||||
|
||||
c = s->Cedar;
|
||||
Lock(c->lock);
|
||||
{
|
||||
@ -5805,6 +5869,7 @@ void SiLoadServerCfg(SERVER *s, FOLDER *f)
|
||||
s->DisableDeadLockCheck = CfgGetBool(f, "DisableDeadLockCheck");
|
||||
|
||||
// Eraser
|
||||
SetEraserCheckInterval(CfgGetInt(f, "AutoDeleteCheckIntervalSecs"));
|
||||
s->Eraser = NewEraser(s->Logger, CfgGetInt64(f, "AutoDeleteCheckDiskFreeSpaceMin"));
|
||||
|
||||
// WebUI
|
||||
@ -6015,8 +6080,99 @@ void SiLoadServerCfg(SERVER *s, FOLDER *f)
|
||||
|
||||
// Configuration of VPN Azure Client
|
||||
s->EnableVpnAzure = CfgGetBool(f, "EnableVpnAzure");
|
||||
|
||||
// Disable GetHostName when accepting TCP
|
||||
s->DisableGetHostNameWhenAcceptTcp = CfgGetBool(f, "DisableGetHostNameWhenAcceptTcp");
|
||||
|
||||
if (s->DisableGetHostNameWhenAcceptTcp)
|
||||
{
|
||||
DisableGetHostNameWhenAcceptInit();
|
||||
}
|
||||
|
||||
// Disable core dump on UNIX
|
||||
s->DisableCoreDumpOnUnix = CfgGetBool(f, "DisableCoreDumpOnUnix");
|
||||
|
||||
// Disable session reconnect
|
||||
SetGlobalServerFlag(GSF_DISABLE_SESSION_RECONNECT, CfgGetBool(f, "DisableSessionReconnect"));
|
||||
}
|
||||
Unlock(c->lock);
|
||||
|
||||
#ifdef OS_UNIX
|
||||
if (s->DisableCoreDumpOnUnix)
|
||||
{
|
||||
UnixDisableCoreDump();
|
||||
}
|
||||
#endif // OS_UNIX
|
||||
}
|
||||
|
||||
// Load global params
|
||||
void SiLoadGlobalParamsCfg(FOLDER *f)
|
||||
{
|
||||
SiLoadGlobalParamItem(GP_MAX_SEND_SOCKET_QUEUE_SIZE, CfgGetInt(f, "MAX_SEND_SOCKET_QUEUE_SIZE"));
|
||||
SiLoadGlobalParamItem(GP_MIN_SEND_SOCKET_QUEUE_SIZE, CfgGetInt(f, "MIN_SEND_SOCKET_QUEUE_SIZE"));
|
||||
SiLoadGlobalParamItem(GP_MAX_SEND_SOCKET_QUEUE_NUM, CfgGetInt(f, "MAX_SEND_SOCKET_QUEUE_NUM"));
|
||||
SiLoadGlobalParamItem(GP_SELECT_TIME, CfgGetInt(f, "SELECT_TIME"));
|
||||
SiLoadGlobalParamItem(GP_SELECT_TIME_FOR_NAT, CfgGetInt(f, "SELECT_TIME_FOR_NAT"));
|
||||
SiLoadGlobalParamItem(GP_MAX_STORED_QUEUE_NUM, CfgGetInt(f, "MAX_STORED_QUEUE_NUM"));
|
||||
SiLoadGlobalParamItem(GP_MAX_BUFFERING_PACKET_SIZE, CfgGetInt(f, "MAX_BUFFERING_PACKET_SIZE"));
|
||||
SiLoadGlobalParamItem(GP_HUB_ARP_SEND_INTERVAL, CfgGetInt(f, "HUB_ARP_SEND_INTERVAL"));
|
||||
SiLoadGlobalParamItem(GP_MAC_TABLE_EXPIRE_TIME, CfgGetInt(f, "MAC_TABLE_EXPIRE_TIME"));
|
||||
SiLoadGlobalParamItem(GP_IP_TABLE_EXPIRE_TIME, CfgGetInt(f, "IP_TABLE_EXPIRE_TIME"));
|
||||
SiLoadGlobalParamItem(GP_IP_TABLE_EXPIRE_TIME_DHCP, CfgGetInt(f, "IP_TABLE_EXPIRE_TIME_DHCP"));
|
||||
SiLoadGlobalParamItem(GP_STORM_CHECK_SPAN, CfgGetInt(f, "STORM_CHECK_SPAN"));
|
||||
SiLoadGlobalParamItem(GP_STORM_DISCARD_VALUE_START, CfgGetInt(f, "STORM_DISCARD_VALUE_START"));
|
||||
SiLoadGlobalParamItem(GP_STORM_DISCARD_VALUE_END, CfgGetInt(f, "STORM_DISCARD_VALUE_END"));
|
||||
SiLoadGlobalParamItem(GP_MAX_MAC_TABLES, CfgGetInt(f, "MAX_MAC_TABLES"));
|
||||
SiLoadGlobalParamItem(GP_MAX_IP_TABLES, CfgGetInt(f, "MAX_IP_TABLES"));
|
||||
SiLoadGlobalParamItem(GP_MAX_HUB_LINKS, CfgGetInt(f, "MAX_HUB_LINKS"));
|
||||
SiLoadGlobalParamItem(GP_MEM_FIFO_REALLOC_MEM_SIZE, CfgGetInt(f, "MEM_FIFO_REALLOC_MEM_SIZE"));
|
||||
SiLoadGlobalParamItem(GP_QUEUE_BUDGET, CfgGetInt(f, "QUEUE_BUDGET"));
|
||||
SiLoadGlobalParamItem(GP_FIFO_BUDGET, CfgGetInt(f, "FIFO_BUDGET"));
|
||||
|
||||
SetFifoCurrentReallocMemSize(MEM_FIFO_REALLOC_MEM_SIZE);
|
||||
}
|
||||
|
||||
// Load global param itesm
|
||||
void SiLoadGlobalParamItem(UINT id, UINT value)
|
||||
{
|
||||
// Validate arguments
|
||||
if (id == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
vpn_global_parameters[id] = value;
|
||||
}
|
||||
|
||||
// Write global params
|
||||
void SiWriteGlobalParamsCfg(FOLDER *f)
|
||||
{
|
||||
// Validate arguments
|
||||
if (f == NULL)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
CfgAddInt(f, "MAX_SEND_SOCKET_QUEUE_SIZE", MAX_SEND_SOCKET_QUEUE_SIZE);
|
||||
CfgAddInt(f, "MIN_SEND_SOCKET_QUEUE_SIZE", MIN_SEND_SOCKET_QUEUE_SIZE);
|
||||
CfgAddInt(f, "MAX_SEND_SOCKET_QUEUE_NUM", MAX_SEND_SOCKET_QUEUE_NUM);
|
||||
CfgAddInt(f, "SELECT_TIME", SELECT_TIME);
|
||||
CfgAddInt(f, "SELECT_TIME_FOR_NAT", SELECT_TIME_FOR_NAT);
|
||||
CfgAddInt(f, "MAX_STORED_QUEUE_NUM", MAX_STORED_QUEUE_NUM);
|
||||
CfgAddInt(f, "MAX_BUFFERING_PACKET_SIZE", MAX_BUFFERING_PACKET_SIZE);
|
||||
CfgAddInt(f, "HUB_ARP_SEND_INTERVAL", HUB_ARP_SEND_INTERVAL);
|
||||
CfgAddInt(f, "MAC_TABLE_EXPIRE_TIME", MAC_TABLE_EXPIRE_TIME);
|
||||
CfgAddInt(f, "IP_TABLE_EXPIRE_TIME", IP_TABLE_EXPIRE_TIME);
|
||||
CfgAddInt(f, "IP_TABLE_EXPIRE_TIME_DHCP", IP_TABLE_EXPIRE_TIME_DHCP);
|
||||
CfgAddInt(f, "STORM_CHECK_SPAN", STORM_CHECK_SPAN);
|
||||
CfgAddInt(f, "STORM_DISCARD_VALUE_START", STORM_DISCARD_VALUE_START);
|
||||
CfgAddInt(f, "STORM_DISCARD_VALUE_END", STORM_DISCARD_VALUE_END);
|
||||
CfgAddInt(f, "MAX_MAC_TABLES", MAX_MAC_TABLES);
|
||||
CfgAddInt(f, "MAX_IP_TABLES", MAX_IP_TABLES);
|
||||
CfgAddInt(f, "MAX_HUB_LINKS", MAX_HUB_LINKS);
|
||||
CfgAddInt(f, "MEM_FIFO_REALLOC_MEM_SIZE", MEM_FIFO_REALLOC_MEM_SIZE);
|
||||
CfgAddInt(f, "QUEUE_BUDGET", QUEUE_BUDGET);
|
||||
CfgAddInt(f, "FIFO_BUDGET", FIFO_BUDGET);
|
||||
}
|
||||
|
||||
// Write the server-specific settings
|
||||
@ -6024,6 +6180,7 @@ void SiWriteServerCfg(FOLDER *f, SERVER *s)
|
||||
{
|
||||
BUF *b;
|
||||
CEDAR *c;
|
||||
FOLDER *params_folder;
|
||||
// Validate arguments
|
||||
if (f == NULL || s == NULL)
|
||||
{
|
||||
@ -6037,6 +6194,20 @@ void SiWriteServerCfg(FOLDER *f, SERVER *s)
|
||||
CfgAddBool(f, "DontBackupConfig", s->DontBackupConfig);
|
||||
CfgAddBool(f, "BackupConfigOnlyWhenModified", s->BackupConfigOnlyWhenModified);
|
||||
|
||||
if (s->Logger != NULL)
|
||||
{
|
||||
CfgAddInt(f, "ServerLogSwitchType", s->Logger->SwitchType);
|
||||
}
|
||||
|
||||
CfgAddInt64(f, "LoggerMaxLogSize", GetMaxLogSize());
|
||||
|
||||
params_folder = CfgCreateFolder(f, "GlobalParams");
|
||||
|
||||
if (params_folder != NULL)
|
||||
{
|
||||
SiWriteGlobalParamsCfg(params_folder);
|
||||
}
|
||||
|
||||
c = s->Cedar;
|
||||
|
||||
Lock(c->lock);
|
||||
@ -6084,6 +6255,7 @@ void SiWriteServerCfg(FOLDER *f, SERVER *s)
|
||||
|
||||
// Eraser related
|
||||
CfgAddInt64(f, "AutoDeleteCheckDiskFreeSpaceMin", s->Eraser->MinFreeSpace);
|
||||
CfgAddInt(f, "AutoDeleteCheckIntervalSecs", GetEraserCheckInterval());
|
||||
|
||||
// WebUI
|
||||
CfgAddBool(f, "UseWebUI", s->UseWebUI);
|
||||
@ -6222,6 +6394,12 @@ void SiWriteServerCfg(FOLDER *f, SERVER *s)
|
||||
{
|
||||
CfgAddBool(f, "EnableVpnAzure", s->EnableVpnAzure);
|
||||
}
|
||||
|
||||
CfgAddBool(f, "DisableGetHostNameWhenAcceptTcp", s->DisableGetHostNameWhenAcceptTcp);
|
||||
CfgAddBool(f, "DisableCoreDumpOnUnix", s->DisableCoreDumpOnUnix);
|
||||
|
||||
// Disable session reconnect
|
||||
CfgAddBool(f, "DisableSessionReconnect", GetGlobalServerFlag(GSF_DISABLE_SESSION_RECONNECT));
|
||||
}
|
||||
Unlock(c->lock);
|
||||
}
|
||||
@ -7115,7 +7293,7 @@ void SiCalledEnumHub(SERVER *s, PACK *p, PACK *req)
|
||||
PackAddIntEx(p, "NumSessionsClient", Count(h->NumSessionsClient), i, num);
|
||||
PackAddIntEx(p, "NumSessionsBridge", Count(h->NumSessionsBridge), i, num);
|
||||
|
||||
PackAddIntEx(p, "NumMacTables", LIST_NUM(h->MacTable), i, num);
|
||||
PackAddIntEx(p, "NumMacTables", HASH_LIST_NUM(h->MacHashTable), i, num);
|
||||
|
||||
PackAddIntEx(p, "NumIpTables", LIST_NUM(h->IpTable), i, num);
|
||||
|
||||
@ -7243,6 +7421,7 @@ void SiCalledUpdateHub(SERVER *s, PACK *p)
|
||||
o.NoLookBPDUBridgeId = PackGetBool(p, "NoLookBPDUBridgeId");
|
||||
o.NoManageVlanId = PackGetBool(p, "NoManageVlanId");
|
||||
o.MaxLoggedPacketsPerMinute = PackGetInt(p, "MaxLoggedPacketsPerMinute");
|
||||
o.FloodingSendQueueBufferQuota = PackGetInt(p, "FloodingSendQueueBufferQuota");
|
||||
o.DoNotSaveHeavySecurityLogs = PackGetBool(p, "DoNotSaveHeavySecurityLogs");
|
||||
o.DropBroadcastsInPrivacyFilterMode = PackGetBool(p, "DropBroadcastsInPrivacyFilterMode");
|
||||
o.DropArpInPrivacyFilterMode = PackGetBool(p, "DropArpInPrivacyFilterMode");
|
||||
@ -7464,16 +7643,13 @@ void SiCalledDeleteMacTable(SERVER *s, PACK *p)
|
||||
return;
|
||||
}
|
||||
|
||||
LockList(h->MacTable);
|
||||
LockHashList(h->MacHashTable);
|
||||
{
|
||||
if (IsInList(h->MacTable, (void *)key))
|
||||
{
|
||||
MAC_TABLE_ENTRY *e = (MAC_TABLE_ENTRY *)key;
|
||||
Delete(h->MacTable, e);
|
||||
Free(e);
|
||||
}
|
||||
MAC_TABLE_ENTRY *e = HashListKeyToPointer(h->MacHashTable, key);
|
||||
DeleteHash(h->MacHashTable, e);
|
||||
Free(e);
|
||||
}
|
||||
UnlockList(h->MacTable);
|
||||
UnlockHashList(h->MacHashTable);
|
||||
|
||||
ReleaseHub(h);
|
||||
}
|
||||
@ -8316,11 +8492,11 @@ void SiCallEnumHub(SERVER *s, FARM_MEMBER *f)
|
||||
}
|
||||
UnlockList(h->SessionList);
|
||||
|
||||
LockList(h->MacTable);
|
||||
LockHashList(h->MacHashTable);
|
||||
{
|
||||
hh->NumMacTables = LIST_NUM(h->MacTable);
|
||||
hh->NumMacTables = HASH_LIST_NUM(h->MacHashTable);
|
||||
}
|
||||
UnlockList(h->MacTable);
|
||||
UnlockHashList(h->MacHashTable);
|
||||
|
||||
LockList(h->IpTable);
|
||||
{
|
||||
@ -9084,6 +9260,7 @@ void SiPackAddCreateHub(PACK *p, HUB *h)
|
||||
PackAddBool(p, "NoSpinLockForPacketDelay", h->Option->NoSpinLockForPacketDelay);
|
||||
PackAddInt(p, "BroadcastStormDetectionThreshold", h->Option->BroadcastStormDetectionThreshold);
|
||||
PackAddInt(p, "MaxLoggedPacketsPerMinute", h->Option->MaxLoggedPacketsPerMinute);
|
||||
PackAddInt(p, "FloodingSendQueueBufferQuota", h->Option->FloodingSendQueueBufferQuota);
|
||||
PackAddBool(p, "DoNotSaveHeavySecurityLogs", h->Option->DoNotSaveHeavySecurityLogs);
|
||||
PackAddBool(p, "DropBroadcastsInPrivacyFilterMode", h->Option->DropBroadcastsInPrivacyFilterMode);
|
||||
PackAddBool(p, "DropArpInPrivacyFilterMode", h->Option->DropArpInPrivacyFilterMode);
|
||||
@ -10631,6 +10808,8 @@ SERVER *SiNewServerEx(bool bridge, bool in_client_inner_server)
|
||||
|
||||
s = ZeroMalloc(sizeof(SERVER));
|
||||
|
||||
SetEraserCheckInterval(0);
|
||||
|
||||
SiInitHubCreateHistory(s);
|
||||
|
||||
InitServerCapsCache(s);
|
||||
@ -10699,6 +10878,8 @@ SERVER *SiNewServerEx(bool bridge, bool in_client_inner_server)
|
||||
// Initialize the configuration
|
||||
SiInitConfiguration(s);
|
||||
|
||||
SetFifoCurrentReallocMemSize(MEM_FIFO_REALLOC_MEM_SIZE);
|
||||
|
||||
|
||||
if (s->DisableIntelAesAcceleration)
|
||||
{
|
||||
@ -10712,6 +10893,10 @@ SERVER *SiNewServerEx(bool bridge, bool in_client_inner_server)
|
||||
OSSetHighPriority();
|
||||
}
|
||||
|
||||
#ifdef OS_UNIX
|
||||
UnixSetHighOomScore();
|
||||
#endif // OS_UNIX
|
||||
|
||||
if (s->ServerType == SERVER_TYPE_FARM_MEMBER)
|
||||
{
|
||||
// Start a connection to the controller
|
||||
|
Reference in New Issue
Block a user