diff options
author | Patrick McHardy <kaber@trash.net> | 2014-01-08 13:02:15 +0000 |
---|---|---|
committer | Patrick McHardy <kaber@trash.net> | 2014-01-08 13:02:15 +0000 |
commit | 8f86606efe82489945db1706bd1d1a4d524afcad (patch) | |
tree | 5a7b5febee4c8190a067b3d1af38fcd5f9172c74 /src/exthdr.c | |
parent | bc3656ad1e5b5812f916e9c9356785c06ce90936 (diff) |
nftables: generic procotol contexts
Currently the context of higher layer protocols is specific to payload
expressions with some special cases for meta IIFTYPE expressions. This
approach has a few shortcomings, concretely there are more expression
types which define upper layer protocols like the ct expression and two
upcoming new types for the meta expression.
Replace the payload context by a generic protocol context to deal with
this. This patch just splits off the requires parts from the payload
expression without any functional changes, the following patches will
add further functionality for other expressions.
Signed-off-by: Patrick McHardy <kaber@trash.net>
Diffstat (limited to 'src/exthdr.c')
-rw-r--r-- | src/exthdr.c | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/src/exthdr.c b/src/exthdr.c index 3d01c3ab..458f9d62 100644 --- a/src/exthdr.c +++ b/src/exthdr.c @@ -40,14 +40,14 @@ static const struct expr_ops exthdr_expr_ops = { .clone = exthdr_expr_clone, }; -static const struct payload_template exthdr_unknown_template = - PAYLOAD_TEMPLATE("unknown", &invalid_type, 0, 0); +static const struct proto_hdr_template exthdr_unknown_template = + PROTO_HDR_TEMPLATE("unknown", &invalid_type, 0, 0); struct expr *exthdr_expr_alloc(const struct location *loc, const struct exthdr_desc *desc, uint8_t type) { - const struct payload_template *tmpl; + const struct proto_hdr_template *tmpl; struct expr *expr; if (desc != NULL) @@ -73,7 +73,7 @@ static const struct exthdr_desc *exthdr_protocols[IPPROTO_MAX] = { void exthdr_init_raw(struct expr *expr, uint8_t type, unsigned int offset, unsigned int len) { - const struct payload_template *tmpl; + const struct proto_hdr_template *tmpl; unsigned int i; assert(expr->ops->type == EXPR_EXTHDR); @@ -94,9 +94,9 @@ void exthdr_init_raw(struct expr *expr, uint8_t type, } #define HDR_TEMPLATE(__name, __dtype, __type, __member) \ - PAYLOAD_TEMPLATE(__name, __dtype, \ - offsetof(__type, __member) * 8, \ - field_sizeof(__type, __member) * 8) + PROTO_HDR_TEMPLATE(__name, __dtype, \ + offsetof(__type, __member) * 8, \ + field_sizeof(__type, __member) * 8) /* * Hop-by-hop options @@ -171,12 +171,12 @@ const struct exthdr_desc exthdr_frag = { .templates = { [FRAGHDR_NEXTHDR] = FRAG_FIELD("nexthdr", ip6f_nxt, &inet_protocol_type), [FRAGHDR_RESERVED] = FRAG_FIELD("reserved", ip6f_reserved, &integer_type), - [FRAGHDR_FRAG_OFF] = PAYLOAD_TEMPLATE("frag-off", &integer_type, - 16, 13), - [FRAGHDR_RESERVED2] = PAYLOAD_TEMPLATE("reserved2", &integer_type, - 29, 2), - [FRAGHDR_MFRAGS] = PAYLOAD_TEMPLATE("more-fragments", &integer_type, - 31, 1), + [FRAGHDR_FRAG_OFF] = PROTO_HDR_TEMPLATE("frag-off", &integer_type, + 16, 13), + [FRAGHDR_RESERVED2] = PROTO_HDR_TEMPLATE("reserved2", &integer_type, + 29, 2), + [FRAGHDR_MFRAGS] = PROTO_HDR_TEMPLATE("more-fragments", &integer_type, + 31, 1), [FRAGHDR_ID] = FRAG_FIELD("id", ip6f_ident, &integer_type), }, }; |