private function writePool($instanceNumber, $instanceId, $poolNumber, $poolId, PoolConfig $poolConfig) { $range = new IP($poolConfig->v('range')); $range6 = new IP($poolConfig->v('range6')); $processCount = $poolConfig->v('processCount'); $splitRange = $range->split($processCount); $splitRange6 = $range6->split($processCount); $processConfig = ['managementIp' => sprintf('127.42.%d.%d', 100 + $instanceNumber, 100 + $poolNumber)]; for ($i = 0; $i < $processCount; ++$i) { // protocol is udp unless it is the last process when there is // not just one process if (1 === $processCount || $i !== $processCount - 1) { $proto = 'udp'; $port = 1194 + $i; } else { $proto = 'tcp'; $port = 1194; } $processConfig['range'] = $splitRange[$i]; $processConfig['range6'] = $splitRange6[$i]; $processConfig['dev'] = sprintf('tun-%d-%d-%d', $instanceNumber, $poolNumber, $i); $processConfig['proto'] = $proto; $processConfig['port'] = $port; $processConfig['managementPort'] = 11940 + $i; $processConfig['configName'] = sprintf('server-%s-%s-%d.conf', $instanceId, $poolId, $i); $this->writeProcess($instanceId, $poolId, $poolConfig, $processConfig); } }