From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mogw1039.ocn.ad.jp (mogw1039.ocn.ad.jp [153.149.231.45]) by dpdk.org (Postfix) with ESMTP id 841A91B7EF for ; Thu, 8 Feb 2018 16:17:58 +0100 (CET) Received: from mf-smf-ucb035c1 (mf-smf-ucb035c1.ocn.ad.jp [153.153.66.230]) by mogw1039.ocn.ad.jp (Postfix) with ESMTP id 0F8A91180210; Fri, 9 Feb 2018 00:17:57 +0900 (JST) Received: from ntt.pod01.mv-mta-ucb028 ([153.149.230.162]) by mf-smf-ucb035c1 with ESMTP id jnxVekcNlwTkQjnxVe5z4N; Fri, 09 Feb 2018 00:17:57 +0900 Received: from smtp.ocn.ne.jp ([153.149.227.135]) by ntt.pod01.mv-mta-ucb028 with id 8FHw1x00M2vuoep01FHwnC; Thu, 08 Feb 2018 15:17:56 +0000 Received: from localhost.localdomain (p6533091-ipngn12202marunouchi.tokyo.ocn.ne.jp [118.22.120.91]) by smtp.ocn.ne.jp (Postfix) with ESMTPA; Fri, 9 Feb 2018 00:17:56 +0900 (JST) From: ogawa.yasufumi@lab.ntt.co.jp To: ferruh.yigit@intel.com, spp@dpdk.org Cc: "ogawa.yasufumi@lab.ntt.co.jp" Date: Fri, 9 Feb 2018 00:17:51 +0900 Message-Id: <1518103072-4559-2-git-send-email-ogawa.yasufumi@lab.ntt.co.jp> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1518103072-4559-1-git-send-email-ogawa.yasufumi@lab.ntt.co.jp> References: <1518103072-4559-1-git-send-email-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: Thu, 08 Feb 2018 15:17:58 -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 20eb59f..3796670 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', 'pcap', 'nullpmd'] @@ -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