Use Variables / Defines in include statements
Ondrej Zajicek
santiago at crfreenet.org
Tue Jan 17 13:48:11 CET 2017
On Tue, Jan 17, 2017 at 01:00:57PM +0100, Jan Matejka wrote:
> On 01/17/2017 11:03 AM, Tim Weippert wrote:
> > Hi,
> >
> > i currently try to do different includes, based on an variable/define
> > within the config.
> >
> > for example:
> >
> > function test(int asn) {
> >
> > [ do something general ]
> >
> > include "/etc/bird/" . asn . "-special.conf";
> >
> > }
> >
> > As this approach doesn't work, is there currently an possibility to do
> > such includes somehow?
> >
> > regards,
> > tim
> >
>
> Hi!
>
> It should be possible to use the case switch to explicitely include
> these files, one by one. It is also needed to reload the config on every
> change.
>
> case asn {
> 65500: include "/etc/bird/65500-special.conf";
> 65511: include "/etc/bird/65511-special.conf";
> ...
> }
Hi
Note that include is a preprocessor operation unrelated to the filter
language, so in /etc/bird/65500-special.conf you would have to use { .. }
to have a proper block. Also note that the current grammar require
include to be on a new line, so you would have to use:
case asn {
65500:
include "/etc/bird/65500-special.conf";
65511:
include "/etc/bird/65511-special.conf";
...
}
And finally, you could simply use wildcards:
case asn {
include "/etc/bird/*-special.conf";
}
And then in in each file the appropriate case branch,
like this for /etc/bird/65500-special.conf:
65500: {
...
}
--
Elen sila lumenn' omentielvo
Ondrej 'Santiago' Zajicek (email: santiago at crfreenet.org)
OpenPGP encrypted e-mails preferred (KeyID 0x11DEADC3, wwwkeys.pgp.net)
"To err is human -- to blame it on a computer is even more so."
More information about the Bird-users
mailing list