mirror of
https://gitlab.labs.nic.cz/labs/bird.git
synced 2024-05-11 16:54:54 +00:00
Merge branch 'int-new-rpki-squashed' (early part) into int-new
This commit is contained in:
@@ -1183,6 +1183,26 @@ interpret(struct f_inst *what)
|
||||
default: runtime( "Prefix, path, clist or eclist expected" );
|
||||
}
|
||||
break;
|
||||
case P('R','m'): /* Get ROA max prefix length */
|
||||
ONEARG;
|
||||
if (v1.type != T_NET || !net_is_roa(v1.val.net))
|
||||
runtime( "ROA expected" );
|
||||
|
||||
res.type = T_INT;
|
||||
res.val.i = (v1.val.net->type == NET_ROA4) ?
|
||||
((net_addr_roa4 *) v1.val.net)->max_pxlen :
|
||||
((net_addr_roa6 *) v1.val.net)->max_pxlen;
|
||||
break;
|
||||
case P('R','a'): /* Get ROA ASN */
|
||||
ONEARG;
|
||||
if (v1.type != T_NET || !net_is_roa(v1.val.net))
|
||||
runtime( "ROA expected" );
|
||||
|
||||
res.type = T_INT;
|
||||
res.val.i = (v1.val.net->type == NET_ROA4) ?
|
||||
((net_addr_roa4 *) v1.val.net)->asn :
|
||||
((net_addr_roa6 *) v1.val.net)->asn;
|
||||
break;
|
||||
case P('c','p'): /* Convert prefix to ... */
|
||||
ONEARG;
|
||||
if (v1.type != T_NET)
|
||||
@@ -1476,12 +1496,15 @@ interpret(struct f_inst *what)
|
||||
if (!table)
|
||||
runtime("Missing ROA table");
|
||||
|
||||
/* Table type is either NET_ROA4 or NET_ROA6, checked in parser */
|
||||
if (v1.val.net->type != ((table->addr_type == NET_ROA4) ? NET_IP4 : NET_IP6))
|
||||
runtime("Incompatible net type");
|
||||
if (table->addr_type != NET_ROA4 && table->addr_type != NET_ROA6)
|
||||
runtime("Table type must be either ROA4 or ROA6");
|
||||
|
||||
res.type = T_ENUM_ROA;
|
||||
res.val.i = net_roa_check(table, v1.val.net, as);
|
||||
|
||||
if (table->addr_type != (v1.val.net->type == NET_IP4 ? NET_ROA4 : NET_ROA6))
|
||||
res.val.i = ROA_UNKNOWN; /* Prefix and table type mismatch */
|
||||
else
|
||||
res.val.i = net_roa_check(table, v1.val.net, as);
|
||||
|
||||
break;
|
||||
|
||||
|
Reference in New Issue
Block a user