Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

ПараметрОписание
tagsНаименование тега, которым должен быть промаркирован запрос для выполнения фильтра. В данном параметре может быть указан список наименований тегов — в таком случае фильтр будет выполнен только если запрос промаркирован всеми указанными тегами. Параметр condition игнорируется, если задан tags.
conditionУсловие применения фильтра. Фильтр выполняется, если вычисляемое выражение из данного ключа вернуло истину, либо не задано (и не используется tags).
case

Список пар ключей when и then. Ключ when содержит вычисляемое выражение — условие, а then — пары ключ-значение, которые будут вычислены и записаны. Условия when вычисляются и проверяются в порядке следования до первого успешного результата.

elseОпциональный набор пар

Последним элементом списка может быть else: пары ключ-значение

, которые

из него будут вычислены и записаны, если ни одно из

выражений

условий when

в параметре case

не

вернуло истину

выполнилось.

Code Block
titleПример фильтра case_after: добавление номера порта для одних запросов и IP сервера для другихbefore: различное декодирование DHCP-опции 82 при различных форматах Circuit-Id
collapsetrue
plugins:
  filters:
    case_afterbefore:
      addextract_dst-switch_port_fornumber_dlink-relaysfrom_or_server-ip_for_otherscircuit_id:
        case:
          - when: $context$request.has_tagRAD_REQUEST.DHCP-Relay-Circuit-Id.like?("dlink_dhcp-relay^0x0006[0-9a-f]{12}$")
            then:
              $response.'$var.PE-Switch-MAC-Address': $request.RAD_REPLYREQUEST.PacketDHCP-Dst-Port: '"67"'
Relay-Remote-Id.substring(2).format_mac()
              '$var.PE-Switch-Port-Number': $request.RAD_REQUEST.DHCP-Relay-Circuit-Id.substring(-2).to_i(16).to_s()
          - when: $response$request.RAD_REPLYREQUEST.try("DHCP-Router-Address").ip4?(Relay-Circuit-Id.like?("^0x[0-9a-f]{20}$")
            then:
              $response.'$var.PE-Switch-MAC-Address': $request.RAD_REPLYREQUEST.DHCP-DHCPRelay-Server-Identifier: $response.RAD_REPLY.DHCP-Router-Address
Remote-Id.substring(2).format_mac()
              '$var.PE-Switch-Port-Number': $request.RAD_REQUEST.DHCP-Relay-Circuit-Id.substring(-10, -8).to_i(16).to_s()
          - else:
 $response.RAD_REPLY             '$var.PE-Switch-IP-Address': $request.RAD_REQUEST.DHCP-ServerRelay-IP-Address: $responseRemote-Id.unhex()
              '$var.PE-Switch-Port-Number': $request.RAD_REPLYREQUEST.DHCP-Router-Address

...

Relay-Circuit-Id.unhex().regexp_replace("^.+/(\d+):\d+$", "\\1")


Выполнение некоторого действия с запросом.

...