
@startuml
Title Алгоритм поиска ANY-ANY правил Cisco FTD

!define DZ <font color=green>destination_zone</font> 
!define SZ <font color=blue>source_zone</font> 
!define NOT_VALID #pink:Правило <b>не</b> относится входящим/исходящим;

start
:Получаем правило Cisco FTD;
:Смотрим на такие поля как:
- SZ
- DZ;
if (SZ, DZ пустые?) then (Да)
    :Значит у SZ и DZ
    стоят значение any;
    :Правило двунаправленное;
    NOT_VALID
    stop
else (Нет)
    switch (Проверка SZ и DZ на следующие кейсы) 
    case ( SZ пустое\n DZ не пустое) 
        #palegreen:Правило является входящим;
        stop
    case ( SZ не пустое\n DZ пустое) 
        #palegreen:Правило является исходящим;
        stop
    case ( SZ не пустое\n DZ не пустое) 
        if (SZ == DZ) then (Да)
            :Правило двунаправленное;
            NOT_VALID
            stop
        else (Нет)
            :Правило также возможно\nдвунаправленное;
            NOT_VALID
            stop
        endif
    endswitch
endif

@enduml