summaryrefslogtreecommitdiffstats
path: root/scripts/external_libs/scapy-2.3.1/python2/scapy/contrib/chdlc.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/external_libs/scapy-2.3.1/python2/scapy/contrib/chdlc.py')
-rw-r--r--scripts/external_libs/scapy-2.3.1/python2/scapy/contrib/chdlc.py42
1 files changed, 42 insertions, 0 deletions
diff --git a/scripts/external_libs/scapy-2.3.1/python2/scapy/contrib/chdlc.py b/scripts/external_libs/scapy-2.3.1/python2/scapy/contrib/chdlc.py
new file mode 100644
index 00000000..6e483762
--- /dev/null
+++ b/scripts/external_libs/scapy-2.3.1/python2/scapy/contrib/chdlc.py
@@ -0,0 +1,42 @@
+# http://trac.secdev.org/scapy/ticket/88
+
+# scapy.contrib.description = Cisco HDLC and SLARP
+# scapy.contrib.status = loads
+
+# This layer is based on information from http://www.nethelp.no/net/cisco-hdlc.txt
+
+from scapy.packet import *
+from scapy.fields import *
+from scapy.layers.l2 import *
+from scapy.layers.inet import *
+from scapy.layers.inet6 import *
+
+class CHDLC(Packet):
+ name = "Cisco HDLC"
+ fields_desc = [ ByteEnumField("address", 0x0f, {0x0f : "unicast", 0x8f :"multicast"}),
+ ByteField("control", 0),
+ XShortField("proto", 0x0800)]
+
+class SLARP(Packet):
+ name = "SLARP"
+ fields_desc = [ IntEnumField("type", 2, {0 : "request", 1 : "reply", 2 :"line keepalive"}),
+ ConditionalField(IPField("address", "192.168.0.1"),
+ lambda pkt : pkt.type == 0 or pkt.type == 1),
+ ConditionalField(IPField("mask", "255.255.255.0"),
+ lambda pkt : pkt.type == 0 or pkt.type == 1),
+ ConditionalField(XShortField("unused", 0),
+ lambda pkt : pkt.type == 0 or pkt.type == 1),
+ ConditionalField(IntField("mysequence", 0),
+ lambda pkt : pkt.type == 2),
+ ConditionalField(IntField("yoursequence", 0),
+ lambda pkt : pkt.type == 2),
+ ConditionalField(XShortField("reliability", 0xffff),
+ lambda pkt : pkt.type == 2)]
+
+bind_layers( CHDLC, Dot3, proto=0x6558)
+bind_layers( CHDLC, IP, proto=0x800)
+bind_layers( CHDLC, IPv6, proto=0x86dd)
+bind_layers( CHDLC, SLARP, proto=0x8035)
+bind_layers( CHDLC, STP, proto=0x4242)
+
+conf.l2types.register(104, CHDLC)