fix scapy_service ARP issue and add more layers in the service
authorHanoh Haim <[email protected]>
Thu, 27 Oct 2016 08:43:17 +0000 (11:43 +0300)
committerHanoh Haim <[email protected]>
Thu, 27 Oct 2016 08:43:45 +0000 (11:43 +0300)
Signed-off-by: Hanoh Haim <[email protected]>
scripts/automation/trex_control_plane/stl/services/scapy_server/scapy_service.py
scripts/external_libs/scapy-2.3.1/python2/scapy/fields.py
scripts/external_libs/scapy-2.3.1/python2/scapy/layers/l2.py
scripts/external_libs/scapy-2.3.1/python3/scapy/fields.py
scripts/external_libs/scapy-2.3.1/python3/scapy/layers/l2.py

index 1ad6843..9125759 100755 (executable)
@@ -12,8 +12,22 @@ import numbers
 import inspect
 import json
 from pprint import pprint
-#from scapy.layers.dns import DNS
-#from scapy.contrib.mpls import MPLS
+
+# add some layers as an example
+# need to test more 
+from scapy.layers.dns import *
+from scapy.layers.dhcp import *
+from scapy.layers.ipsec import *
+from scapy.layers.netflow import *
+from scapy.layers.sctp import *
+from scapy.layers.tftp import *
+
+from scapy.contrib.mpls import *
+from scapy.contrib.igmp import *
+from scapy.contrib.igmpv3 import *
+
+
+
 
 #additional_stl_udp_pkts = os.path.abspath(os.path.join(os.pardir,os.pardir,os.pardir,os.pardir, os.pardir,'stl'))
 #sys.path.append(additional_stl_udp_pkts)
index 8bb8c97..df85875 100644 (file)
@@ -242,9 +242,7 @@ class SourceIPField(IPField):
         self.dstname = dstname
     def i2m(self, pkt, x):
         if x is None:
-            iff,x,gw = pkt.route()
-            if x is None:
-                x = "0.0.0.0"
+            x="16.0.0.1"
         return IPField.i2m(self, pkt, x)
     def i2h(self, pkt, x):
         if x is None:
index 3f80ed7..bb09304 100644 (file)
@@ -84,49 +84,14 @@ def getmacbyip(ip, chainCC=0):
 class DestMACField(MACField):
     def __init__(self, name):
         MACField.__init__(self, name, None)
-    def i2h(self, pkt, x):
-        if x is None:
-            x = conf.neighbor.resolve(pkt,pkt.payload)
-            if x is None:
-                x = "ff:ff:ff:ff:ff:ff"
-                warning("Mac address to reach destination not found. Using broadcast.")
-        return MACField.i2h(self, pkt, x)
-    def i2m(self, pkt, x):
-        return MACField.i2m(self, pkt, self.i2h(pkt, x))
         
 class SourceMACField(MACField):
     def __init__(self, name):
         MACField.__init__(self, name, None)
-    def i2h(self, pkt, x):
-        if x is None:
-            iff,a,gw = pkt.payload.route()
-            if iff:
-                try:
-                    x = get_if_hwaddr(iff)
-                except:
-                    pass
-            if x is None:
-                x = "00:00:00:00:00:00"
-        return MACField.i2h(self, pkt, x)
-    def i2m(self, pkt, x):
-        return MACField.i2m(self, pkt, self.i2h(pkt, x))
         
 class ARPSourceMACField(MACField):
     def __init__(self, name):
         MACField.__init__(self, name, None)
-    def i2h(self, pkt, x):
-        if x is None:
-            iff,a,gw = pkt.route()
-            if iff:
-                try:
-                    x = get_if_hwaddr(iff)
-                except:
-                    pass
-            if x is None:
-                x = "00:00:00:00:00:00"
-        return MACField.i2h(self, pkt, x)
-    def i2m(self, pkt, x):
-        return MACField.i2m(self, pkt, self.i2h(pkt, x))
 
 
 
index 5482ce8..66ccd55 100644 (file)
@@ -250,9 +250,7 @@ class SourceIPField(IPField):
         self.dstname = dstname
     def i2m(self, pkt, x):
         if x is None:
-            iff,x,gw = pkt.route()
-            if x is None:
-                x = "0.0.0.0"
+            x="16.0.0.1"
         return IPField.i2m(self, pkt, x)
     def i2h(self, pkt, x):
         if x is None:
index 0d0a1c7..3a57f9c 100644 (file)
@@ -84,49 +84,14 @@ def getmacbyip(ip, chainCC=0):
 class DestMACField(MACField):
     def __init__(self, name):
         MACField.__init__(self, name, None)
-    def i2h(self, pkt, x):
-        if x is None:
-            x = conf.neighbor.resolve(pkt,pkt.payload)
-            if x is None:
-                x = "ff:ff:ff:ff:ff:ff"
-                warning("Mac address to reach destination not found. Using broadcast.")
-        return MACField.i2h(self, pkt, x)
-    def i2m(self, pkt, x):
-        return MACField.i2m(self, pkt, self.i2h(pkt, x))
         
 class SourceMACField(MACField):
     def __init__(self, name):
         MACField.__init__(self, name, None)
-    def i2h(self, pkt, x):
-        if x is None:
-            iff,a,gw = pkt.payload.route()
-            if iff:
-                try:
-                    x = get_if_hwaddr(iff)
-                except:
-                    pass
-            if x is None:
-                x = "00:00:00:00:00:00"
-        return MACField.i2h(self, pkt, x)
-    def i2m(self, pkt, x):
-        return MACField.i2m(self, pkt, self.i2h(pkt, x))
         
 class ARPSourceMACField(MACField):
     def __init__(self, name):
         MACField.__init__(self, name, None)
-    def i2h(self, pkt, x):
-        if x is None:
-            iff,a,gw = pkt.route()
-            if iff:
-                try:
-                    x = get_if_hwaddr(iff)
-                except:
-                    pass
-            if x is None:
-                x = "00:00:00:00:00:00"
-        return MACField.i2h(self, pkt, x)
-    def i2m(self, pkt, x):
-        return MACField.i2m(self, pkt, self.i2h(pkt, x))