{"id":806626,"url":"http://patchwork.ozlabs.org/api/1.0/patches/806626/?format=json","project":{"id":26,"url":"http://patchwork.ozlabs.org/api/1.0/projects/26/?format=json","name":"Netfilter Development","link_name":"netfilter-devel","list_id":"netfilter-devel.vger.kernel.org","list_email":"netfilter-devel@vger.kernel.org","web_url":null,"scm_url":null,"webscm_url":null},"msgid":"<20170828150534.12375-1-fw@strlen.de>","date":"2017-08-28T15:05:34","name":"[nft] evaluate: convert expr_rt byteorder when evaluating statment arg","commit_ref":null,"pull_url":null,"state":"changes-requested","archived":false,"hash":"1a5247742ffdc97e6b3839b07b58ba55cc44221c","submitter":{"id":1025,"url":"http://patchwork.ozlabs.org/api/1.0/people/1025/?format=json","name":"Florian Westphal","email":"fw@strlen.de"},"delegate":{"id":6139,"url":"http://patchwork.ozlabs.org/api/1.0/users/6139/?format=json","username":"pablo","first_name":"Pablo","last_name":"Neira","email":"pablo@netfilter.org"},"mbox":"http://patchwork.ozlabs.org/project/netfilter-devel/patch/20170828150534.12375-1-fw@strlen.de/mbox/","series":[{"id":189,"url":"http://patchwork.ozlabs.org/api/1.0/series/189/?format=json","date":"2017-08-28T15:05:34","name":"[nft] evaluate: convert expr_rt byteorder when evaluating statment arg","version":1,"mbox":"http://patchwork.ozlabs.org/series/189/mbox/"}],"check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/806626/checks/","tags":{},"headers":{"Return-Path":"<netfilter-devel-owner@vger.kernel.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@bilbo.ozlabs.org","Authentication-Results":"ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=vger.kernel.org\n\t(client-ip=209.132.180.67; helo=vger.kernel.org;\n\tenvelope-from=netfilter-devel-owner@vger.kernel.org;\n\treceiver=<UNKNOWN>)","Received":["from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3xgw7644CBz9sNr\n\tfor <incoming@patchwork.ozlabs.org>;\n\tTue, 29 Aug 2017 01:05:22 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1751579AbdH1PFT (ORCPT <rfc822;incoming@patchwork.ozlabs.org>);\n\tMon, 28 Aug 2017 11:05:19 -0400","from Chamillionaire.breakpoint.cc ([146.0.238.67]:51424 \"EHLO\n\tChamillionaire.breakpoint.cc\" rhost-flags-OK-OK-OK-OK)\n\tby vger.kernel.org with ESMTP id S1751241AbdH1PFS (ORCPT\n\t<rfc822;netfilter-devel@vger.kernel.org>);\n\tMon, 28 Aug 2017 11:05:18 -0400","from fw by Chamillionaire.breakpoint.cc with local (Exim 4.84_2)\n\t(envelope-from <fw@breakpoint.cc>)\n\tid 1dmLYh-0002yB-VC; Mon, 28 Aug 2017 17:02:36 +0200"],"From":"Florian Westphal <fw@strlen.de>","To":"<netfilter-devel@vger.kernel.org>","Cc":"Florian Westphal <fw@strlen.de>","Subject":"[PATCH nft] evaluate: convert expr_rt byteorder when evaluating\n\tstatment arg","Date":"Mon, 28 Aug 2017 17:05:34 +0200","Message-Id":"<20170828150534.12375-1-fw@strlen.de>","X-Mailer":"git-send-email 2.13.0","Sender":"netfilter-devel-owner@vger.kernel.org","Precedence":"bulk","List-ID":"<netfilter-devel.vger.kernel.org>","X-Mailing-List":"netfilter-devel@vger.kernel.org"},"content":"expr_rt might write data in host byte order, so make sure to\nconvert if needed.\n\nThis makes 'tcp option maxseg size rt mtu' actually work, right now such rules\nare no-ops because nft_exthdr never increases the mss.\n\nWhile at it, extend the example to not bother testing non-syn packets.\n\nReported-by: Matteo Croce <technoboy85@gmail.com>\nSigned-off-by: Florian Westphal <fw@strlen.de>\n---\n doc/nft.xml                | 4 ++--\n src/evaluate.c             | 2 ++\n tests/py/inet/rt.t.payload | 1 +\n 3 files changed, 5 insertions(+), 2 deletions(-)","diff":"diff --git a/doc/nft.xml b/doc/nft.xml\nindex 4e2730f698cb..cf9334891cee 100644\n--- a/doc/nft.xml\n+++ b/doc/nft.xml\n@@ -4274,9 +4274,9 @@ ip forward ip dscp set 42\n \t\t\t\t<example>\n \t\t\t\t\t<title>change tcp mss</title>\n \t\t\t\t\t<programlisting>\n-tcp option maxseg size set 1360\n+tcp flags syn tcp option maxseg size set 1360\n # set a size based on route information:\n-tcp option maxseg size set rt mtu\n+tcp flags syn tcp option maxseg size set rt mtu\n \t\t\t\t\t</programlisting>\n \t\t\t\t</example>\n \t\t\t</para>\ndiff --git a/src/evaluate.c b/src/evaluate.c\nindex f21ac1a0ab85..9954d5c59622 100644\n--- a/src/evaluate.c\n+++ b/src/evaluate.c\n@@ -1799,6 +1799,8 @@ static int stmt_evaluate_arg(struct eval_ctx *ctx, struct stmt *stmt,\n \t\treturn stmt_binary_error(ctx, *expr, stmt,\n \t\t\t\t\t \"you cannot reference a set here, \"\n \t\t\t\t\t \"unknown value to use\");\n+\tcase EXPR_RT:\n+\t\treturn byteorder_conversion(ctx, expr, byteorder);\n \tdefault:\n \t\tbreak;\n \t}\ndiff --git a/tests/py/inet/rt.t.payload b/tests/py/inet/rt.t.payload\nindex 2f6265ed640a..928e0095faf5 100644\n--- a/tests/py/inet/rt.t.payload\n+++ b/tests/py/inet/rt.t.payload\n@@ -15,5 +15,6 @@ inet test-inet output\n # tcp option maxseg size set rt mtu\n inet test-inet output\n   [ rt load tcpmss => reg 1 ]\n+  [ byteorder reg 1 = hton(reg 1, 2, 2) ]\n   [ exthdr write tcpopt reg 1 => 2b @ 2 + 2 ]\n \n","prefixes":["nft"]}