Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   *Теория* | Переформирование списка подсетей (http://forum.oszone.net/showthread.php?t=81069)

SyNC 16-03-2007 13:38 562544

*Теория* | Переформирование списка подсетей
 
Задача:
Есть список подсетей в формате IP/M http://noc.masterhost.ru/allrunet/runet
Подсети в этом списке могут пересекаться, повторяться или вообще быть ошибочными.
Необходимо сформировать новый список (желательно массив в формате IP,Mask - "10.240.0.17,255.255.0.0")
В новом списке не должно быть пересекающихся сетей (2 пересекающиеся сети должны быть совмещены в одну, или, если нет возможности, разбиты на 3 подсети), не должно быть повторяющихся сетей и не должно быть ошибочных записей.
Все ошибочные и необработанные (из-за несовершенства алгоритма, к примеру) подсети должны попадать в отдельный массив.

Решение:
Пока мне неизвестно. =)
Есть идея - создать "пространство" всех возможных IP и каким-то образом добавлять туда "области". И чтобы потом можно было сформировать из этого "пространства" его "дамп" в виде списка. Как это реализовать - я не знаю.

Вопрос:
У кого какие идеи?

hasherfrog 16-03-2007 16:06 562622

Я могу ошибаться где-то, эти маски я часто путаю...
Но вот идея:

Делаем класс (в VBA массив какой-нибудь с динамичесим размером) "список подсетей"
Делаем ему метод "добавить ещё одну подсеть по адресу/маске".
Метод проверяет, не входит ли новая (добавляемая) подсеть в одну из уже имеющихся, и не включает ли в себя уже имеющиеся.
Если пересечений нет, подсеть добавляется.
Если пересечение есть, удаляется "меньшая" подсеть.

Ну и загоняем все подсети из списка туда, с нуля.

Как мне кажется, в вашем случае понятие "сети пересекаются" - лишнее. Одна будет полностью включать в себя другую.
И нужно оставлять "большую".
Но я тут могу ошибаться, как я сказал, с масками у меня всегда были напряги.


Время: 06:12.

Время: 06:12.
© OSzone.net 2001-