Имена макросов не могут содержать такие слова, как pass, out, или queue.
ext_if = "fxp0" block in on $ext_if from any to any
Это правило создаст макрос, под названием ext_if. Когда обращаются к макросу, после того, как он был создан, перед его именем стоит знак $.
Также макросы могут развёртываться в списки
friends = "{ 192.168.1.1, 10.0.2.5, 192.168.43.53 }"
В одном правиле может быть указано несколько списков, также списки не ограничиваются использованием только в правилах фильтрации.
rdr on fxp0 proto tcp from any to any port { 22 80 } -> \ 192.168.0.6 block out on fxp0 proto { tcp udp } from { 192.168.0.1, \ 10.5.32.6 } to any port { ssh telnet }
Обратите внимание, что запятая между пунктами списка не обязательна.
Без скобок "self" это такой же макрос, как имя интерфейса (без скобок) - т.е. один раз при чтении правил разворачивается с список IP-адресов.
pass in quick proto tcp from any to self port $tcp_services