From mboxrd@z Thu Jan 1 00:00:00 1970 From: Adrien Mazarguil Subject: Re: [PATCH 2/3] app/testpmd: add actions to modify TCP header fields Date: Fri, 29 Mar 2019 14:58:57 +0100 Message-ID: <20190329135857.GI4889@6wind.com> References: <1553177917-43297-1-git-send-email-dekelp@mellanox.com> <1553177917-43297-3-git-send-email-dekelp@mellanox.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: wenzhuo.lu@intel.com, jingjing.wu@intel.com, bernard.iremonger@intel.com, yskoh@mellanox.com, shahafs@mellanox.com, dev@dpdk.org, orika@mellanox.com To: Dekel Peled Return-path: Received: from mail-wm1-f65.google.com (mail-wm1-f65.google.com [209.85.128.65]) by dpdk.org (Postfix) with ESMTP id 46C984C80 for ; Fri, 29 Mar 2019 14:58:59 +0100 (CET) Received: by mail-wm1-f65.google.com with SMTP id q16so2629174wmj.3 for ; Fri, 29 Mar 2019 06:58:59 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1553177917-43297-3-git-send-email-dekelp@mellanox.com> List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On Thu, Mar 21, 2019 at 04:18:36PM +0200, Dekel Peled wrote: > Add actions: > - INC_TCP_SEQ - Increase sequence number in the outermost TCP header. > - DEC_TCP_SEQ - Decrease sequence number in the outermost TCP header. > - INC_TCP_ACK - Increase acknowledgment number in the outermost TCP > header. > - DEC_TCP_ACK - Decrease acknowledgment number in the outermost TCP > header. > > Original work by Xiaoyu Min. > > Signed-off-by: Dekel Peled I suggest to merge this patch into the previous one. No reason for testpmd to be updated separately. Some comments below. > --- > app/test-pmd/cmdline_flow.c | 100 ++++++++++++++++++++++++++++ > doc/guides/testpmd_app_ug/testpmd_funcs.rst | 16 +++++ > 2 files changed, 116 insertions(+) > > diff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c > index 36659a6..5cd4ceb 100644 > --- a/app/test-pmd/cmdline_flow.c > +++ b/app/test-pmd/cmdline_flow.c > @@ -271,6 +271,14 @@ enum index { > ACTION_SET_MAC_SRC_MAC_SRC, > ACTION_SET_MAC_DST, > ACTION_SET_MAC_DST_MAC_DST, > + ACTION_INC_TCP_SEQ, > + ACTION_INC_TCP_SEQ_VALUE, > + ACTION_DEC_TCP_SEQ, > + ACTION_DEC_TCP_SEQ_VALUE, > + ACTION_INC_TCP_ACK, > + ACTION_INC_TCP_ACK_VALUE, > + ACTION_DEC_TCP_ACK, > + ACTION_DEC_TCP_ACK_VALUE, > }; > > /** Maximum size for pattern in struct rte_flow_item_raw. */ > @@ -884,6 +892,10 @@ struct parse_action_priv { > ACTION_SET_TTL, > ACTION_SET_MAC_SRC, > ACTION_SET_MAC_DST, > + ACTION_INC_TCP_SEQ, > + ACTION_DEC_TCP_SEQ, > + ACTION_INC_TCP_ACK, > + ACTION_DEC_TCP_ACK, > ZERO, > }; > > @@ -1046,6 +1058,30 @@ struct parse_action_priv { > ZERO, > }; > > +static const enum index action_inc_tcp_seq[] = { > + ACTION_INC_TCP_SEQ_VALUE, > + ACTION_NEXT, > + ZERO, > +}; > + > +static const enum index action_dec_tcp_seq[] = { > + ACTION_DEC_TCP_SEQ_VALUE, > + ACTION_NEXT, > + ZERO, > +}; > + > +static const enum index action_inc_tcp_ack[] = { > + ACTION_INC_TCP_ACK_VALUE, > + ACTION_NEXT, > + ZERO, > +}; > + > +static const enum index action_dec_tcp_ack[] = { > + ACTION_DEC_TCP_ACK_VALUE, > + ACTION_NEXT, > + ZERO, > +}; > + > static int parse_init(struct context *, const struct token *, > const char *, unsigned int, > void *, unsigned int); > @@ -2843,6 +2879,70 @@ static int comp_vc_action_rss_queue(struct context *, const struct token *, > (struct rte_flow_action_set_mac, mac_addr)), > .call = parse_vc_conf, > }, > + [ACTION_INC_TCP_SEQ] = { > + .name = "inc_tcp_seq", > + .help = "increase TCP sequence number", > + .priv = PRIV_ACTION(INC_TCP_SEQ, > + sizeof(struct rte_flow_action_modify_tcp_seq)), > + .next = NEXT(action_inc_tcp_seq), > + .call = parse_vc, > + }, > + [ACTION_INC_TCP_SEQ_VALUE] = { > + .name = "value", > + .help = "the value to increase TCP sequence number by", > + .next = NEXT(action_inc_tcp_seq, NEXT_ENTRY(UNSIGNED)), > + .args = ARGS(ARGS_ENTRY_HTON > + (struct rte_flow_action_modify_tcp_seq, value)), You may need to remove HTON here depending on the chosen endian for the API, see my comments on previous patch. > + .call = parse_vc_conf, > + }, > + [ACTION_DEC_TCP_SEQ] = { > + .name = "dec_tcp_seq", > + .help = "decrease TCP sequence number", > + .priv = PRIV_ACTION(DEC_TCP_SEQ, > + sizeof(struct rte_flow_action_modify_tcp_seq)), > + .next = NEXT(action_dec_tcp_seq), > + .call = parse_vc, > + }, > + [ACTION_DEC_TCP_SEQ_VALUE] = { > + .name = "value", > + .help = "the value to decrease TCP sequence number by", > + .next = NEXT(action_dec_tcp_seq, NEXT_ENTRY(UNSIGNED)), > + .args = ARGS(ARGS_ENTRY_HTON > + (struct rte_flow_action_modify_tcp_seq, value)), Same here. > + .call = parse_vc_conf, > + }, > + [ACTION_INC_TCP_ACK] = { > + .name = "inc_tcp_ack", > + .help = "increase TCP acknowledgment number", > + .priv = PRIV_ACTION(INC_TCP_ACK, > + sizeof(struct rte_flow_action_modify_tcp_ack)), > + .next = NEXT(action_inc_tcp_ack), > + .call = parse_vc, > + }, > + [ACTION_INC_TCP_ACK_VALUE] = { > + .name = "value", > + .help = "the value to increase TCP acknowledgment number by", > + .next = NEXT(action_inc_tcp_ack, NEXT_ENTRY(UNSIGNED)), > + .args = ARGS(ARGS_ENTRY_HTON > + (struct rte_flow_action_modify_tcp_ack, value)), Ditto. > + .call = parse_vc_conf, > + }, > + [ACTION_DEC_TCP_ACK] = { > + .name = "dec_tcp_ack", > + .help = "decrease TCP acknowledgment number", > + .priv = PRIV_ACTION(DEC_TCP_ACK, > + sizeof(struct rte_flow_action_modify_tcp_ack)), > + .next = NEXT(action_dec_tcp_ack), > + .call = parse_vc, > + }, > + [ACTION_DEC_TCP_ACK_VALUE] = { > + .name = "value", > + .help = "the value to decrease TCP acknowledgment number by", > + .next = NEXT(action_dec_tcp_ack, NEXT_ENTRY(UNSIGNED)), > + .args = ARGS(ARGS_ENTRY_HTON > + (struct rte_flow_action_modify_tcp_ack, value)), Ditto. > + .call = parse_vc_conf, > + }, > }; > > /** Remove and return last entry from argument stack. */ > diff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst b/doc/guides/testpmd_app_ug/testpmd_funcs.rst > index 1a12da4..c6f8b2c 100644 > --- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst > +++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst > @@ -3961,6 +3961,22 @@ This section lists supported actions and their attributes, if any. > > - ``mac_addr {MAC-48}``: new destination MAC address > > +- ``inc_tcp_seq``: Increase sequence number in the outermost TCP header > + > + - ``value {unsigned}``: Value to increase TCP sequence number by > + > +- ``dec_tcp_seq``: Decrease sequence number in the outermost TCP header > + > + - ``value {unsigned}``: Value to decrease TCP sequence number by > + > +- ``inc_tcp_ack``: Increase acknowledgment number in the outermost TCP header > + > + - ``value {unsigned}``: Value to increase TCP acknowledgment number by > + > +- ``dec_tcp_ack``: Decrease acknowledgment number in the outermost TCP header > + > + - ``value {unsigned}``: Value to decrease TCP acknowledgment number by Please add missing "." to each line. > + > Destroying flow rules > ~~~~~~~~~~~~~~~~~~~~~ > > -- > 1.8.3.1 > -- Adrien Mazarguil 6WIND