man pf.conf never describes what "!" does. The "!" is used in some examples
and
a lot of the time is obvious what will happens. The pf faq has somewhat more
of
an explanation of "!" with multiple address, but its explanation only refers
to the
use of "!" in tables. There is never any statement of what !addr.
I expect that description given in the pf faq covers the behavior of "!" in
any
places that ip addresses are given.
I tripped over this when I want to block 2 ip address from accessing a
service
I (and I realize I was wrong ) always considered that
pass quick from { addr 1, addr2 }
Could be written as
pass quick from addr1
pass quick from addr2
put if "!" are used this obvious should not be true
pass quick from { !addr1, !addr2 }
cannot be the same as ( at least I hope since I haven't built the system to
test it)
pass quick from !addr1
pass quick from !addr2
furthermore the descriptions that do exist do not cover the boundary cases
such as 192.168.0.1-192.168.0.30 !192.168.0.20-192.168.0.40