Unknown instruction 8574 in same (~) error when nesting if's
Nico Schottelius
nico.schottelius at ungleich.ch
Sat Apr 20 17:19:55 CEST 2019
Hello,
I am using bird 1.6.3 (from debian) and if I use the following filter,
bird "crashes" when issueing the "conf" command:
Apr 19 21:29:53 router1 bird: Reconfiguring
Apr 19 21:29:53 router1 bird: Unknown instruction 8574 in same (~)
filter:
filter to_netstream {
if(is_inside_ungleich()) then {
if(net !~ net_prefer_netstream) then {
bgp_path.prepend(myas);
bgp_path.prepend(myas);
bgp_path.prepend(myas);
print "Policy: changed bgppath ", net, " ", bgp_path, " for init7";
}
accept;
}
reject;
}
If I change the filter to
filter to_netstream {
if(is_inside_ungleich()) then {
# if(net !~ net_prefer_netstream) then {
# bgp_path.prepend(myas);
# bgp_path.prepend(myas);
# bgp_path.prepend(myas);
# print "Policy: changed bgppath ", net, " ", bgp_path, " for init7";
# }
accept;
}
reject;
}
this problem does not occur.
Is this a bug in bird or am I using it "incorrectly"?
Best,
Nico
Relevant context:
version:
--------------------------------------------------------------------------------
[17:14:30] router1.place5:/var/log# dpkg -l | grep bird
ii bird 1.6.3-2 amd64 Internet Routing Daemon
[17:18:49] router1.place5:/var/log#
config:
--------------------------------------------------------------------------------
define net_ungleich = [ 2a0a:e5c0::/29+, 2a09:2940::/29+ ];
define net_prefer_netstream = [ 2a09:2940::/29+ ];
define net_rickbakker = [
2001:678:a10::/48+,
2a0d:1a44::/32+,
2a0d:1a47::/32+,
2a0d:2406::/39+,
2a0d:2406:e00::/39+,
2a07:a904:1000::/40+
];
function is_ungleich()
{
if net ~ net_ungleich then return true;
return false;
}
function is_from_rickbakker()
{
if net ~ net_rickbakker && bgp_path.first = 204526 then return true;
return false;
}
# what we have inside dcl
function is_inside_ungleich()
{
if(is_ungleich()) then return true;
if(is_from_rickbakker()) then return true;
return false;
}
protocol bgp netstream {
local as 209898;
neighbor 2a01:330:1000:1002::1 as 15517;
password "xxx";
import filter from_netstream;
export filter to_netstream;
}
--------------------------------------------------------------------------------
--
Your Swiss, Open Source and IPv6 Virtual Machine. Now on www.datacenterlight.ch.
More information about the Bird-users
mailing list