проверьте, какой префикс IPv4 является наиболее конкретным

Я работаю над страницей управления IP-адресами для моей компании. Это список всех частных и общедоступных IPv4 / IPv6-адресов, которые в настоящее время используются нами или клиентами, подключенными к нашей сети. На данный момент я работаю над IPv4.

Когда я ввожу новый правильный префикс (x.x.x.x / y), префикс будет добавлен в базу данных и показан на странице управления. Проблема, с которой я сталкиваюсь, заключается в том, что когда я добавляю новый префикс, который подпадает под ранее добавленный префикс, он должен быть помещен непосредственно под наиболее конкретный префикс. Например: когда у меня есть префикс 10.10.10.0/24 и 10.10.10.0/25, и я хочу добавить 10.10.10.0/26, он должен быть размещен непосредственно под 10.10.10.0/25, потому что это самый конкретный префикс на странице ,

Я уже провел некоторые исследования и наткнулся эта страница где DaveRandom опубликовал свой класс php IPv4Subnet, где вы можете проверить, находится ли префикс, например, в диапазоне другого префикса. Это прекрасно работает, когда есть только 1 префикс, который возвращает true, но не с несколькими.

Поэтому мой вопрос: как мне узнать с помощью php, какой префикс IPv4 является наиболее специфичным для того, который я хочу добавить.

В настоящее время я написал следующий код:

if (isset($_POST['addPrefix'])) {
$prefix = \filter_input(\INPUT_POST, 'newPrefix');
$prefixName = \filter_input(\INPUT_POST, 'newName');

require_once 'include/IPv4Subnet.class.php';

$subnet = new IPv4Subnet($prefix);

$selectPrefixes = "SELECT prefix FROM prefixes";

if ($resultSet = mysqli_query($link, $selectPrefixes)) {
while ($rowPrefixes = $resultSet->fetch_assoc()) {
$insertPrefix = $rowPrefixes['prefix'];
array_push($prefixArray, $insertPrefix);
}
}

echo $subnet->getBroadcastAddress() . "\n";

foreach ($prefixArray as $value) {
var_dump($subnet->within($value));
}
}

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …