]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
nft: fill in doff and fix ihl/version template entries
authorFlorian Westphal <fw@strlen.de>
Sun, 26 Jan 2014 13:52:47 +0000 (14:52 +0100)
committerFlorian Westphal <fw@strlen.de>
Thu, 17 Sep 2015 22:06:07 +0000 (00:06 +0200)
This allows to use

nft add rule ip filter input tcp doff 8

or similar.

Furhermore, ip version looked at hdrlen and vice versa.

Signed-off-by: Florian Westphal <fw@strlen.de>
src/proto.c

index b2aeac48dabc3255afee36aae15f6ad1e0d4a151..28b93cbc1adf0ce0ff0e010ed6e0a49d279edc59 100644 (file)
@@ -403,8 +403,10 @@ const struct proto_desc proto_tcp = {
                [TCPHDR_DPORT]          = INET_SERVICE("dport", struct tcphdr, dest),
                [TCPHDR_SEQ]            = TCPHDR_FIELD("sequence", seq),
                [TCPHDR_ACKSEQ]         = TCPHDR_FIELD("ackseq", ack_seq),
-               [TCPHDR_DOFF]           = {},
-               [TCPHDR_RESERVED]       = {},
+               [TCPHDR_DOFF]           = HDR_BITFIELD("doff", &integer_type,
+                                                      (12 * BITS_PER_BYTE) + 4, 4),
+               [TCPHDR_RESERVED]       = HDR_BITFIELD("reserved", &integer_type,
+                                                      (12 * BITS_PER_BYTE) + 0, 4),
                [TCPHDR_FLAGS]          = HDR_BITFIELD("flags", &tcp_flag_type,
                                                       13 * BITS_PER_BYTE,
                                                       BITS_PER_BYTE),
@@ -502,8 +504,8 @@ const struct proto_desc proto_ip = {
                PROTO_LINK(IPPROTO_SCTP,        &proto_sctp),
        },
        .templates      = {
-               [IPHDR_VERSION]         = HDR_BITFIELD("version", &integer_type, 0, 4),
-               [IPHDR_HDRLENGTH]       = HDR_BITFIELD("hdrlength", &integer_type, 4, 4),
+               [IPHDR_VERSION]         = HDR_BITFIELD("version", &integer_type, 4, 4),
+               [IPHDR_HDRLENGTH]       = HDR_BITFIELD("hdrlength", &integer_type, 0, 4),
                [IPHDR_TOS]             = IPHDR_FIELD("tos",            tos),
                [IPHDR_LENGTH]          = IPHDR_FIELD("length",         tot_len),
                [IPHDR_ID]              = IPHDR_FIELD("id",             id),