template bgp tnet_tpl { local as 4242423538; neighbor internal; direct; password "trygvis"; ipv6 { next hop self; import filter { if is_tnet() then { print proto, ": import accept, net=", net, ", from=", from, ", gw=", gw; accept; } print proto, ": import reject, reason=not tnet"; reject; }; # newer bird's only # import keep filtered; export filter { if is_tnet() then { print proto, ": export accept, net=", net, ", from=", from, ", gw=", gw; accept; } print proto, ": export reject, reason=not tnet"; reject; }; }; } protocol bgp tnet_hash from tnet_tpl { neighbor fe80:3b20:4cb0:5315:22a:c7de:a45b:8a7d; interface "tnet-hash"; rr client; } protocol bgp tnet_node1 from tnet_tpl { neighbor fe80:58eb:3930:1815:2a6d:8918:70c9:96f3; interface "tnet-node1"; rr client; } protocol bgp tnet_node2 from tnet_tpl { neighbor fe80:9dd8:abac:cf05:aea3:dc03:4c74:32db; interface "tnet-node2"; rr client; } protocol bgp routedbits_lon1 { local as 4242423538; neighbor fe80::207; neighbor as 4242420207; interface "tnet-rtdbts_l1"; ipv6 { import filter { if dn42_is_valid_network() && !is_tnet() then { # Check when unknown or invalid according to ROA if (roa_check(dn42_roa, net, bgp_path.last) = ROA_VALID) then { accept; } else { print "[dn42] ROA check failed for ", net, " ASN ", bgp_path.last; reject; } } else { reject; } }; export filter { if dn42_is_valid_network() && source ~ [RTS_STATIC, RTS_BGP] then { accept; } else { reject; } }; }; }