The kernel supports bitwise shift operations. This patch-set adds the support to nft. There are a few preliminary housekeeping patches. Changes since v1: * update to the final kernel and libnftnl API's; * update nf_tables.h in a separate patch; * change byte-order of payload shifts generated by expr_evaluate_bits. Jeremy Sowden (9): Update gitignore. src: white-space fixes. netlink_delinearize: fix typo. netlink_delinearize: remove commented out pr_debug statement. parser: add parenthesized statement expressions. evaluate: change shift byte-order to host-endian. include: update nf_tables.h. netlink: add support for handling shift expressions. tests: shell: add bit-shift tests. .gitignore | 9 +++ include/linux/netfilter/nf_tables.h | 28 ++++++- src/evaluate.c | 13 ++- src/netlink_delinearize.c | 81 +++++++++++++++---- src/netlink_linearize.c | 55 ++++++++++++- src/parser_bison.y | 25 +++--- tests/shell/testcases/chains/0040mark_shift_0 | 11 +++ tests/shell/testcases/chains/0040mark_shift_1 | 11 +++ .../chains/dumps/0040mark_shift_0.nft | 6 ++ .../chains/dumps/0040mark_shift_1.nft | 6 ++ 10 files changed, 204 insertions(+), 41 deletions(-) create mode 100755 tests/shell/testcases/chains/0040mark_shift_0 create mode 100755 tests/shell/testcases/chains/0040mark_shift_1 create mode 100644 tests/shell/testcases/chains/dumps/0040mark_shift_0.nft create mode 100644 tests/shell/testcases/chains/dumps/0040mark_shift_1.nft -- 2.24.1