37 lines
1.1 KiB
Plaintext
37 lines
1.1 KiB
Plaintext
function pub_is_invalid_net_length(){
|
|
case net.type {
|
|
NET_IP4: return net.len > 24;
|
|
NET_IP6: return net.len > 48;
|
|
else: print "pub_is_valid_net_length: unexpected net.type ", net.type, " ", net; return false;
|
|
}
|
|
}
|
|
|
|
function is_bogon_prefix() {
|
|
case net.type {
|
|
NET_IP4: return net ~ BOGON_PREFIXES_V4;
|
|
NET_IP6: return net ~ BOGON_PREFIXES_V6;
|
|
else: print "is_bogon_prefix: unexpected net.type ", net.type, " ", net; return false;
|
|
}
|
|
}
|
|
|
|
function is_bogon_asn() {
|
|
if bgp_path ~ BOGON_ASNS then return true;
|
|
return false;
|
|
}
|
|
|
|
function is_downstream_asn() {
|
|
if bgp_path.last ~ DOWNSTREAM_ASN then return true;
|
|
return false;
|
|
}
|
|
|
|
function is_valid() {
|
|
if pub_is_invalid_net_length() then return false;
|
|
if (LOCAL_ASN, 110, 30) ~ bgp_large_community then return true;
|
|
if bgp_path.len = 0 then return true;
|
|
if is_bogon_prefix() then return false;
|
|
if is_bogon_asn() then return false;
|
|
if is_rpki_invalid() && source = RTS_BGP then return false;
|
|
if net = ::/0 then return false;
|
|
return true;
|
|
}
|