]> git.ipfire.org Git - thirdparty/nftables.git/commit
src: add and use `set_is_meter` helper
authorJeremy Sowden <jeremy@azazel.net>
Tue, 5 Nov 2019 21:40:26 +0000 (21:40 +0000)
committerFlorian Westphal <fw@strlen.de>
Wed, 6 Nov 2019 14:36:09 +0000 (15:36 +0100)
commit9ddd1b7fadfa6973fe1ddd6ac0e07a1759294a96
tree3eed5ed278113431673a1906bba68f668df3155b
parent91487a80551ea91714082da41aa49ba52dd6e9bb
src: add and use `set_is_meter` helper

The sets constructed for meters are flagged as anonymous and dynamic.
However, in some places there are only checks that they are dynamic,
which can lead to normal sets being classified as meters.

For example:

  # nft add table t
  # nft add set t s { type ipv4_addr; size 256; flags dynamic,timeout; }
  # nft add chain t c
  # nft add rule t c tcp dport 80 meter m size 128 { ip saddr limit rate 10/second }
  # nft list meters
  table ip t {
          set s {
                  type ipv4_addr
                  size 256
                  flags dynamic,timeout
          }
          meter m {
                  type ipv4_addr
                  size 128
                  flags dynamic
          }
  }
  # nft list meter t m
  table ip t {
          meter m {
                  type ipv4_addr
                  size 128
                  flags dynamic
          }
  }
  # nft list meter t s
  Error: No such file or directory
  list meter t s
               ^

Add a new helper `set_is_meter` and use it wherever there are checks for
meters.

Signed-off-by: Jeremy Sowden <jeremy@azazel.net>
Signed-off-by: Florian Westphal <fw@strlen.de>
include/rule.h
src/evaluate.c
src/expression.c
src/json.c
src/rule.c
tests/shell/testcases/sets/0038meter_list_0 [new file with mode: 0755]