Minor cleanups
BTW, 'prefices' is hypercorrection, as 'prefix' is from 'praefixum' with plural 'praefixa'.
This commit is contained in:
parent
8c9986d310
commit
a5d2a34497
3 changed files with 22 additions and 21 deletions
|
@ -1196,27 +1196,29 @@ foot).
|
||||||
This type can hold a network prefix consisting of IP address, prefix
|
This type can hold a network prefix consisting of IP address, prefix
|
||||||
length and several other values. This is the key in route tables.
|
length and several other values. This is the key in route tables.
|
||||||
|
|
||||||
Prefices may be of several types, which can be determined by the special
|
Prefixes may be of several types, which can be determined by the special
|
||||||
operator <cf/.type/ of type <m/enum/. The type may be:
|
operator <cf/.type/. The type may be:
|
||||||
|
|
||||||
<cf/NET_IP4/ and <cf/NET_IP6/ prefices hold an IP prefix. The literals are
|
<cf/NET_IP4/ and <cf/NET_IP6/ prefixes hold an IP prefix. The literals
|
||||||
written as <cf><m/ipaddress//<m/pxlen/</cf>,
|
are written as <cf><m/ipaddress//<m/pxlen/</cf>,
|
||||||
or <cf><m>ipaddress</m>/<m>netmask</m></cf>. There are two special
|
or <cf><m>ipaddress</m>/<m>netmask</m></cf>. There are two special
|
||||||
operators on IP prefices: <cf/.ip/ which extracts the IP address from the
|
operators on IP prefixes: <cf/.ip/ which extracts the IP address from
|
||||||
pair, and <cf/.len/, which separates prefix length from the pair.
|
the pair, and <cf/.len/, which separates prefix length from the pair.
|
||||||
So <cf>1.2.0.0/16.len = 16</cf> is true.
|
So <cf>1.2.0.0/16.len = 16</cf> is true.
|
||||||
|
|
||||||
<cf/NET_VPN4/ and <cf/NET_VPN6/ prefices hold an IP prefix with
|
<cf/NET_VPN4/ and <cf/NET_VPN6/ prefixes hold an IP prefix with VPN
|
||||||
VPN Route Distinguisher (<rfc id="4364">). They support the same special
|
Route Distinguisher (<rfc id="4364">). They support the same special
|
||||||
operators as IP prefices, and also <cf/.rd/ which extracts the Route Distinguisher.
|
operators as IP prefixes, and also <cf/.rd/ which extracts the Route
|
||||||
Their literals are written as <cf><m/vpnrd/ <m/ipprefix/</cf>
|
Distinguisher. Their literals are written
|
||||||
|
as <cf><m/vpnrd/ <m/ipprefix/</cf>
|
||||||
|
|
||||||
<cf/NET_ROA4/ and <cf/NET_ROA6/ prefices hold an IP prefix range together
|
<cf/NET_ROA4/ and <cf/NET_ROA6/ prefixes hold an IP prefix range
|
||||||
with an ASN. They support the same special operators as IP prefices, and also
|
together with an ASN. They support the same special operators as IP
|
||||||
<cf/.maxlen/ which extracts maximal prefix length, and <cf/.asn/ which extracts the ASN.
|
prefixes, and also <cf/.maxlen/ which extracts maximal prefix length,
|
||||||
|
and <cf/.asn/ which extracts the ASN.
|
||||||
|
|
||||||
<cf/NET_FLOW4/ and <cf/NET_FLOW6/ hold an IP prefix together with
|
<cf/NET_FLOW4/ and <cf/NET_FLOW6/ hold an IP prefix together with a
|
||||||
a flowspec rule. Filters currently don't support flowspec parsing.
|
flowspec rule. Filters currently don't support flowspec parsing.
|
||||||
|
|
||||||
<tag><label id="type-ec">ec</tag>
|
<tag><label id="type-ec">ec</tag>
|
||||||
This is a specialized type used to represent BGP extended community
|
This is a specialized type used to represent BGP extended community
|
||||||
|
|
|
@ -1227,11 +1227,10 @@ interpret(struct f_inst *what)
|
||||||
ONEARG;
|
ONEARG;
|
||||||
if (v1.type != T_NET)
|
if (v1.type != T_NET)
|
||||||
runtime( "Prefix expected" );
|
runtime( "Prefix expected" );
|
||||||
res.type = T_RD;
|
if (!net_is_vpn(v1.val.net))
|
||||||
if ((1 << v1.val.net->type) & (NB_VPN4 | NB_VPN6))
|
|
||||||
res.val.ec = net_rd(v1.val.net);
|
|
||||||
else
|
|
||||||
runtime( "VPN address expected" );
|
runtime( "VPN address expected" );
|
||||||
|
res.type = T_RD;
|
||||||
|
res.val.ec = net_rd(v1.val.net);
|
||||||
break;
|
break;
|
||||||
case P('a','f'): /* Get first ASN from AS PATH */
|
case P('a','f'): /* Get first ASN from AS PATH */
|
||||||
ONEARG;
|
ONEARG;
|
||||||
|
|
|
@ -81,14 +81,14 @@ net_format(const net_addr *N, char *buf, int buflen)
|
||||||
case NET_VPN4:
|
case NET_VPN4:
|
||||||
{
|
{
|
||||||
int c = rd_format(n->vpn4.rd, buf, buflen);
|
int c = rd_format(n->vpn4.rd, buf, buflen);
|
||||||
buf += c; buflen -= c;
|
ADVANCE(buf, buflen, c);
|
||||||
return bsnprintf(buf, buflen, " %I4/%d", n->vpn4.prefix, n->vpn4.pxlen);
|
return bsnprintf(buf, buflen, " %I4/%d", n->vpn4.prefix, n->vpn4.pxlen);
|
||||||
}
|
}
|
||||||
case NET_VPN6:
|
case NET_VPN6:
|
||||||
{
|
{
|
||||||
/* XXX: RD format is specified for VPN4; not found any for VPN6, reusing the same as for VPN4 */
|
/* XXX: RD format is specified for VPN4; not found any for VPN6, reusing the same as for VPN4 */
|
||||||
int c = rd_format(n->vpn6.rd, buf, buflen);
|
int c = rd_format(n->vpn6.rd, buf, buflen);
|
||||||
buf += c; buflen -= c;
|
ADVANCE(buf, buflen, c);
|
||||||
return bsnprintf(buf, buflen, " %I6/%d", n->vpn6.prefix, n->vpn6.pxlen);
|
return bsnprintf(buf, buflen, " %I6/%d", n->vpn6.prefix, n->vpn6.pxlen);
|
||||||
}
|
}
|
||||||
case NET_ROA4:
|
case NET_ROA4:
|
||||||
|
|
Loading…
Reference in a new issue