]> git.ipfire.org Git - thirdparty/nftables.git/commit
evaluate: bogus bail out with raw expression from dynamic sets
authorPablo Neira Ayuso <pablo@netfilter.org>
Wed, 17 Oct 2018 10:31:22 +0000 (12:31 +0200)
committerPablo Neira Ayuso <pablo@netfilter.org>
Wed, 17 Oct 2018 10:55:44 +0000 (12:55 +0200)
commit6340734d7034d2424d3a5e34c3042c97a63b8b2d
treeedb70dcfcd9e1e8ec9cfc11efa5b513923643670
parentb274c169014e71715f9333ee028c5a9304881919
evaluate: bogus bail out with raw expression from dynamic sets

The following ruleset that uses raw expressions:

 table ip nftlb {
        map persistency {
                type inet_service : mark
                size 65535
                timeout 1h
                elements = { 53 expires 59m55s864ms : 0x00000064, 80 expires 59m58s924ms : 0x00000065, 443 expires 59m56s220ms : 0x00000064 }
        }

        chain pre {
                type filter hook prerouting priority filter; policy accept;
                ip protocol { tcp, udp } update @persistencia { @th,0,16 : numgen inc mod 2 offset 100 }
        }
 }

bogusly bails out with:

 /tmp/test:9:57-64: Error: datatype mismatch: expected internet network service, expression has type integer
         ip protocol { tcp, udp } update @persistencia { @th,0,16 : numgen inc mod 2 offset 100 }
                                  ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Fix the problem by evaluating expression basetype and length in this case.

Reported-by: Laura Garcia <nevola@gmail.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
include/datatype.h
src/evaluate.c