From patchwork Thu Oct 15 21:28:01 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jarno Rajahalme X-Patchwork-Id: 530915 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from archives.nicira.com (unknown [IPv6:2600:3c00::f03c:91ff:fe6e:bdf7]) by ozlabs.org (Postfix) with ESMTP id CE16014012C for ; Fri, 16 Oct 2015 08:28:28 +1100 (AEDT) Received: from archives.nicira.com (localhost [127.0.0.1]) by archives.nicira.com (Postfix) with ESMTP id 56C6C10B19; Thu, 15 Oct 2015 14:28:27 -0700 (PDT) X-Original-To: dev@openvswitch.org Delivered-To: dev@openvswitch.org Received: from mx1e4.cudamail.com (mx1.cudamail.com [69.90.118.67]) by archives.nicira.com (Postfix) with ESMTPS id 26A7D10B17 for ; Thu, 15 Oct 2015 14:28:26 -0700 (PDT) Received: from bar2.cudamail.com (unknown [192.168.21.12]) by mx1e4.cudamail.com (Postfix) with ESMTPS id 85C061E006F for ; Thu, 15 Oct 2015 15:28:25 -0600 (MDT) X-ASG-Debug-ID: 1444944505-03dc53706d42260001-byXFYA Received: from mx1-pf1.cudamail.com ([192.168.24.1]) by bar2.cudamail.com with ESMTP id q6XCdUwt9SyHS5K1 (version=TLSv1 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Thu, 15 Oct 2015 15:28:25 -0600 (MDT) X-Barracuda-Envelope-From: jrajahalme@nicira.com X-Barracuda-RBL-Trusted-Forwarder: 192.168.24.1 Received: from unknown (HELO mail-lf0-f53.google.com) (209.85.215.53) by mx1-pf1.cudamail.com with ESMTPS (RC4-SHA encrypted); 15 Oct 2015 21:28:24 -0000 Received-SPF: unknown (mx1-pf1.cudamail.com: Multiple SPF records returned) X-Barracuda-Apparent-Source-IP: 209.85.215.53 X-Barracuda-RBL-IP: 209.85.215.53 Received: by lffy185 with SMTP id y185so49837076lff.2 for ; Thu, 15 Oct 2015 14:28:22 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=bafoBMGh4qqO2Av9qCQkmeGEoi4XA4EKumGPHtUFF+4=; b=hKGkaefjKsdUBk0yNiyDf/b1Ggnzer47MCDdz6DUCJITJ37FFzKw1oXw48VHRaTW+c MhVw/ysJNeKheE8H7bGgolH+SnUxR+qOGnGw6ONwrriFluntNL1/U3HvrflGt3Ld6/mV 3JiWB/ZM9nxl4hjoX+WECroDIMptmyMCQ43q8xkh67E2DSCY+uEnEGg0UwajAByDfgsf Wi89ei1DlIudFyiUHyKveG2vbmgrwDKmk6KVppsJRnw5h9HsIMWfrJi1WkrrnQ1AHST5 nsSLjTl8RXD2jzk8KYj5ZQv7xHYA8/7+utK0d+Aqh0JPOTM2i9xhzMxT2v7Pij2C079K U4GA== X-Gm-Message-State: ALoCoQkIPlOjBDCXSBrXu8qwnMihdWjL1i4f7pMCbGLtszR+xMFuL9CVhS07qvfDRyrM+ozSFHaQ X-Received: by 10.194.236.200 with SMTP id uw8mr12556930wjc.126.1444944502312; Thu, 15 Oct 2015 14:28:22 -0700 (PDT) Received: from sc9-mailhost1.vmware.com ([208.91.1.34]) by smtp.gmail.com with ESMTPSA id gt4sm629339wib.21.2015.10.15.14.28.20 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 15 Oct 2015 14:28:21 -0700 (PDT) X-CudaMail-Envelope-Sender: jrajahalme@nicira.com From: Jarno Rajahalme To: dev@openvswitch.org X-CudaMail-Whitelist-To: dev@openvswitch.org X-CudaMail-MID: CM-E1-1014118835 X-CudaMail-DTE: 101515 X-CudaMail-Originating-IP: 209.85.215.53 Date: Thu, 15 Oct 2015 14:28:01 -0700 X-ASG-Orig-Subj: [##CM-E1-1014118835##][PATCH 1/4] Summary: From: Jarno Rajahalme Message-Id: <1444944484-117214-1-git-send-email-jrajahalme@nicira.com> X-Mailer: git-send-email 2.1.4 X-Barracuda-Connect: UNKNOWN[192.168.24.1] X-Barracuda-Start-Time: 1444944505 X-Barracuda-Encrypted: DHE-RSA-AES256-SHA X-Barracuda-URL: https://web.cudamail.com:443/cgi-mod/mark.cgi X-ASG-Whitelist: Header =?UTF-8?B?eFwtY3VkYW1haWxcLXdoaXRlbGlzdFwtdG8=?= X-Virus-Scanned: by bsmtpd at cudamail.com X-Barracuda-BRTS-Status: 1 Subject: [ovs-dev] [PATCH 1/4] Summary: From: Jarno Rajahalme X-BeenThere: dev@openvswitch.org X-Mailman-Version: 2.1.16 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: dev-bounces@openvswitch.org Sender: "dev" ovs-ofctl: Fix replace-flows. The replace-flows test cases tested for incorrect behavior due to the missing initialization of the out_group member of struct ofputil_flow_stats_request. This patch fixes this by properly initializing out_group to OFPG_ANY. Note that replace-flows still does not support multiple tables, but that will be fixed in a later patch in the series. Reported-by: Takashi Yamamoto Signed-off-by: Jarno Rajahalme Acked-by: YAMAMOTO Takashi --- tests/ovs-ofctl.at | 34 +++++++++++++++++++++++++--------- utilities/ovs-ofctl.c | 2 ++ 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/tests/ovs-ofctl.at b/tests/ovs-ofctl.at index 33e67ed..6f03adb 100644 --- a/tests/ovs-ofctl.at +++ b/tests/ovs-ofctl.at @@ -2851,12 +2851,12 @@ dnl Add flows to br0 with importance via OF1.4+. For more details refer "ovs-ofc for i in 1 2 3 4 5 6 7 8; do echo "dl_vlan=$i,importance=$i,actions=drop"; done > add-flows.txt AT_CHECK([ovs-ofctl -O OpenFlow14 add-flows br0 add-flows.txt]) -dnl Replace some flows in the bridge. -for i in 1 3 5 7; do echo "dl_vlan=$i,importance=`expr $i + 10`,actions=drop"; done > replace-flows.txt +dnl Replace the flows in the bridge. +for i in 1 3 5 7; do echo " importance=`expr $i + 10`, dl_vlan=$i actions=drop"; done > replace-flows.txt AT_CHECK([ovs-ofctl -O OpenFlow14 replace-flows br0 replace-flows.txt]) dnl Dump them and compare the dump flows output against the expected output. -for i in 1 2 3 4 5 6 7 8; do if [[ `expr $i % 2` -eq 1 ]]; then importance=`expr $i + 10`; else importance=$i; fi; echo " importance=$importance, dl_vlan=$i actions=drop"; done | sort > expout +cat replace-flows.txt > expout AT_CHECK([ovs-ofctl -O OpenFlow14 dump-flows br0 | ofctl_strip | sed '/OFPST_FLOW/d' | sort], [0], [expout]) @@ -2873,11 +2873,11 @@ for i in 1 2 3 4 5 6 7 8; do echo "dl_vlan=$i,importance=$i,actions=drop"; done AT_CHECK([ovs-ofctl --bundle add-flows br0 add-flows.txt]) dnl Replace some flows in the bridge. -for i in 1 3 5 7; do echo "dl_vlan=$i,importance=`expr $i + 10`,actions=drop"; done > replace-flows.txt +for i in 1 3 5 7; do echo " importance=`expr $i + 10`, dl_vlan=$i actions=drop"; done > replace-flows.txt AT_CHECK([ovs-ofctl --bundle replace-flows br0 replace-flows.txt]) dnl Dump them and compare the dump flows output against the expected output. -for i in 1 2 3 4 5 6 7 8; do if [[ `expr $i % 2` -eq 1 ]]; then importance=`expr $i + 10`; else importance=$i; fi; echo " importance=$importance, dl_vlan=$i actions=drop"; done | sort > expout +cat replace-flows.txt > expout AT_CHECK([ovs-ofctl -O OpenFlow14 dump-flows br0 | ofctl_strip | sed '/OFPST_FLOW/d' | sort], [0], [expout]) @@ -2930,12 +2930,32 @@ vconn|DBG|unix: received: OFPT_HELLO (OF1.4): vconn|DBG|unix: negotiated OpenFlow version 0x05 (we support version 0x06 and earlier, peer supports versions 0x01, 0x05) vconn|DBG|unix: received: OFPST_FLOW request (OF1.4): vconn|DBG|unix: sent (Success): OFPST_FLOW reply (OF1.4): + importance=1, dl_vlan=1 actions=drop + importance=2, dl_vlan=2 actions=drop + importance=3, dl_vlan=3 actions=drop + importance=4, dl_vlan=4 actions=drop + importance=5, dl_vlan=5 actions=drop + importance=6, dl_vlan=6 actions=drop + importance=7, dl_vlan=7 actions=drop + importance=8, dl_vlan=8 actions=drop vconn|DBG|unix: received: OFPT_BUNDLE_CONTROL (OF1.4): bundle_id=0 type=OPEN_REQUEST flags=atomic ordered vconn|DBG|unix: sent (Success): OFPT_BUNDLE_CONTROL (OF1.4): bundle_id=0 type=OPEN_REPLY flags=0 vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4): bundle_id=0 flags=atomic ordered +OFPT_FLOW_MOD (OF1.4): DEL_STRICT table:255 dl_vlan=2 actions=drop +vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4): + bundle_id=0 flags=atomic ordered +OFPT_FLOW_MOD (OF1.4): DEL_STRICT table:255 dl_vlan=4 actions=drop +vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4): + bundle_id=0 flags=atomic ordered +OFPT_FLOW_MOD (OF1.4): DEL_STRICT table:255 dl_vlan=6 actions=drop +vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4): + bundle_id=0 flags=atomic ordered +OFPT_FLOW_MOD (OF1.4): DEL_STRICT table:255 dl_vlan=8 actions=drop +vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4): + bundle_id=0 flags=atomic ordered OFPT_FLOW_MOD (OF1.4): ADD dl_vlan=1 importance:11 actions=drop vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4): bundle_id=0 flags=atomic ordered @@ -2957,10 +2977,6 @@ vconn|DBG|unix: received: OFPT_HELLO (OF1.4): vconn|DBG|unix: negotiated OpenFlow version 0x05 (we support version 0x06 and earlier, peer supports version 0x05) vconn|DBG|unix: received: OFPST_FLOW request (OF1.4): vconn|DBG|unix: sent (Success): OFPST_FLOW reply (OF1.4): - importance=2, dl_vlan=2 actions=drop - importance=4, dl_vlan=4 actions=drop - importance=6, dl_vlan=6 actions=drop - importance=8, dl_vlan=8 actions=drop importance=11, dl_vlan=1 actions=drop importance=13, dl_vlan=3 actions=drop importance=15, dl_vlan=5 actions=drop diff --git a/utilities/ovs-ofctl.c b/utilities/ovs-ofctl.c index 0c315c1..fbc9da4 100644 --- a/utilities/ovs-ofctl.c +++ b/utilities/ovs-ofctl.c @@ -2725,6 +2725,7 @@ read_flows_from_switch(struct vconn *vconn, fsr.aggregate = false; match_init_catchall(&fsr.match); fsr.out_port = OFPP_ANY; + fsr.out_group = OFPG_ANY; fsr.table_id = 0xff; fsr.cookie = fsr.cookie_mask = htonll(0); request = ofputil_encode_flow_stats_request(&fsr, protocol); @@ -2773,6 +2774,7 @@ fte_make_flow_mod(const struct fte *fte, int index, uint16_t command, fm.importance = version->importance; fm.buffer_id = UINT32_MAX; fm.out_port = OFPP_ANY; + fm.out_group = OFPG_ANY; fm.flags = version->flags; if (command == OFPFC_ADD || command == OFPFC_MODIFY || command == OFPFC_MODIFY_STRICT) {