summaryrefslogtreecommitdiff
path: root/common/lib/scammer/drv.py
diff options
context:
space:
mode:
Diffstat (limited to 'common/lib/scammer/drv.py')
-rw-r--r--common/lib/scammer/drv.py140
1 files changed, 140 insertions, 0 deletions
diff --git a/common/lib/scammer/drv.py b/common/lib/scammer/drv.py
new file mode 100644
index 0000000000..b1ff6f5610
--- /dev/null
+++ b/common/lib/scammer/drv.py
@@ -0,0 +1,140 @@
+#!/usr/bin/python
+
+#############################################################################
+# Copyright (C) 2011 Spidcom
+#############################################################################
+
+from scapy.all import Packet
+from scapy.fields import *
+from commonfields import *
+from scammer import MMEPayload
+from common import HPAV_RESULT
+
+class DRV_STA_MAC_STOP_REQ (MMEPayload):
+ """Handles the DRV_STA_MAC_STOP.REQ MME."""
+ name = "HomePlug AV DRV_STA_MAC_STOP.REQ"""
+ fields_desc = [
+ ]
+
+class DRV_STA_MAC_STOP_CNF (MMEPayload):
+ """Handles the DRV_STA_MAC_STOP.CNF MME."""
+ name = "HomePlug AV DRV_STA_MAC_STOP.CNF"""
+ fields_desc = [
+ XByteField ("result", 0),
+ ]
+
+class DRV_STA_STATUS_IND (MMEPayload):
+ """Handles the DRV_STA_STATUS.IND MME."""
+ name = "HomePlug AV DRV_STA_STATUS.IND"""
+ fields_desc = [
+ ByteEnumField ("status", 0,
+ {0: "unassociated",
+ 1: "associated",
+ 2: "authenticated"}
+ ),
+ ByteEnumField ("role", 0,
+ {0: "Station",
+ 1: "Proxy CCo",
+ 2: "CCo",
+ }
+ ),
+ XByteField ("user_appoint_cco", 0),
+ XByteField ("backup_cco", 0),
+ XByteField ("simple_connect", 0),
+ ByteEnumField ("PLC_sync_freq", 0,
+ {0: "unknown",
+ 1: "50Hz",
+ 2: "60Hz",
+ 3: "Co-axial_Cable",
+ }
+ ),
+ ]
+
+class DRV_STA_SC_REQ (MMEPayload):
+ """Handles the DRV_STA_SC.REQ MME."""
+ name = "HomePlug AV DRV_STA_SC.REQ"""
+ fields_desc = [
+ ByteEnumField ("sc_join", 0, { 0: "SC_ADD", 1: "SC_JOIN" }),
+ ]
+
+class DRV_STA_SC_CNF (MMEPayload):
+ """Handles the DRV_STA_SC.CNF MME."""
+ name = "HomePlug AV DRV_STA_SC.CNF"""
+ fields_desc = [
+ ByteEnumField ("result", 0, HPAV_RESULT),
+ ]
+
+class DRV_MCAST_SET_LIST_REQ_member (Packet):
+ """Handles the DRV_MCAST_SET_LIST.REQ_member MME."""
+ name = "HomePlug AV DRV_MCAST_SET_LIST.REQ_member"""
+ fields_desc = [
+ MACField ("mac", ETHER_ANY),
+ ]
+
+ def extract_padding(self, s):
+ return "",s
+
+class DRV_MCAST_SET_LIST_REQ_group (Packet):
+ """Handles the DRV_MCAST_SET_LIST.REQ_group MME."""
+ name = "HomePlug AV DRV_MCAST_SET_LIST.REQ_group"""
+ fields_desc = [
+ MACField ("mac_group", ETHER_ANY),
+ FieldLenField("nbmembers", None, count_of="members",fmt="B"),
+ PacketListField ("members", None,
+ DRV_MCAST_SET_LIST_REQ_member,
+ count_from = lambda p: p.nbmembers),
+ ]
+
+ def extract_padding(self, s):
+ return "",s
+
+class DRV_MCAST_SET_LIST_REQ (MMEPayload):
+ """Handles the DRV_MCAST_SET_LIST.REQ MME."""
+ name = "HomePlug AV DRV_MCAST_SET_LIST.REQ"""
+ fields_desc = [
+ FieldLenField("nbgrps", None, count_of="groups",fmt="B"),
+ PacketListField ("groups", None, DRV_MCAST_SET_LIST_REQ_group,
+ count_from = lambda p: p.nbgrps),
+ ]
+
+class DRV_MCAST_SET_LIST_CNF (MMEPayload):
+ """Handles the DRV_MCAST_SET_LIST.CNF MME."""
+ name = "HomePlug AV DRV_MCAST_SET_LIST.CNF"""
+ fields_desc = [
+ ByteEnumField ("result", 0, HPAV_RESULT),
+ ]
+
+class DRV_STA_SET_KEY_REQ (MMEPayload):
+ """Handles the DRV_STA_SET_KEY.REQ MME."""
+ name = "HomePlug AV DRV_STA_SET_KEY.REQ"""
+ fields_desc = [
+ BitField ("nmk", 0, 128),
+ ByteEnumField ("type", 0,
+ {
+ 0: "CHANGE_NID",
+ 1: "CHANGE_SECURITY_LEVEL",
+ }),
+ HPAVNIDField ("nid", 0),
+ ByteField ("sl", 0),
+ ]
+
+class DRV_STA_SET_KEY_CNF (MMEPayload):
+ """Handles the DRV_STA_SET_KEY.CNF MME."""
+ name = "HomePlug AV DRV_STA_SET_KEY.CNF"""
+ fields_desc = [
+ ByteEnumField ("result", 0, HPAV_RESULT),
+ ]
+
+class DRV_STA_SET_KEY_IND (MMEPayload):
+ """Handles the DRV_STA_SET_KEY.IND MME."""
+ name = "HomePlug AV DRV_STA_SET_KEY.IND"""
+ fields_desc = [
+ BitField ("nmk", 0, 128),
+ ByteEnumField ("type", 0,
+ {
+ 0: "CHANGE_NID",
+ 1: "CHANGE_SECURITY_LEVEL",
+ }),
+ HPAVNIDField ("nid", 0),
+ ByteField ("sl", 0),
+ ]