Обработка команд 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