netfilter-devel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [nft PATCH 1/4 v2] payload: generate dependency in the appropriate byteorder
@ 2014-09-26 16:50 Alvaro Neira Ayuso
  2014-09-26 16:50 ` [nft PATCH 2/4 v2] src: Enhance payload_gen_dependency() Alvaro Neira Ayuso
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Alvaro Neira Ayuso @ 2014-09-26 16:50 UTC (permalink / raw)
  To: netfilter-devel; +Cc: kaber

If we add a dependency, the constant expression on the right
hand side must be represented in the appropriate order.

Example without this patch:

  nft add rule bridge filter input reject with icmp-host-unreach --debug netlink

  [ payload load 2b @ link header + 12 => reg 1 ]
  [ cmp eq reg 1 0x00000800 ]
  [ reject type 0 code 1 ]

When we create the payload expression we have the right value in host endian but
this has to be in big endian.

With this patch, if we add the same rule:

  nft add rule bridge filter input reject with icmp-host-unreach --debug netlink

  [ payload load 2b @ link header + 12 => reg 1 ]
  [ cmp eq reg 1 0x00000008 ]
  [ reject type 0 code 1 ]

The new dependency is converted to big endian.

Signed-off-by: Alvaro Neira Ayuso <alvaroneay@gmail.com>
---
[Changes in v2]
* Added a example with the problem and the fix in the description

 src/payload.c |    3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/src/payload.c b/src/payload.c
index 1eee4e0..a3bbe51 100644
--- a/src/payload.c
+++ b/src/payload.c
@@ -216,8 +216,7 @@ int payload_gen_dependency(struct eval_ctx *ctx, const struct expr *expr,
 		left = payload_expr_alloc(&expr->location, desc, desc->protocol_key);
 
 	right = constant_expr_alloc(&expr->location, tmpl->dtype,
-				    BYTEORDER_HOST_ENDIAN,
-				    tmpl->len,
+				    tmpl->dtype->byteorder, tmpl->len,
 				    constant_data_ptr(protocol, tmpl->len));
 
 	dep = relational_expr_alloc(&expr->location, OP_EQ, left, right);
-- 
1.7.10.4


^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2014-09-26 18:19 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-09-26 16:50 [nft PATCH 1/4 v2] payload: generate dependency in the appropriate byteorder Alvaro Neira Ayuso
2014-09-26 16:50 ` [nft PATCH 2/4 v2] src: Enhance payload_gen_dependency() Alvaro Neira Ayuso
2014-09-26 16:50 ` [nft PATCH 3/4 v2] datatype: Enhance symbolic_constant_parse() Alvaro Neira Ayuso
2014-09-26 16:50 ` [nft PATCH 4/4 v4] nft: complete reject support Alvaro Neira Ayuso
2014-09-26 16:56   ` Álvaro Neira Ayuso
2014-09-26 18:06   ` Pablo Neira Ayuso
2014-09-26 18:18     ` Patrick McHardy

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).