Commit a5d2a344 authored by Ondřej Zajíček's avatar Ondřej Zajíček

Minor cleanups

BTW, 'prefices' is hypercorrection, as 'prefix' is from 'praefixum' with
plural 'praefixa'.
parent 8c9986d3
......@@ -1196,27 +1196,29 @@ foot).
This type can hold a network prefix consisting of IP address, prefix
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
operator <cf/.type/ of type <m/enum/. The type may be:
Prefixes may be of several types, which can be determined by the special
operator <cf/.type/. The type may be:
<cf/NET_IP4/ and <cf/NET_IP6/ prefices hold an IP prefix. The literals are
written as <cf><m/ipaddress//<m/pxlen/</cf>,
<cf/NET_IP4/ and <cf/NET_IP6/ prefixes hold an IP prefix. The literals
are written as <cf><m/ipaddress//<m/pxlen/</cf>,
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
pair, and <cf/.len/, which separates prefix length from the pair.
operators on IP prefixes: <cf/.ip/ which extracts the IP address from
the pair, and <cf/.len/, which separates prefix length from the pair.
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
VPN Route Distinguisher (<rfc id="4364">). They support the same special
operators as IP prefices, and also <cf/.rd/ which extracts the Route Distinguisher.
Their literals are written as <cf><m/vpnrd/ <m/ipprefix/</cf>
<cf/NET_VPN4/ and <cf/NET_VPN6/ prefixes hold an IP prefix with VPN
Route Distinguisher (<rfc id="4364">). They support the same special
operators as IP prefixes, and also <cf/.rd/ which extracts the Route
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
with an ASN. They support the same special operators as IP prefices, and also
<cf/.maxlen/ which extracts maximal prefix length, and <cf/.asn/ which extracts the ASN.
<cf/NET_ROA4/ and <cf/NET_ROA6/ prefixes hold an IP prefix range
together with an ASN. They support the same special operators as IP
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
a flowspec rule. Filters currently don't support flowspec parsing.
<cf/NET_FLOW4/ and <cf/NET_FLOW6/ hold an IP prefix together with a
flowspec rule. Filters currently don't support flowspec parsing.
<tag><label id="type-ec">ec</tag>
This is a specialized type used to represent BGP extended community
......
......@@ -1227,11 +1227,10 @@ interpret(struct f_inst *what)
ONEARG;
if (v1.type != T_NET)
runtime( "Prefix expected" );
res.type = T_RD;
if ((1 << v1.val.net->type) & (NB_VPN4 | NB_VPN6))
res.val.ec = net_rd(v1.val.net);
else
if (!net_is_vpn(v1.val.net))
runtime( "VPN address expected" );
res.type = T_RD;
res.val.ec = net_rd(v1.val.net);
break;
case P('a','f'): /* Get first ASN from AS PATH */
ONEARG;
......
......@@ -81,14 +81,14 @@ net_format(const net_addr *N, char *buf, int buflen)
case NET_VPN4:
{
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);
}
case NET_VPN6:
{
/* 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);
buf += c; buflen -= c;
ADVANCE(buf, buflen, c);
return bsnprintf(buf, buflen, " %I6/%d", n->vpn6.prefix, n->vpn6.pxlen);
}
case NET_ROA4:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment