On Tue, May 23, 2006 at 03:31:46PM -0700, andrew fresh wrote:
> host_list = "{" $hosts "}"
> port_list = "{" $ports "}"
Try adding
q_host_list = '"{' $hosts '}"'
q_port_list = '"{' $ports '}"'
then replace
> end_03 = "proto tcp from " $host_list " to any port " $port_list
with
end_03 = "proto tcp from " $q_host_list " to any port " $q_port_list
The rule is that when a macro is used to define another macro, it should
contain quotes (as the right-hand-side of a macro definition is a
concatenation of strings), while a macro used in a rule definition
should not.
Like
pass from "{ 10.1.2.3 10.2.3.4 }" to any
is not a host list, but a single string, interpreted as a host name.
And
macro = { 10.1.2.3 10.2.3.4 }
is not a valid macro definition, because the right-hand-side is not a
string (or a sequence thereof), but interpreted as tokens.
It's neither like shell variable expansion, nor like C #defines. But
something else entirely. I keep hearing it's supposed to be like that :)
Daniel