Обработка команд Manad.

На стороне сервера типы правил проходят следующую обработку : для всех тегов <LOOP> </LOOP> все их содержимое дублируется для каждого ip-адреса. При этом:

1. Макрос вида {A} заменяются на ip-адреса клиента из выбранного диапазона;

2. Подстановки вида {XN}, где X - латинская буква, а N - цифра также обрабатываются для каждого ip-адреса. Начинать нумеровать эти последовательности нужно обязательно с нуля. Для каждого ip-адреса по каждой букве увеличивается индекс. Т.е., например, подстановки {A0}, {A1}, {B0} для 1-го ip-адреса преобразуется в {A0}, {A1}, {B0} ; для второго ip-адреса в {A1}, {A2}, {B1} и т.п.

Т.е. например строки :

<LOOP>
pipe {P0} config bw 128000
pipe {P1} config bw 128000
add {N0} pipe {P0} ip from any to {A} out
add {N0} pipe {P1} ip from {A} to any in
</LOOP>

для ip-адресов 192.168.184.10, 192.168.184.11 и 192.168.184.12 преобразуются в :

pipe {P0} config bw 128000
pipe {P1} config bw 128000
add {N0} pipe {P0} ip from any to 192.168.184.10 out
add {N0} pipe {P1} ip from 192.168.184.10 to any in
pipe {P2} config bw 128000
pipe {P3} config bw 128000
add {N1} pipe {P2} ip from any to 192.168.184.11 out
add {N1} pipe {P3} ip from 192.168.184.11 to any in
pipe {P4} config bw 128000
pipe {P5} config bw 128000
add {N2} pipe {P4} ip from any to 192.168.184.12 out
add {N2} pipe {P5} ip from 192.168.184.12 to any in

3. Аналогичным образом происходит обработка тега <LOOP_NET > для сетей. Строки дублируются для каждой сети. Тут доступны следующие макросы: {IP} - первый адрес сети, {MASK} - маска сети вида xx.xx.xx.xx, {MASK_WILD} - инвертированная маска сети, {MASK_BIT} - битовая маска сети вида xx.

Напрмер строки вида :

<LOOP_NET>
permit {IP}/{MASK_BIT}
</LOOP_NET>

Для сетей 192.169.185.0/24, 192.169.186.0/24 преобразуется в:

permit 192.169.185.0/24
permit 192.169.186.0/24