This commit is contained in:
2026-06-12 18:06:03 +08:00
parent 75d6a62f78
commit 89bfd2d80e
7 changed files with 104 additions and 99 deletions

View File

@@ -0,0 +1,60 @@
# 社区属性转换与本地优先级修正函数Local Pref 200封顶版
function function_inet_community_make(){
# 1. 从上游收到的路由 => 赋予兜底优先级 (Local Pref = 100)
if bgp_large_community ~ [(LOCAL_ASN, 10100, 0)] then {
bgp_local_pref = 100;
bgp_large_community.add((LOCAL_ASN, 2, 4));
bgp_large_community.delete((LOCAL_ASN, 10100, 0));
return true;
}
# 2. 私有上游 => 赋予兜底优先级 (Local Pref = 100)
if bgp_large_community ~ [(LOCAL_ASN, 10100, 1)] then {
bgp_local_pref = 100;
bgp_large_community.delete((LOCAL_ASN, 10100, 1));
return true;
}
# 3. Peer/IXP 收到的路由 => 赋予中等优先 (Local Pref = 140)
if bgp_large_community ~ [(LOCAL_ASN, 10100, 2), (LOCAL_ASN, 10100, 3)] then {
bgp_local_pref = 140;
bgp_large_community.add((LOCAL_ASN, 2, 4));
bgp_large_community.delete([(LOCAL_ASN, 10100, 2), (LOCAL_ASN, 10100, 3)]);
return true;
}
# 4. 下游客户发来的路由 => 赋予高优先级 (Local Pref = 180)
if bgp_large_community ~ [(LOCAL_ASN, 10100, 4)] then {
bgp_local_pref = 180;
bgp_large_community.add([
(LOCAL_ASN, 2, 1), (LOCAL_ASN, 2, 2), (LOCAL_ASN, 2, 3), (LOCAL_ASN, 2, 4)
]);
bgp_large_community.delete((LOCAL_ASN, 10100, 4));
return true;
}
# 5. 自身宣告的前缀 => 赋予最高级封顶 (Local Pref = 200)
if bgp_large_community ~ [(LOCAL_ASN, 200, 0)] then {
bgp_local_pref = 200;
bgp_large_community.add([(LOCAL_ASN, 2, 0..4)]);
bgp_large_community.delete((LOCAL_ASN, 200, 0));
return true;
}
return false;
}
# 社区安全检查/清理(全量通配版)
function function_inet_bgp_community_clear(){
# 使用 [ (ASN, Data1, *) ] 语法,直接清空该分类下的所有子标记
bgp_large_community.delete([
(LOCAL_ASN, 1, *),
(LOCAL_ASN, 2, *),
(LOCAL_ASN, 3, *),
(LOCAL_ASN, 200, *),
(LOCAL_ASN, 10100, *),
(LOCAL_ASN, 10101, *),
(LOCAL_ASN, 10102, *)
]);
}