summaryrefslogtreecommitdiffstats
path: root/scripts/external_libs/scapy-2.3.1/scapy/contrib/ripng.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/external_libs/scapy-2.3.1/scapy/contrib/ripng.py')
-rw-r--r--scripts/external_libs/scapy-2.3.1/scapy/contrib/ripng.py41
1 files changed, 41 insertions, 0 deletions
diff --git a/scripts/external_libs/scapy-2.3.1/scapy/contrib/ripng.py b/scripts/external_libs/scapy-2.3.1/scapy/contrib/ripng.py
new file mode 100644
index 00000000..47e17bc4
--- /dev/null
+++ b/scripts/external_libs/scapy-2.3.1/scapy/contrib/ripng.py
@@ -0,0 +1,41 @@
+#!/usr/bin/env python
+
+# http://trac.secdev.org/scapy/ticket/301
+
+# scapy.contrib.description = RIPng
+# scapy.contrib.status = loads
+
+from scapy.packet import *
+from scapy.fields import *
+from scapy.layers.inet import UDP
+from scapy.layers.inet6 import *
+
+class RIPng(Packet):
+ name = "RIPng header"
+ fields_desc = [
+ ByteEnumField("cmd", 1, {1 : "req", 2 : "resp"}),
+ ByteField("ver", 1),
+ ShortField("null", 0),
+ ]
+
+class RIPngEntry(Packet):
+ name = "RIPng entry"
+ fields_desc = [
+ ConditionalField(IP6Field("prefix", "::"),
+ lambda pkt: pkt.metric != 255),
+ ConditionalField(IP6Field("nexthop", "::"),
+ lambda pkt: pkt.metric == 255),
+ ShortField("routetag", 0),
+ ByteField("prefixlen", 0),
+ ByteEnumField("metric", 1, {16 : "Unreach",
+ 255 : "next-hop entry"})
+ ]
+
+bind_layers(UDP, RIPng, sport=521, dport=521)
+bind_layers(RIPng, RIPngEntry)
+bind_layers(RIPngEntry, RIPngEntry)
+
+if __name__ == "__main__":
+ from scapy.main import interact
+ interact(mydict=globals(), mybanner="RIPng")
+