]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
scanner: IPv4-Mapped IPv6 addresses support
authorPablo Neira Ayuso <pablo@netfilter.org>
Sun, 8 Oct 2017 23:40:36 +0000 (01:40 +0200)
committerPablo Neira Ayuso <pablo@netfilter.org>
Mon, 9 Oct 2017 12:12:04 +0000 (14:12 +0200)
The scanner rejects IPv4-Mapped IPv6 addresses, eg.

 # cat test
 #!/usr/sbin/nft -f
 flush ruleset
 table inet global {
    set blackhole_ipv6 {
        type ipv6_addr
        flags interval
        elements = { ::ffff:0.0.0.0/96 }
    }
 }

 # nft -f test
 test:8:30-38: Error: syntax error, unexpected string, expecting comma or '}'
        elements = { ::ffff:0.0.0.0/96 }
                            ^^^^^^^^^^

According to RFC4291, Sect. 2.5.5.2. IPv4-Mapped IPv6 Address:

   |                80 bits               | 16 |      32 bits        |
   +--------------------------------------+--------------------------+
   |0000..............................0000|FFFF|    IPv4 address     |
   +--------------------------------------+----+---------------------+

Update scanner bits to parse this.

Closes: https://bugzilla.netfilter.org/show_bug.cgi?id=1188
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
src/scanner.l

index 186fb47eb7632d283da295f2c79cd8304481a3e8..594073660c6b12050125921e7f1cc58796471e60 100644 (file)
@@ -160,7 +160,8 @@ v63         ({v630}|{v631}|{v632}|{v633})
 v620           ((:)((:{hex4}){2}))
 v621           ((({hex4}:){1})((:{hex4}){1}))
 v622           ((({hex4}:){2})(:))
-v62            ({v620}|{v621}|{v622})
+v62_rfc4291    ((:)(:[fF]{4})(:{ip4addr}))
+v62            ({v620}|{v621}|{v622}|{v62_rfc4291})
 v610           ((:)(:{hex4}{1}))
 v611           ((({hex4}:){1})(:))
 v61            ({v610}|{v611})