![]() |
*Теория* | Переформирование списка подсетей
Задача:
Есть список подсетей в формате IP/M http://noc.masterhost.ru/allrunet/runet Подсети в этом списке могут пересекаться, повторяться или вообще быть ошибочными. Необходимо сформировать новый список (желательно массив в формате IP,Mask - "10.240.0.17,255.255.0.0") В новом списке не должно быть пересекающихся сетей (2 пересекающиеся сети должны быть совмещены в одну, или, если нет возможности, разбиты на 3 подсети), не должно быть повторяющихся сетей и не должно быть ошибочных записей. Все ошибочные и необработанные (из-за несовершенства алгоритма, к примеру) подсети должны попадать в отдельный массив. Решение: Пока мне неизвестно. =) Есть идея - создать "пространство" всех возможных IP и каким-то образом добавлять туда "области". И чтобы потом можно было сформировать из этого "пространства" его "дамп" в виде списка. Как это реализовать - я не знаю. Вопрос: У кого какие идеи? |
Я могу ошибаться где-то, эти маски я часто путаю...
Но вот идея: Делаем класс (в VBA массив какой-нибудь с динамичесим размером) "список подсетей" Делаем ему метод "добавить ещё одну подсеть по адресу/маске". Метод проверяет, не входит ли новая (добавляемая) подсеть в одну из уже имеющихся, и не включает ли в себя уже имеющиеся. Если пересечений нет, подсеть добавляется. Если пересечение есть, удаляется "меньшая" подсеть. Ну и загоняем все подсети из списка туда, с нуля. Как мне кажется, в вашем случае понятие "сети пересекаются" - лишнее. Одна будет полностью включать в себя другую. И нужно оставлять "большую". Но я тут могу ошибаться, как я сказал, с масками у меня всегда были напряги. |
Время: 06:12. |
Время: 06:12.
© OSzone.net 2001-