table T_BGP4; table T_OSPF; protocol device { scan time 10; } protocol static { route 172.20.0.0/14 via 172.20.170.192; route 172.20.170.192/27 reject; import all; export none; } include "/etc/bird/local4.conf"; # filter helpers ################# #include "/etc/bird/filter4.conf"; include "/etc/bird/community_filters.conf"; protocol kernel { scan time 20; metric 64; # Use explicit kernel route metric to avoid collisions # with non-BIRD routes in the kernel routing table import none; #export all; # Actually insert routes into the kernel routing table export filter { if source = RTS_STATIC then reject; krt_prefsrc = OWNIP; accept; }; } include "/etc/bird/ospf.conf"; template bgp dnpeers { local as OWNAS; # metric is the number of hops between us and the peer path metric 1; # this lines allows debugging filter rules # filtered routes can be looked up in birdc using the "show route filtered" command table T_BGP4; import all; export all; import limit 1000 action block; #source address 172.20.170.192; }; protocol pipe { peer table T_BGP4; import filter { # accept every subnet, except our own advertised subnet # filtering is important, because some guys try to advertise routes like 0.0.0.0 if is_valid_network() && !is_self_net() then { accept; } reject; }; export filter { # here we export the whole net if is_valid_network() then { accept; } reject; }; }; include "/etc/bird/peers4/*";