@startuml
Title Алгоритм поиска any-any правил Cisco FTD
!define DN destination_network
!define SN source_network
!define ACTION action
!define NOT_VALID #pink:Правило не не является any-any правилом;
!define VALID #palegreen:Правило является any-any правилом;
!define ANY_CHECK :Проверить, является ли объект предустановленным any4 или any6 объектом;
start
:Получаем правило Cisco FTD;
:Смотрим на такие поля как:
- SN
- DN
- ACTION;
if (ACTION == либо "Allow" либо "Fast-path") then (Да)
if (SN пустое ∧ DN пустое = 1?) then (Да)
:Значит у SN и DN
стоят значение any;
VALID
end
else (Нет)
:Надо проверить, есть ли в списке\nобъектов SN и DN\nпредуставноеленные any4 и any6 объекты;
fork
:Берем SN;
if(SN пустое?) then (Да)
:SN является any;
stop
else (Нет)
:Итерируемся по списку объектов SN;
while(В списке остались объекты?) is (Да)
if (Объект является any объектом?) then (Да)
:SN является any;
stop
else (Нет)
:Взять следующий объект из списка;
endif
endwhile (Нет)
:SN не является any;
stop
endif
fork again
:Берем DN;
if(DN пустое?) then (Да)
:DN является any;
stop
else (Нет)
:Итерируемся по списку объектов DN;
while(В списке остались объекты?) is (Да)
if (Объект является any объектом?) then (Да)
:DN является any;
stop
else (Нет)
:Взять следующий объект из списка;
endif
endwhile (Нет)
:DN не является any;
stop
endif
endfork
if (SN any ∧ DN any = 1?) then (Да)
VALID
end
else (Нет)
NOT_VALID
end
endif
endif
else (Нет)
NOT_VALID;
end
endif