From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 226E9A3160 for ; Fri, 11 Oct 2019 09:50:09 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id B19AE1E957; Fri, 11 Oct 2019 09:50:08 +0200 (CEST) Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by dpdk.org (Postfix) with ESMTP id 747D71E92B for ; Fri, 11 Oct 2019 09:50:06 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga006.jf.intel.com ([10.7.209.51]) by orsmga104.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 11 Oct 2019 00:50:05 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.67,283,1566889200"; d="scan'208";a="198628062" Received: from dpdk-lihong-ub1604.sh.intel.com ([10.67.118.203]) by orsmga006.jf.intel.com with ESMTP; 11 Oct 2019 00:50:04 -0700 From: lihong To: dts@dpdk.org Cc: lihong Date: Fri, 11 Oct 2019 08:25:04 +0800 Message-Id: <1570753506-1810-1-git-send-email-lihongx.ma@intel.com> X-Mailer: git-send-email 2.7.4 Subject: [dts] [PATCH V1 1/3][nsh] framwork/packet: add support of mpls and nsh X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: test suite reviews and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dts-bounces@dpdk.org Sender: "dts" Signed-off-by: lihong --- framework/packet.py | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/framework/packet.py b/framework/packet.py index 502d85c..84ab0f8 100755 --- a/framework/packet.py +++ b/framework/packet.py @@ -69,6 +69,8 @@ from vxlan import VXLAN from nvgre import NVGRE, IPPROTO_NVGRE from lldp import LLDP, LLDPManagementAddress from Dot1BR import Dot1BR +from nsh import NSH +from mpls import MPLS # get tester logger from logger import getLogger @@ -81,7 +83,7 @@ from utils import get_backtrace_object PACKETGEN = "scapy" LayersTypes = { - "L2": ['ether', 'vlan', 'etag', '1588', 'arp', 'lldp'], + "L2": ['ether', 'vlan', 'etag', '1588', 'arp', 'lldp', 'mpls', 'nsh'], # ipv4_ext_unknown, ipv6_ext_unknown "L3": ['ipv4', 'ipv4ihl', 'ipv6', 'ipv4_ext', 'ipv6_ext', 'ipv6_ext2', 'ipv6_frag'], "L4": ['tcp', 'udp', 'frag', 'sctp', 'icmp', 'nofrag'], @@ -124,6 +126,8 @@ class scapy(object): 'gre': GRE(), 'raw': Raw(), 'vxlan': VXLAN(), + 'nsh': NSH(), + 'mpls': MPLS(), 'inner_mac': Ether(), 'inner_vlan': Dot1Q(), @@ -328,6 +332,30 @@ class scapy(object): def vxlan(self, pkt_layer, vni=0): pkt_layer.vni = vni + def nsh(self, pkt_layer, ver=0, oam=0, critical=0, reserved=0, len=0, mdtype=1, nextproto=3, + nsp=0x0, nsi=1, npc= 0x0, nsc= 0x0, spc= 0x0, ssc= 0x0): + pkt_layer.Ver = ver + pkt_layer.OAM = oam + pkt_layer.Critical = critical + pkt_layer.Reserved = reserved + if len != 0: + pkt_layer.Len = len + pkt_layer.MDType = mdtype + pkt_layer.NextProto = nextproto + pkt_layer.NSP = nsp + pkt_layer.NSI = nsi + if mdtype == 1: + pkt_layer.NPC = npc + pkt_layer.NSC = nsc + pkt_layer.SPC = spc + pkt_layer.SSC = ssc + + def mpls(self, pkt_layer, label=0, cos=0, s=0, ttl=64): + pkt_layer.label = label + pkt_layer.cos = cos + pkt_layer.s = s + pkt_layer.ttl = ttl + def read_pcap(self, file): pcap_pkts = [] try: @@ -555,6 +583,8 @@ class Packet(object): 'GRE': 'gre', 'VXLAN': 'vxlan', 'PKT': 'raw', + 'MPLS': 'mpls', + 'NSH': 'nsh', } layers = self.pkt_type.split('_') @@ -674,6 +704,12 @@ class Packet(object): def _config_layer_vxlan(self, pkt_layer, config): return self.pktgen.vxlan(pkt_layer, **config) + def _config_layer_mpls(self, pkt_layer, config): + return self.pktgen.mpls(pkt_layer, **config) + + def _config_layer_nsh(self, pkt_layer, config): + return self.pktgen.nsh(pkt_layer, **config) + def strip_layer_element(self, layer, element): """ Strip packet layer elements -- 2.7.4