summaryrefslogtreecommitdiff
path: root/conf/confbase.Y
diff options
context:
space:
mode:
authorPavel Tvrdík <pawel.tvrdik@gmail.com>2016-01-21 10:30:08 +0100
committerPavel Tvrdík <pawel.tvrdik@gmail.com>2016-01-21 10:37:08 +0100
commit7eb9e79648e17037f3691aafa829970efacbbbc9 (patch)
tree12d184b32b1148a5365567a1aa91e83962ba7b6c /conf/confbase.Y
parenta4caa1c0a3b6bfb9918f08dbbf856e4d3c78080a (diff)
Add condition for max_pxlen by ROA grammar
Diffstat (limited to 'conf/confbase.Y')
-rw-r--r--conf/confbase.Y4
1 files changed, 4 insertions, 0 deletions
diff --git a/conf/confbase.Y b/conf/confbase.Y
index f01103ee..94a20fe7 100644
--- a/conf/confbase.Y
+++ b/conf/confbase.Y
@@ -202,6 +202,8 @@ net_roa4_: net_ip4_ MAX NUM AS NUM
net_fill_roa4($$, ((net_addr_ip4 *)&$1)->prefix, $1.pxlen, $3, $5);
if ($3 < 0 || $3 > IP4_MAX_PREFIX_LENGTH)
cf_error("Invalid max prefix length %d", $3);
+ if (((net_addr_roa4 *) $$)->max_pxlen < ($$)->pxlen)
+ cf_error("Maximum prefix length %d must be >= prefix length %d", ((net_addr_roa4 *) $$)->max_pxlen, ($$)->pxlen);
};
net_roa6_: net_ip6_ MAX NUM AS NUM
@@ -210,6 +212,8 @@ net_roa6_: net_ip6_ MAX NUM AS NUM
net_fill_roa6($$, ((net_addr_ip6 *)&$1)->prefix, $1.pxlen, $3, $5);
if ($3 < 0 || $3 > IP6_MAX_PREFIX_LENGTH)
cf_error("Invalid max prefix length %d", $3);
+ if (((net_addr_roa6 *) $$)->max_pxlen < ($$)->pxlen)
+ cf_error("Maximum prefix length %d must be >= prefix length %d", ((net_addr_roa6 *) $$)->max_pxlen, ($$)->pxlen);
};
net_ip_: net_ip4_ | net_ip6_ ;