Update the NSH protocol header fields 28/9028/3
authorFangyin Hu <fangyinx.hu@intel.com>
Thu, 26 Oct 2017 04:47:04 +0000 (21:47 -0700)
committerTibor Frank <tifrank@cisco.com>
Thu, 26 Oct 2017 06:01:43 +0000 (06:01 +0000)
Fix the NSH SFC functional test cases failed issues.

Change-Id: I5d49b50a8c0958dc8db4bc10d6852f0cf4e77962
Signed-off-by: Fangyin Hu <fangyinx.hu@intel.com>
resources/libraries/python/SFC/SFCConstants.py
resources/libraries/python/SFC/TunnelProtocol.py
resources/libraries/python/SFC/VerifyPacket.py

index 33391a1..b9eef22 100644 (file)
@@ -31,7 +31,6 @@ class SFCConstants(object):
     VxLANGPE_FLAGS = 0xc
     VxLANGPE_NEXT_PROTOCOL = 0x4
     VxLANGPE_DEFAULT_VNI = 9
-    NSH_FLAGS = 0x0
     NSH_HEADER_LENGTH = 0x6
     NSH_DEFAULT_MDTYPE = 0x1
     NSH_NEXT_PROTOCOL = 0x3
index 4b4377c..3248cf9 100644 (file)
@@ -35,7 +35,9 @@ class VxLANGPE(Packet):
 class NSH(Packet):
     """Define the NSH protocol for the packet analysis."""
     name = "nsh"
-    fields_desc = [XBitField("flags", 0x0, 10), XBitField("length", 0x6, 6),
-                   XByteField("MDtype", 0x1), XByteField("nextproto", 0x3),
+    fields_desc = [XBitField("Version", 0x0, 2), XBitField("OAM", 0x0, 1),
+                   XBitField("Unassigned", 0x0, 1), XBitField("TTL", 0x0, 6),
+                   XBitField("length", 0x6, 6), XBitField("Unassigned", 0x0, 4),
+                   XBitField("MDtype", 0x1, 4), XByteField("nextproto", 0x3),
                    IntField("nsp_nsi", 0), IntField("c1", 0),
                    IntField("c2", 0), IntField("c3", 0), IntField("c4", 0)]
index 1893010..84eb6aa 100644 (file)
@@ -106,9 +106,14 @@ class VerifyPacket(object):
 
         # get the NSH packet and check it
         nsh_pkt = NSH(payload_data[8:32])
-        if nsh_pkt.flags != sfccon.NSH_FLAGS:
-            raise RuntimeError("Unexpected NSH flags: {0}".
-                               format(nsh_pkt.flags))
+        if nsh_pkt.Version != 0:
+            raise RuntimeError("Unexpected NSH version: {0}".
+                               format(nsh_pkt.Version))
+
+        print type(nsh_pkt.OAM)
+        if nsh_pkt.OAM != 0 or nsh_pkt.OAM != 1:
+            raise RuntimeError("Unexpected NSH OAM: {0}".
+                               format(nsh_pkt.OAM))
 
         if nsh_pkt.length != sfccon.NSH_HEADER_LENGTH:
             raise RuntimeError("NSH length {0} incorrect".

©2016 FD.io a Linux Foundation Collaborative Project. All Rights Reserved.
Linux Foundation is a registered trademark of The Linux Foundation. Linux is a registered trademark of Linus Torvalds.
Please see our privacy policy and terms of use.