aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-ieee802154.h
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2010-02-07 19:39:31 +0000
committerAnders Broman <anders.broman@ericsson.com>2010-02-07 19:39:31 +0000
commit95e212e6c7224f3609ba77ba80e06f0da61a7d70 (patch)
treee5f8c14b3888949c6ab66c26f8021c51a60f0a09 /epan/dissectors/packet-ieee802154.h
parent2a9a424cf58a2cb2a43c2dc9613c2d5871223910 (diff)
From Owen Kirby:
Packet decryption for IEEE 802.15.4. https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=4457 svn path=/trunk/; revision=31820
Diffstat (limited to 'epan/dissectors/packet-ieee802154.h')
-rw-r--r--epan/dissectors/packet-ieee802154.h87
1 files changed, 57 insertions, 30 deletions
diff --git a/epan/dissectors/packet-ieee802154.h b/epan/dissectors/packet-ieee802154.h
index b41b28ed06..428f573359 100644
--- a/epan/dissectors/packet-ieee802154.h
+++ b/epan/dissectors/packet-ieee802154.h
@@ -62,36 +62,37 @@
#define IEEE802154_CMD_GTS_REQ_TYPE 0x20
/* Bit masks & shifts for various beacon fields */
-#define IEEE802154_BCN_BO_MASK 0x0F
-#define IEEE802154_BCN_SFO_MASK 0xF0
-#define IEEE802154_BCN_CAP_MASK 0x0F
-#define IEEE802154_BCN_BATT_EXTN_MASK 0x10
-#define IEEE802154_BCN_COORD_MASK 0x40
-#define IEEE802154_BCN_ASSOC_PERM_MASK 0x80
-#define IEEE802154_BCN_SFO_SHIFT 4
-
-#define IEEE802154_BCN_GTS_COUNT_MASK 0x03
-#define IEEE802154_BCN_GTS_PERMIT_MASK 0x80
-#define IEEE802154_BCN_GTS_DIRECTION_SLOT(i) (0x01<<(i))
-#define IEEE802154_BCN_GTS_MAX_SLOTS 7
-#define IEEE802154_BCN_GTS_DIRECTION_SLOT1 0x01
-#define IEEE802154_BCN_GTS_DIRECTION_SLOT2 0x02
-#define IEEE802154_BCN_GTS_DIRECTION_SLOT3 0x04
-#define IEEE802154_BCN_GTS_DIRECTION_SLOT4 0x08
-#define IEEE802154_BCN_GTS_DIRECTION_SLOT5 0x10
-#define IEEE802154_BCN_GTS_DIRECTION_SLOT6 0x20
-#define IEEE802154_BCN_GTS_DIRECTION_SLOT7 0x40
-#define IEEE802154_BCN_GTS_SLOT_MASK 0x0F
-#define IEEE802154_BCN_GTS_LENGTH_MASK 0xF0
-#define IEEE802154_BCN_GTS_LENGTH_SHIFT 4
-
-#define IEEE802154_BCN_PADDR_SHORT_MASK 0x07
-#define IEEE802154_BCN_PADDR_LONG_MASK 0x70
-#define IEEE802154_BCN_PADDR_LONG_SHIFT 4
-
-#define IEEE802154_BCN_SFRM_DURATION (IEEE802154_BCN_SLOT_DURATION * IEEE802154_BCN_NUM_SLOTS)
-#define IEEE802154_BCN_SLOT_DURATION 60
-#define IEEE802154_BCN_NUM_SLOTS 16
+#define IEEE802154_BEACON_ORDER_MASK 0x000F
+#define IEEE802154_SUPERFRAME_ORDER_MASK 0x00F0
+#define IEEE802154_SUPERFRAME_CAP_MASK 0x0F00
+#define IEEE802154_BATT_EXTENSION_MASK 0x1000
+#define IEEE802154_SUPERFRAME_COORD_MASK 0x4000
+#define IEEE802154_ASSOC_PERMIT_MASK 0x8000
+#define IEEE802154_SUPERFRAME_ORDER_SHIFT 4
+#define IEEE802154_SUPERFRAME_CAP_SHIFT 8
+
+#define IEEE802154_GTS_COUNT_MASK 0x03
+#define IEEE802154_GTS_PERMIT_MASK 0x80
+#define IEEE802154_GTS_DIRECTION_SLOT(i) (0x01<<(i))
+#define IEEE802154_GTS_MAX_SLOTS 7
+#define IEEE802154_GTS_DIRECTION_SLOT1 0x01
+#define IEEE802154_GTS_DIRECTION_SLOT2 0x02
+#define IEEE802154_GTS_DIRECTION_SLOT3 0x04
+#define IEEE802154_GTS_DIRECTION_SLOT4 0x08
+#define IEEE802154_GTS_DIRECTION_SLOT5 0x10
+#define IEEE802154_GTS_DIRECTION_SLOT6 0x20
+#define IEEE802154_GTS_DIRECTION_SLOT7 0x40
+#define IEEE802154_GTS_SLOT_MASK 0x0F
+#define IEEE802154_GTS_LENGTH_MASK 0xF0
+#define IEEE802154_GTS_LENGTH_SHIFT 4
+
+#define IEEE802154_PENDADDR_SHORT_MASK 0x07
+#define IEEE802154_PENDADDR_LONG_MASK 0x70
+#define IEEE802154_PENDADDR_LONG_SHIFT 4
+
+#define IEEE802154_SUPERFRAME_DURATION (IEEE802154_BASE_SLOT_DURATION * IEEE802154_SUPERFRAME_SLOTS)
+#define IEEE802154_BASE_SLOT_DURATION 60
+#define IEEE802154_SUPERFRAME_SLOTS 16
/* Bit-masks for the FCF */
#define IEEE802154_FCF_TYPE_MASK 0x0007 /* Frame Type Mask */
@@ -109,6 +110,10 @@
#define IEEE802154_FCF_ACK 0x0002 /* Acknowlegement Frame */
#define IEEE802154_FCF_CMD 0x0003 /* Command Frame */
+/* Frame version definitions. */
+#define IEEE802154_VERSION_2003 0x0
+#define IEEE802154_VERSION_2006 0x1
+
/* Address Mode Definitions */
#define IEEE802154_FCF_ADDR_NONE 0x0000
#define IEEE802154_FCF_ADDR_SHORT 0x0002
@@ -130,6 +135,7 @@
/* Auxiliary Security Header */
#define IEEE802154_AUX_SEC_LEVEL_MASK 0x07 /* Security Level */
#define IEEE802154_AUX_KEY_ID_MODE_MASK 0x18 /* Key Identifier Mode */
+#define IEEE802154_AUX_KEY_ID_MODE_SHIFT 3
#define IEEE802154_AUX_KEY_RESERVED_MASK 0xE0 /* Reserved */
typedef enum {
@@ -150,6 +156,14 @@ typedef enum {
KEY_ID_MODE_KEY_EXPLICIT_8 = 0x03
} ieee802154_key_id_mode;
+/* IEEE 802.15.4 cipher block size. */
+#define IEEE802154_CIPHER_SIZE 16
+
+/* Macro to compute the MIC length. */
+#define IEEE802154_MIC_LENGTH(_level_) ((0x2 << ((_level_) & 0x3)) & ~0x3)
+/* Macro to check for payload encryption. */
+#define IEEE802154_IS_ENCRYPTED(_level_) ((_level_) & 0x4)
+
/* Structure containing information regarding all necessary packet feilds. */
typedef struct {
/* Frame control field. */
@@ -175,6 +189,19 @@ typedef struct {
guint16 addr16;
guint64 addr64;
} src;
+
+ /* Security Info. */
+ ieee802154_security_level security_level;
+ ieee802154_key_id_mode key_id_mode;
+ guint32 frame_counter;
+ union {
+ guint32 addr32;
+ guint64 addr64;
+ } key_source;
+ guint8 key_index;
+
+ /* Command ID (only if frame_type == 0x3) */
+ guint8 command_id;
} ieee802154_packet;