diff --git a/bird/template/inet.conf b/bird/template/inet.conf index 15c4312..8a3dd09 100644 --- a/bird/template/inet.conf +++ b/bird/template/inet.conf @@ -1,74 +1,15 @@ -filter filter_inet4_bgp_import { - if is_self_net_inet4() then reject; - if is_bogon_prefix() || (bgp_path.len > 100) then reject; - bgp_large_community.add((LOCAL_ASN,200,0)); - accept; -} - -filter filter_inet4_bgp_export { - if !is_self_net_inet4() then reject; - if is_bogon_prefix() || (bgp_path.len > 100) then reject; - if source != RTS_STATIC then reject; - if bgp_large_community !~ [(LOCAL_ASN, 200,0)] then reject; - accept; -} - -filter filter_inet6_bgp_import { - if is_self_net_inet6() then reject; - if is_bogon_prefix() || (bgp_path.len > 100) then reject; - bgp_large_community.add((LOCAL_ASN,200,0)); - accept; -} - -filter filter_inet6_bgp_export { - if !is_self_net_inet6() then reject; - if is_bogon_prefix() || (bgp_path.len > 100) then reject; - if source != RTS_STATIC then reject; - if bgp_large_community !~ [(LOCAL_ASN, 200,0)] then reject; - accept; -} - -filter filter_inet4_ibgp_import { - if is_self_net_inet4() then reject; - if is_bogon_prefix() then reject; - if bgp_large_community ~ [(LOCAL_ASN, 1,*)] then reject; - accept; -} - -filter filter_inet4_ibgp_export { - if is_self_net_inet4() then reject; - if is_bogon_prefix() then reject; - if bgp_large_community ~ [(LOCAL_ASN, 1,*)] then reject; - accept; -} - -filter filter_inet6_ibgp_import { - if is_self_net_inet6() then reject; - if is_bogon_prefix() then reject; - if bgp_large_community ~ [(LOCAL_ASN, 1,*)] then reject; - accept; -} - -filter filter_inet6_ibgp_export { - if is_self_net_inet6() then reject; - if is_bogon_prefix() then reject; - if bgp_large_community ~ [(LOCAL_ASN, 1,*)] then reject; - accept; -} - - template bgp tpl_inet_up { graceful restart; local as LOCAL_ASN; ipv4 { table inet4; - import filter filter_inet4_bgp_import; - export filter filter_inet4_bgp_export; + import filter {if !function_inet4_bgp_import() then reject; accept; }; + export filter {if !function_inet4_bgp_export() then reject; accept; }; }; ipv6 { table inet6; - import filter filter_inet6_bgp_import; - export filter filter_inet6_bgp_export; + import filter {if !function_inet6_bgp_import() then reject; accept; }; + export filter {if !function_inet6_bgp_export() then reject; accept; }; }; } @@ -77,8 +18,8 @@ template bgp tpl_inet4_up { local as LOCAL_ASN; ipv4 { table inet4; - import filter filter_inet4_bgp_import; - export filter filter_inet4_bgp_export; + import filter {if !function_inet4_bgp_import() then reject; accept; }; + export filter {if !function_inet4_bgp_export() then reject; accept; }; }; } @@ -87,8 +28,8 @@ template bgp tpl_inet6_up { local as LOCAL_ASN; ipv6 { table inet6; - import filter filter_inet6_bgp_import; - export filter filter_inet6_bgp_export; + import filter {if !function_inet6_bgp_import() then reject; accept; }; + export filter {if !function_inet6_bgp_export() then reject; accept; }; }; } @@ -101,15 +42,15 @@ template bgp tpl_inet_ibgp { table inet4; next hop self; gateway direct; - import filter filter_inet4_ibgp_import; - export filter filter_inet4_ibgp_export; + import filter {if !function_inet4_ibgp_import() then reject; accept; }; + export filter {if !function_inet4_ibgp_export() then reject; accept; }; }; ipv6 { table inet6; next hop self; gateway direct; - import filter filter_inet6_ibgp_import; - export filter filter_inet6_ibgp_export; + import filter {if !function_inet6_ibgp_import() then reject; accept; }; + export filter {if !function_inet6_ibgp_export() then reject; accept; }; }; } @@ -122,8 +63,8 @@ template bgp tpl_inet4_ibgp { table inet4; next hop self; gateway direct; - import filter filter_inet4_ibgp_import; - export filter filter_inet4_ibgp_export; + import filter {if !function_inet4_ibgp_import() then reject; accept; }; + export filter {if !function_inet4_ibgp_export() then reject; accept; }; }; } @@ -136,7 +77,7 @@ template bgp tpl_inet6_ibgp { table inet6; next hop self; gateway direct; - import filter filter_inet6_ibgp_import; - export filter filter_inet6_ibgp_export; + import filter {if !function_inet6_ibgp_import() then reject; accept; }; + export filter {if !function_inet6_ibgp_export() then reject; accept; }; }; } \ No newline at end of file diff --git a/bird/template/inet_filter_func.conf b/bird/template/inet_filter_func.conf new file mode 100644 index 0000000..cf652f5 --- /dev/null +++ b/bird/template/inet_filter_func.conf @@ -0,0 +1,57 @@ +function function_inet4_bgp_import() { + if is_self_net_inet4() then return false; + if is_bogon_prefix() || (bgp_path.len > 100) then return false; + bgp_large_community.add((LOCAL_ASN,200,0)); + return true; +} + +function function_inet4_bgp_export() { + if !is_self_net_inet4() then return false; + if is_bogon_prefix() || (bgp_path.len > 100) then reject; + if source != RTS_STATIC then reject; + if bgp_large_community !~ [(LOCAL_ASN, 200,0)] then return false; + return true; +} + +function function_inet6_bgp_import() { + if is_self_net_inet6() then return false; + if is_bogon_prefix() || (bgp_path.len > 100) then return false; + bgp_large_community.add((LOCAL_ASN,200,0)); + return true; +} + +function function_inet6_bgp_export() { + if !is_self_net_inet6() then return false; + if is_bogon_prefix() || (bgp_path.len > 100) then reject; + if source != RTS_STATIC then reject; + if bgp_large_community !~ [(LOCAL_ASN, 200,0)] then return false; + return true; +} + +function function_inet4_ibgp_import() { + if is_self_net_inet4() then return false; + if is_bogon_prefix() then return false; + if bgp_large_community ~ [(LOCAL_ASN, 1,*)] then reject; + return true; +} + +function function_inet4_ibgp_export() { + if is_self_net_inet4() then return false; + if is_bogon_prefix() then return false; + if bgp_large_community ~ [(LOCAL_ASN, 1,*)] then reject; + return true; +} + +function function_inet6_ibgp_import() { + if is_self_net_inet6() then reject; + if is_bogon_prefix() then reject; + if bgp_large_community ~ [(LOCAL_ASN, 1,*)] then reject; + return true; +} + +function function_inet6_ibgp_export() { + if is_self_net_inet6() then reject; + if is_bogon_prefix() then reject; + if bgp_large_community ~ [(LOCAL_ASN, 1,*)] then reject; + return true; +} \ No newline at end of file diff --git a/bird/template/inet_ixp.conf b/bird/template/inet_ixp.conf deleted file mode 100644 index 99ef346..0000000 --- a/bird/template/inet_ixp.conf +++ /dev/null @@ -1,18 +0,0 @@ -template bgp tpl_inet6_ixp { - graceful restart; - local as LOCAL_ASN; - ipv6 { - table inet6; - import filter { - if is_self_net_inet6() then reject; - if is_bogon_prefix() || (bgp_path.len > 100) then reject; - accept; - }; - export filter { - if !is_self_net_inet6() then reject; - if is_bogon_prefix() || (bgp_path.len > 100) then reject; - if bgp_large_community !~ [(LOCAL_ASN, 200,0)] then reject; - accept; - }; - }; -} \ No newline at end of file diff --git a/update.sh b/update.sh index f417afa..f11d02a 100644 --- a/update.sh +++ b/update.sh @@ -6,9 +6,6 @@ git clone https://git.nia.ink/brnet/bird_config.git rm /etc/bird/template -rf mv ./bird_config/bird/template /etc/bird/template -rm /etc/bird/function/unet.conf -f -mv ./bird_config/bird/function/unet.conf /etc/bird/function/unet.conf - chmod -R 755 /etc/bird