From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mogw1123.ocn.ad.jp (mogw1123.ocn.ad.jp [153.149.229.24]) by dpdk.org (Postfix) with ESMTP id 4B6771B34D for ; Mon, 29 Jan 2018 13:46:32 +0100 (CET) Received: from mf-smf-ucb010.ocn.ad.jp (mf-smf-ucb010.ocn.ad.jp [153.149.227.70]) by mogw1123.ocn.ad.jp (Postfix) with ESMTP id 71FD5118002A; Mon, 29 Jan 2018 21:46:30 +0900 (JST) Received: from mf-smf-ucb010.ocn.ad.jp (mf-smf-ucb010 [153.149.227.70]) by mf-smf-ucb010.ocn.ad.jp (Postfix) with ESMTP id 572BA1206F7; Mon, 29 Jan 2018 21:46:30 +0900 (JST) Received: from ntt.pod01.mv-mta-ucb026 (mv-mta-ucb026.ocn.ad.jp [153.149.142.100]) by mf-smf-ucb010.ocn.ad.jp (Switch-3.3.4/Switch-3.3.4) with ESMTP id w0TCkTgt029618; Mon, 29 Jan 2018 21:46:30 +0900 Received: from smtp.ocn.ne.jp ([153.149.227.167]) by ntt.pod01.mv-mta-ucb026 with id 4CmV1x00P3dLKTM01CmVdh; Mon, 29 Jan 2018 12:46:29 +0000 Received: from localhost.localdomain (sp49-97-108-252.msc.spmode.ne.jp [49.97.108.252]) by smtp.ocn.ne.jp (Postfix) with ESMTPA; Mon, 29 Jan 2018 21:46:29 +0900 (JST) From: ogawa.yasufumi@lab.ntt.co.jp To: spp@dpdk.org, ferruh.yigit@intel.com, geminoa@juno.ocn.ne.jp Cc: ogawa.yasufumi@lab.ntt.co.jp Date: Mon, 29 Jan 2018 21:46:50 +0900 Message-Id: <20180129122506.75403-2-ogawa.yasufumi@lab.ntt.co.jp> X-Mailer: git-send-email 2.13.1 X-Account-Key: account3 X-UIDL: 8763.CdkHldsVnf1ixOXTj9Or4ZJf+sY= X-Mozilla-Status: 0000 Received: from mzcmta020.ocn.ad.jp (LHLO mzcmta020.ocn.ad.jp) (180.8.111.5) by mzcstore251.ocn.ad.jp with LMTP; Mon, 29 Jan 2018 21:24:46 +0900 (JST) Received: from mfgw711.ocn.ad.jp (mfgw711.ocn.ad.jp [153.153.63.100]) by mzcmta020.ocn.ad.jp (Postfix) with ESMTP id 8E453E18476 for ; Mon, 29 Jan 2018 21:24:46 +0900 (JST) Received-SPF: softfail (mf-ofc-ucb071: domain of transitioning dose not designate client-ip as permitted sender) client-ip=153.149.227.35; envelope-from=; helo=mogw0929.ocn.ad.jp; Authentication-Results: mf-ofc-ucb071; spf=softfail smtp.mailfrom=ogawa.yasufumi@lab.ntt.co.jp Received: from mogw0929.ocn.ad.jp (mogw0929.ocn.ad.jp [153.149.227.35]) by mfgw711.ocn.ad.jp (Postfix) with ESMTP id 6A0DC50027D for ; Mon, 29 Jan 2018 21:24:46 +0900 (JST) Received: from mf-smf-ucb011.ocn.ad.jp (mf-smf-ucb011.ocn.ad.jp [153.149.228.228]) by mogw0929.ocn.ad.jp (Postfix) with ESMTP id 5C5D0C8023B; Mon, 29 Jan 2018 21:24:46 +0900 (JST) Received: from mf-smf-ucb011.ocn.ad.jp (mf-smf-ucb011 [153.149.228.228]) by mf-smf-ucb011.ocn.ad.jp (Postfix) with ESMTP id 41FE490022E; Mon, 29 Jan 2018 21:24:46 +0900 (JST) Received: from ntt.pod01.mv-mta-ucb022 (mv-mta-ucb022.ocn.ad.jp [153.149.142.85]) by mf-smf-ucb011.ocn.ad.jp (Switch-3.3.4/Switch-3.3.4) with ESMTP id w0TCOgPo052638; Mon, 29 Jan 2018 21:24:46 +0900 Received: from smtp.ocn.ne.jp ([153.149.227.133]) by ntt.pod01.mv-mta-ucb022 with id 4CQl1x00C2tKTyH01CQlc7; Mon, 29 Jan 2018 12:24:45 +0000 Received: from localhost.localdomain (sp49-97-108-252.msc.spmode.ne.jp [49.97.108.252]) by smtp.ocn.ne.jp (Postfix) with ESMTPA; Mon, 29 Jan 2018 21:24:45 +0900 (JST) X-Mailer: git-send-email 2.13.1 In-Reply-To: <20180129122506.75403-1-ogawa.yasufumi@lab.ntt.co.jp> References: <20180129122506.75403-1-ogawa.yasufumi@lab.ntt.co.jp> Subject: [spp] [PATCH 2/3] spp: add validation for patch command X-BeenThere: spp@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Soft Patch Panel List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 29 Jan 2018 12:46:32 -0000 From: ogawa.yasufumi@lab.ntt.co.jp From: Yasufumi Ogawa To support patch command with port ID and resource ID, add validation for format of ID. 'is_patched_ids_valid' method is for checking given IDs are valid or not. Signed-off-by: Yasufumi Ogawa --- src/spp.py | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/spp.py b/src/spp.py index dda1452..e7ad43b 100755 --- a/src/spp.py +++ b/src/spp.py @@ -358,6 +358,8 @@ class Shell(cmd.Cmd): CMD_NOTREADY = "NOTREADY" CMD_ERROR = "ERROR" + PORT_TYPES = ['phy', 'ring', 'vhost'] + PRI_CMDS = ['status', 'exit', 'clear'] SEC_CMDS = ['status', 'exit', 'forward', 'stop', 'add', 'patch', 'del'] SEC_SUBCMDS = ['vhost', 'ring'] @@ -427,6 +429,25 @@ class Shell(cmd.Cmd): print(message) return self.CMD_NOTREADY, message + def is_patched_ids_valid(self, id1, id2, delim=':'): + """Check if port IDs are valid + + Supported format is port ID of integer or resource ID such as + 'phy:0' or 'ring:1'. Default delimiter ':' can be overwritten + by giving 'delim' option. + """ + + if str.isdigit(id1) and str.isdigit(id2): + return True + else: + ptn = r"\w+\%s\d+" % delim # Match "phy:0" or "ring:1" or so + if re.match(ptn, id1) and re.match(ptn, id2): + pt1 = id1.split(delim)[0] + pt2 = id2.split(delim)[0] + if (pt1 in self.PORT_TYPES) and (pt2 in self.PORT_TYPES): + return True + return False + def check_sec_cmds(self, cmds): """Validate secondary commands before sending""" @@ -452,7 +473,7 @@ class Shell(cmd.Cmd): if str.isdigit(cmdlist[2]): valid = 1 elif cmdlist[0] == 'patch': - if str.isdigit(cmdlist[1]) and str.isdigit(cmdlist[2]): + if self.is_patched_ids_valid(cmdlist[1], cmdlist[2]): valid = 1 return valid -- 2.7.4