From 9574c263569f477114d7885ebcf5af8af6411582 Mon Sep 17 00:00:00 2001 From: Manuel Messner Date: Tue, 7 Feb 2017 03:14:11 +0100 Subject: exthdr: prepare exthdr_gen_dependency for tcp support currently exthdr always needs ipv6 dependency (i.e. link layer), but with upcomming TCP option matching we also need to include TCP at the network layer. This patch prepares this change by adding two parameters to exthdr_gen_dependency. Signed-off-by: Manuel Messner Signed-off-by: Florian Westphal --- src/evaluate.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'src/evaluate.c') diff --git a/src/evaluate.c b/src/evaluate.c index 94412f27..0e02548c 100644 --- a/src/evaluate.c +++ b/src/evaluate.c @@ -448,19 +448,20 @@ static int __expr_evaluate_exthdr(struct eval_ctx *ctx, struct expr **exprp) */ static int expr_evaluate_exthdr(struct eval_ctx *ctx, struct expr **exprp) { - const struct proto_desc *base; + const struct proto_desc *base, *dependency = &proto_ip6; + enum proto_bases pb = PROTO_BASE_NETWORK_HDR; struct expr *expr = *exprp; struct stmt *nstmt; - base = ctx->pctx.protocol[PROTO_BASE_NETWORK_HDR].desc; - if (base == &proto_ip6) + base = ctx->pctx.protocol[pb].desc; + if (base == dependency) return __expr_evaluate_exthdr(ctx, exprp); if (base) return expr_error(ctx->msgs, expr, "cannot use exthdr with %s", base->name); - if (exthdr_gen_dependency(ctx, expr, &nstmt) < 0) + if (exthdr_gen_dependency(ctx, expr, dependency, pb - 1, &nstmt) < 0) return -1; list_add(&nstmt->list, &ctx->rule->stmts); -- cgit v1.2.3