[前に戻る: はじめに] [目次] [次に進む: テーブル]
pfctl(8) がルールセットをロード中にリストを見つけると、 これをひとつひとつがリストのそれぞれの要素に対応する、 複数のルールに展開します。たとえば、
block out on fxp0 from { 192.168.0.1, 10.5.32.6 } to any
は次のように展開されます。
block out on fxp0 from 192.168.0.1 to any
block out on fxp0 from 10.5.32.6 to any
ルール中に複数のリストを指定することが可能で、 また、以下の例のようにフィルタルールだけに限定されません。
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 }
リストの要素の間のカンマはオプショナルであることに注意してください。
マクロ名は英文字から始まり、英数字とアンダースコアを含み得るものです。 マクロ名には 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 }"
マクロは再帰的に定義することができます。クウォートで囲まれたマクロは 展開されませんので、次のようなシンタクスを使用する必要があります。
host1 = "192.168.1.1"
host2 = "192.168.1.2"
all_hosts = "{" $host1 $host2 "}"
このマクロ $all_hosts 場合、192.168.1.1、192.168.1.2 に展開されます。
[前に戻る: はじめに] [目次] [次に進む: テーブル]