vvle@rs2-1804:~$ sudo cat /etc/bird.conf | egrep "^[^#]" log syslog all; log "/var/log/bird.log" { debug, trace, info, remote, warning, error, auth, fatal, bug }; router id 10.81.15.49; define myas = 64540; ipv4 table master4; ipv6 table master6; ipv4 table T_Vlado_64530; ipv4 table T_ASR_64542; ipv4 table T_Grybas_64533; protocol device { } function bgp_in(int peeras) { if (bgp_path.first != peeras ) then return false; return true; } function bgp_out_comm(int peeras) { if ! (source = RTS_BGP ) then return false; if peeras > 65535 then { if (rt,0,peeras) ~ bgp_ext_community then return false; if (rt,myas,peeras) ~ bgp_ext_community then return true; if ((rt,0,myas) ~ bgp_ext_community) then return false; } else { if ((0,peeras) ~ bgp_community) || ((rt,0,peeras) ~ bgp_ext_community) then return false; if ((myas,peeras) ~ bgp_community) || ((rt,myas,peeras) ~ bgp_ext_community) then return true; if ((0, myas) ~ bgp_community) || ((rt,0,myas) ~ bgp_ext_community) then return false; } return true; } function bgp_out(int peeras) { if ! bgp_out_comm(peeras) then return false; } protocol direct { ipv4; # Connect to default IPv4 table ipv6; # ... and to default IPv6 table } template bgp PEERS { local as myas; rs client; ipv4 { import all; export all; }; } template pipe PIPES { table master4; peer table T_Grybas_64533; peer table T_Vlado_64530; peer table T_ASR_64542; import none; export none; } filter bgp_in_Grybas_64533 { if bgp_in(64533) then accept; reject; } filter bgp_out_Grybas_64533 { if ! bgp_out(64533) then reject; accept; } protocol pipe P_Grybas_64533 from PIPES { description "Grybas testinis"; peer table T_Grybas_64533; import filter bgp_in_Grybas_64533; export filter bgp_out_Grybas_64533; import limit 10 action block; }; protocol bgp R_Grybas_64533 from PEERS { ipv4 { table T_Grybas_64533; }; description "Grybas testinis"; neighbor 10.81.15.51 as 64533; } filter bgp_in_Vlado_64530 { if bgp_in(64530) then accept; reject; } filter bgp_out_Vlado_64530 { if ! bgp_out(64530) then reject; accept; } protocol pipe P_Vlado_64530 from PIPES { description "Vlado testinis"; peer table T_Vlado_64530; import filter bgp_in_Vlado_64530; export filter bgp_out_Vlado_64530; import limit 10 action block; }; protocol bgp R_Vlado_64530 from PEERS { ipv4 { table T_Vlado_64530; }; description "Vlado testinis"; neighbor 10.81.15.50 as 64530; } filter bgp_in_ASR_64542 { if bgp_in(64542) then accept; reject; } filter bgp_out_ASR_64542 { if ! bgp_out(64542) then reject; accept; } protocol pipe P_ASR_64542 from PIPES { description "ASR testinis"; peer table T_ASR_64542; import filter bgp_in_ASR_64542; export filter bgp_out_ASR_64542; import limit 10 action block; }; protocol bgp R_ASR_64542 from PEERS { ipv4 { table T_ASR_64542; }; description "ASR testinis"; neighbor 10.81.15.52 as 64542; } vvle@rs2-1804:~$