На стороне сервера типы правил проходят следующую обработку : для всех тегов <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