@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") ∨ (ACTION =="Fast-path") = 1?) 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