From: Florian Westphal <fw@strlen.de>
To: <netfilter-devel@vger.kernel.org>
Subject: [PATCH nft 00/10] nft: exthdr fixes and improvements
Date: Tue, 1 Mar 2016 16:37:40 +0100 [thread overview]
Message-ID: <1456846670-28179-1-git-send-email-fw@strlen.de> (raw)
This adds following enhancements and fixes for the exthdr
expression.
#1. Treat exthdr as if user asked for an ip6 protocol header field,
i.e. add ipv6 dependency for bridge/netdev/inet family.
#2. Add scaling and masking to handle protocol headers that have
non-byte divisible sizes.
Tested briefly with following dummy rules (nf_defrag_ipv6 module not loaded):
frag frag-off 0 counter packets 40 bytes 59840
frag frag-off 131 counter packets 0 bytes 0
frag frag-off 1448 counter packets 0 bytes 0
frag frag-off 181 counter packets 40 bytes 59840
frag frag-off > 0 counter packets 120 bytes 148160
Note that the offsets are *NOT* scaled, i.e. we match the raw values
contained in the packet. To match offset of 1448 one thus needs to
ask for 181.
This is same behaviour as ip hdrlength, where 5 matches a value of 20 bytes.
include/expression.h | 1
include/exthdr.h | 2
include/payload.h | 2
src/evaluate.c | 29 +++++++
src/exthdr.c | 33 ++++++++
src/netlink_delinearize.c | 36 +++++----
src/netlink_linearize.c | 62 +++++++++++----
src/payload.c | 75 ++++++++++++-------
tests/py/ip6/dst.t.payload.inet | 30 +++++++
tests/py/ip6/frag.t | 63 ++++++++++++++++
tests/py/ip6/frag.t.payload.inet | 145 +++++++++++++++++++++++++++++++++++++
tests/py/ip6/frag.t.payload.ip6 | 109 +++++++++++++++++++++++++++
tests/py/ip6/hbh.t.payload.inet | 30 +++++++
tests/py/ip6/mh.t.payload.inet | 64 ++++++++++++++++
tests/py/ip6/rt.t.payload.inet | 58 ++++++++++++++
tests/py/any/frag.t | 67 -----------------
tests/py/any/frag.t.payload | 109 ---------------------------
17 files changed, 685 insertions(+), 230 deletions(-)
Note: frag-off match is broken at the moment, I passed a patch
to netdev:
https://patchwork.ozlabs.org/patch/590568/
next reply other threads:[~2016-03-01 15:37 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-03-01 15:37 Florian Westphal [this message]
2016-03-01 15:37 ` [PATCH nft 01/10] evaluate: enforce ip6 proto with exthdr expression Florian Westphal
2016-03-01 15:37 ` [PATCH nft 02/10] netlink: split generic part of netlink_gen_payload_mask into helper Florian Westphal
2016-03-01 15:37 ` [PATCH nft 03/10] netlink: add and use netlink_gen_exthdr_mask Florian Westphal
2016-03-01 15:37 ` [PATCH nft 04/10] payload: move payload_gen_dependency generic part to helper Florian Westphal
2016-03-01 15:37 ` [PATCH nft 05/10] exthdr: generate dependencies for inet/bridge/netdev family Florian Westphal
2016-03-01 15:37 ` [PATCH nft 06/10] tests: add/fix inet+exthdr tests Florian Westphal
2016-03-01 15:37 ` [PATCH nft 07/10] exthdr: remove implicit dependencies Florian Westphal
2016-03-01 15:37 ` [PATCH nft 08/10] exthdr: store offset for later use Florian Westphal
2016-03-01 15:37 ` [PATCH nft 09/10] netlink_delinearize: prepare binop_postprocess for exthdr demux Florian Westphal
2016-03-01 15:37 ` [PATCH nft 10/10] netlink_delinearize: handle extension header templates with odd sizes Florian Westphal
2016-03-02 12:00 ` [PATCH nft 00/10] nft: exthdr fixes and improvements Pablo Neira Ayuso
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1456846670-28179-1-git-send-email-fw@strlen.de \
--to=fw@strlen.de \
--cc=netfilter-devel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).