template bgp dnpeers { local as OWNAS; table T_BGP4; # metric is the number of hops between us and the peer path metric 1; # this line allows debugging filter rules # filtered routes can be looked up in birdc using the "show route filtered" command import keep filtered on; import all; export all; #source address 172.20.170.192; }; template bgp iBGP_Peer { local as OWNAS; igp table T_OSPF; path metric on; import keep filtered; # import where iBGP_import_peer_policy(); # export where iBGP_export_peer_policy(); import all; export all; source address OWNIP; next hop self; } template pipe iBGP_Pipe { # table name will come from peer definition peer table master; import all; export all; } protocol pipe { table master; 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$ if is_valid_network() && !is_self_net() then { accept; } reject; }; # import limit 1000 action block; export filter { # here we export the whole net if is_valid_network() then { accept; } reject; }; };