[Précédent : Principes de Base] [Index] [Suivant : Tables]
Quand pfctl(8) rencontre une liste durant le chargement de la base de règles, il crée de multiples règles : une règle pour chaque élément de la liste. Par exemple :
block out on fxp0 from { 192.168.0.1, 10.5.32.6 } to any
devient :
block out on fxp0 from 192.168.0.1 to any
block out on fxp0 from 10.5.32.6 to any
Plusieurs listes peuvent être utilisées dans une même règle. Elles ne sont pas uniquement limitées aux règles de filtrage :
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 }
Les virgules entre les éléments d'une même liste sont optionnelles.
Les noms de macros doivent commencer par une lettre et peuvent contenir des lettres, des chiffres, et des barres de soulignement "_". Les noms des macros ne doivent pas être des noms réservés tels que pass, out, ou queue.
ext_if = "fxp0"
block in on $ext_if from any to any
L'exemple précédent montre comment créer une macro nommée ext_if. Quand une macro est appelée après avoir été créée, son nom est précédé d'un caractère $.
Les macros peuvent aussi représenter des listes tel que le montre l'exemple suivant :
friends = "{ 192.168.1.1, 10.0.2.5, 192.168.43.53 }"
Elles peuvent être définies de manière récursive. Vu qu'elles ne sont pas traduites dans des quotes "", la syntaxe suivante doit être employée :
host1 = "192.168.1.1"
host2 = "192.168.1.2"
all_hosts = "{" $host1 $host2 "}"
La macro $all_hosts correspond maintenant à la liste d'adresses IP {192.168.1.1 192.168.1.2}.
[Précédent : Principes de Base] [Index] [Suivant : Tables]