The kernel supports bitwise shift operations. This patch-set adds the support to nft. There are a few preliminary housekeeping patches. Changes since v2: * set the type and byte-order of righthand shift operands to integer and host-endian during delinearization; * always set the length of righthand shift operands to 32 bits during linearization. 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 | 23 +++++ src/evaluate.c | 13 ++- src/netlink_delinearize.c | 93 +++++++++++++++---- src/netlink_linearize.c | 52 ++++++++++- 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, 208 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