13 #ifndef PACKET_IEEE802154_H 14 #define PACKET_IEEE802154_H 17 #define IEEE802154_PROTOABBREV_WPAN "wpan" 18 #define IEEE802154_PROTOABBREV_WPAN_BEACON "wpan.beacon" 20 #define IEEE802154_PROTOABBREV_WPAN_PANID "wpan.panid" 23 #define IEEE802154_HEADER_IE_DTABLE "wpan.header_ie" 24 #define IEEE802154_PAYLOAD_IE_DTABLE "wpan.payload_ie" 25 #define IEEE802154_MLME_IE_DTABLE "wpan.mlme_ie" 26 #define IEEE802154_CMD_VENDOR_DTABLE "wpan.cmd.vendor" 29 #define IEEE802154_MAX_FRAME_LEN 127 30 #define IEEE802154_FCS_LEN 2 33 #define IEEE802154_CMD_ASSOC_REQ 0x01 34 #define IEEE802154_CMD_ASSOC_RSP 0x02 35 #define IEEE802154_CMD_DISASSOC_NOTIFY 0x03 36 #define IEEE802154_CMD_DATA_RQ 0x04 37 #define IEEE802154_CMD_PANID_CONFLICT 0x05 38 #define IEEE802154_CMD_ORPHAN_NOTIFY 0x06 39 #define IEEE802154_CMD_BEACON_REQ 0x07 40 #define IEEE802154_CMD_COORD_REALIGN 0x08 41 #define IEEE802154_CMD_GTS_REQ 0x09 42 #define IEEE802154_CMD_TRLE_MGMT_REQ 0x0a 43 #define IEEE802154_CMD_TRLE_MGMT_RSP 0x0b 45 #define IEEE802154_CMD_DSME_ASSOC_REQ 0x13 46 #define IEEE802154_CMD_DSME_ASSOC_RSP 0x14 47 #define IEEE802154_CMD_DSME_GTS_REQ 0x15 48 #define IEEE802154_CMD_DSME_GTS_RSP 0x16 49 #define IEEE802154_CMD_DSME_GTS_NOTIFY 0x17 50 #define IEEE802154_CMD_DSME_INFO_REQ 0x18 51 #define IEEE802154_CMD_DSME_INFO_RSP 0x19 52 #define IEEE802154_CMD_DSME_BEACON_ALLOC_NOTIFY 0x1a 53 #define IEEE802154_CMD_DSME_BEACON_COLL_NOTIFY 0x1b 54 #define IEEE802154_CMD_DSME_LINK_REPORT 0x1c 56 #define IEEE802154_CMD_RIT_DATA_REQ 0x20 57 #define IEEE802154_CMD_DBS_REQ 0x21 58 #define IEEE802154_CMD_DBS_RSP 0x22 59 #define IEEE802154_CMD_RIT_DATA_RSP 0x23 60 #define IEEE802154_CMD_VENDOR_SPECIFIC 0x24 64 #define IEEE802154_CMD_ASRSP_AS_SUCCESS 0x00 65 #define IEEE802154_CMD_ASRSP_PAN_FULL 0x01 66 #define IEEE802154_CMD_ASRSP_PAN_DENIED 0x02 70 #define IEEE802154_CMD_CINFO_ALT_PAN_COORD 0x01 71 #define IEEE802154_CMD_CINFO_DEVICE_TYPE 0x02 72 #define IEEE802154_CMD_CINFO_POWER_SRC 0x04 73 #define IEEE802154_CMD_CINFO_IDLE_RX 0x08 74 #define IEEE802154_CMD_CINFO_SEC_CAPABLE 0x40 75 #define IEEE802154_CMD_CINFO_ALLOC_ADDR 0x80 77 #define IEEE802154_CMD_GTS_REQ_LEN 0x0F 78 #define IEEE802154_CMD_GTS_REQ_DIR 0x10 79 #define IEEE802154_CMD_GTS_REQ_TYPE 0x20 82 #define IEEE802154_BEACON_ORDER_MASK 0x000F 83 #define IEEE802154_SUPERFRAME_ORDER_MASK 0x00F0 84 #define IEEE802154_SUPERFRAME_CAP_MASK 0x0F00 85 #define IEEE802154_BATT_EXTENSION_MASK 0x1000 86 #define IEEE802154_SUPERFRAME_COORD_MASK 0x4000 87 #define IEEE802154_ASSOC_PERMIT_MASK 0x8000 88 #define IEEE802154_SUPERFRAME_ORDER_SHIFT 4 89 #define IEEE802154_SUPERFRAME_CAP_SHIFT 8 91 #define IEEE802154_GTS_COUNT_MASK 0x07 92 #define IEEE802154_GTS_PERMIT_MASK 0x80 93 #define IEEE802154_GTS_DIRECTION_SLOT(i) (0x01<<(i)) 94 #define IEEE802154_GTS_MAX_SLOTS 7 95 #define IEEE802154_GTS_DIRECTION_SLOT1 0x01 96 #define IEEE802154_GTS_DIRECTION_SLOT2 0x02 97 #define IEEE802154_GTS_DIRECTION_SLOT3 0x04 98 #define IEEE802154_GTS_DIRECTION_SLOT4 0x08 99 #define IEEE802154_GTS_DIRECTION_SLOT5 0x10 100 #define IEEE802154_GTS_DIRECTION_SLOT6 0x20 101 #define IEEE802154_GTS_DIRECTION_SLOT7 0x40 102 #define IEEE802154_GTS_SLOT_MASK 0x0F 103 #define IEEE802154_GTS_LENGTH_MASK 0xF0 104 #define IEEE802154_GTS_LENGTH_SHIFT 4 106 #define IEEE802154_PENDADDR_SHORT_MASK 0x07 107 #define IEEE802154_PENDADDR_LONG_MASK 0x70 108 #define IEEE802154_PENDADDR_LONG_SHIFT 4 110 #define IEEE802154_SUPERFRAME_DURATION (IEEE802154_BASE_SLOT_DURATION * IEEE802154_SUPERFRAME_SLOTS) 111 #define IEEE802154_BASE_SLOT_DURATION 60 112 #define IEEE802154_SUPERFRAME_SLOTS 16 115 #define IEEE802154_FCF_TYPE_MASK 0x0007 116 #define IEEE802154_FCF_SEC_EN 0x0008 117 #define IEEE802154_FCF_FRAME_PND 0x0010 118 #define IEEE802154_FCF_ACK_REQ 0x0020 119 #define IEEE802154_FCF_PAN_ID_COMPRESSION 0x0040 120 #define IEEE802154_FCF_SEQNO_SUPPRESSION 0x0100 121 #define IEEE802154_FCF_IE_PRESENT 0x0200 122 #define IEEE802154_FCF_DADDR_MASK 0x0C00 123 #define IEEE802154_FCF_VERSION 0x3000 124 #define IEEE802154_FCF_SADDR_MASK 0xC000 127 #define IEEE802154_FCF_BEACON 0x0 128 #define IEEE802154_FCF_DATA 0x1 129 #define IEEE802154_FCF_ACK 0x2 130 #define IEEE802154_FCF_CMD 0x3 131 #define IEEE802154_FCF_RESERVED 0x4 132 #define IEEE802154_FCF_MULTIPURPOSE 0x5 133 #define IEEE802154_FCF_FRAGMENT 0x6 134 #define IEEE802154_FCF_EXTENDED 0x7 137 #define IEEE802154_VERSION_2003 0x0 138 #define IEEE802154_VERSION_2006 0x1 139 #define IEEE802154_VERSION_2015 0x2 140 #define IEEE802154_VERSION_RESERVED 0x3 143 #define IEEE802154_FCF_ADDR_NONE 0x0 144 #define IEEE802154_FCF_ADDR_RESERVED 0x1 145 #define IEEE802154_FCF_ADDR_SHORT 0x2 146 #define IEEE802154_FCF_ADDR_EXT 0x3 149 #define IEEE802154_HEADER_IE_TYPE_MASK 0x8000 150 #define IEEE802154_HEADER_IE_ID_MASK 0x7F80 151 #define IEEE802154_HEADER_IE_LENGTH_MASK 0x007F 154 #define IEEE802154_PAYLOAD_IE_TYPE_MASK 0x8000 155 #define IEEE802154_PAYLOAD_IE_ID_MASK 0x7800 156 #define IEEE802154_PAYLOAD_IE_LENGTH_MASK 0x07FF 159 #define IEEE802154_PSIE_TYPE_MASK 0x8000 160 #define IEEE802154_PSIE_ID_MASK_SHORT 0x7F00 161 #define IEEE802154_PSIE_LENGTH_MASK_SHORT 0x00FF 162 #define IEEE802154_PSIE_ID_MASK_LONG 0x7800 163 #define IEEE802154_PSIE_LENGTH_MASK_LONG 0x07FF 166 #define IEEE802154_MLME_PSIE_EB_FLT_PJOIN 0x01 167 #define IEEE802154_MLME_PSIE_EB_FLT_LQI 0x02 168 #define IEEE802154_MLME_PSIE_EB_FLT_PERCENT 0x04 169 #define IEEE802154_MLME_PSIE_EB_FLT_ATTR_LEN 0x18 174 #define IEEE802154_CC24xx_CORRELATION 0x7F00 175 #define IEEE802154_CC24xx_CRC_OK 0x8000 176 #define IEEE802154_CC24xx_RSSI 0x00FF 179 #define IEEE802154_NO_ADDR16 0xFFFE 180 #define IEEE802154_BCAST_ADDR 0xFFFF 181 #define IEEE802154_BCAST_PAN 0xFFFF 184 #define IEEE802154_PHY_LENGTH_MASK 0x7F 187 #define IEEE802154_AUX_SEC_LEVEL_MASK 0x07 188 #define IEEE802154_AUX_KEY_ID_MODE_MASK 0x18 189 #define IEEE802154_AUX_KEY_ID_MODE_SHIFT 3 190 #define IEEE802154_AUX_FRAME_COUNTER_SUPPRESSION_MASK 0x20 191 #define IEEE802154_AUX_ASN_IN_NONCE_MASK 0x40 193 #define IEEE802154_AUX_CTRL_RESERVED_MASK 0x80 196 #define IEEE802154_THR_WELL_KNOWN_KEY_INDEX 0xff 197 #define IEEE802154_THR_WELL_KNOWN_KEY_SRC 0xffffffff 198 #define IEEE802154_THR_WELL_KNOWN_EXT_ADDR 0x3506feb823d48712ULL 201 SECURITY_LEVEL_NONE = 0x00,
202 SECURITY_LEVEL_MIC_32 = 0x01,
203 SECURITY_LEVEL_MIC_64 = 0x02,
204 SECURITY_LEVEL_MIC_128 = 0x03,
205 SECURITY_LEVEL_ENC = 0x04,
206 SECURITY_LEVEL_ENC_MIC_32 = 0x05,
207 SECURITY_LEVEL_ENC_MIC_64 = 0x06,
208 SECURITY_LEVEL_ENC_MIC_128 = 0x07
209 } ieee802154_security_level;
212 KEY_ID_MODE_IMPLICIT = 0x00,
213 KEY_ID_MODE_KEY_INDEX = 0x01,
214 KEY_ID_MODE_KEY_EXPLICIT_4 = 0x02,
215 KEY_ID_MODE_KEY_EXPLICIT_8 = 0x03
216 } ieee802154_key_id_mode;
219 KEY_HASH_NONE = 0x00,
221 KEY_HASH_THREAD = 0x02
222 } ieee802154_key_hash;
225 #define IEEE802154_HEADER_IE_VENDOR_SPECIFIC 0x00 227 #define IEEE802154_HEADER_IE_CSL 0x1a 228 #define IEEE802154_HEADER_IE_RIT 0x1b 229 #define IEEE802154_HEADER_IE_DSME_PAN 0x1c 230 #define IEEE802154_HEADER_IE_RENDEZVOUS 0x1d 231 #define IEEE802154_HEADER_IE_TIME_CORR 0x1e 233 #define IEEE802154_HEADER_IE_EXT_DSME_PAN 0x21 234 #define IEEE802154_HEADER_IE_FSCD 0x22 235 #define IEEE802154_HEADER_IE_SMPL_SUPER_FRM 0x23 236 #define IEEE802154_HEADER_IE_SMPL_GTS 0x24 237 #define IEEE802154_HEADER_IE_LECIM 0x25 238 #define IEEE802154_HEADER_IE_TRLE 0x26 239 #define IEEE802154_HEADER_IE_RCC_CAP 0x27 240 #define IEEE802154_HEADER_IE_RCCN 0x28 241 #define IEEE802154_HEADER_IE_GLOBAL_TIME 0x29 242 #define IEEE802154_HEADER_IE_WISUN 0x2a 243 #define IEEE802154_HEADER_IE_DA_IE 0x2b 245 #define IEEE802154_HEADER_IE_HT1 0x7e 246 #define IEEE802154_HEADER_IE_HT2 0x7f 250 #define IEEE802154_PAYLOAD_IE_ESDU 0x0 251 #define IEEE802154_PAYLOAD_IE_MLME 0x1 252 #define IEEE802154_PAYLOAD_IE_VENDOR 0x2 253 #define IEEE802154_PAYLOAD_IE_MPX 0x3 254 #define IEEE802154_PAYLOAD_IE_WISUN 0x4 255 #define IEEE802154_PAYLOAD_IE_IETF 0x5 257 #define IEEE802154_PAYLOAD_IE_TERMINATION 0xf 263 #define IEEE802154_MLME_SUBIE_CHANNEL_HOPPING 0x9 266 #define IEEE802154_MLME_SUBIE_TSCH_SYNCH 0x1A 267 #define IEEE802154_MLME_SUBIE_TSCH_SLOTFR_LINK 0x1B 268 #define IEEE802154_MLME_SUBIE_TSCH_TIMESLOT 0x1C 269 #define IEEE802154_MLME_SUBIE_HOPPING_TIMING 0x1D 270 #define IEEE802154_MLME_SUBIE_ENHANCED_BEACON_FILTER 0x1E 271 #define IEEE802154_MLME_SUBIE_MAC_METRICS 0x1F 272 #define IEEE802154_MLME_SUBIE_ALL_MAC_METRICS 0x20 273 #define IEEE802154_MLME_SUBIE_COEXISTENCE_SPEC 0x21 274 #define IEEE802154_MLME_SUBIE_SUN_DEVICE_CAPABILITIES 0x22 275 #define IEEE802154_MLME_SUBIE_SUN_FSK_GEN_PHY 0x23 276 #define IEEE802154_MLME_SUBIE_MODE_SWITCH_PARAMETER 0x24 277 #define IEEE802154_MLME_SUBIE_PHY_PARAMETER_CHANGE 0x25 278 #define IEEE802154_MLME_SUBIE_O_QPSK_PHY_MODE 0x26 279 #define IEEE802154_MLME_SUBIE_PCA_ALLOCATION 0x27 280 #define IEEE802154_MLME_SUBIE_DSSS_OPER_MODE 0x28 281 #define IEEE802154_MLME_SUBIE_FSK_OPER_MODE 0x29 282 #define IEEE802154_MLME_SUBIE_TVWS_PHY_OPE_MODE 0x2B 283 #define IEEE802154_MLME_SUBIE_TVWS_DEVICE_CAPAB 0x2C 284 #define IEEE802154_MLME_SUBIE_TVWS_DEVICE_CATEG 0x2D 285 #define IEEE802154_MLME_SUBIE_TVWS_DEVICE_IDENTIF 0x2E 286 #define IEEE802154_MLME_SUBIE_TVWS_DEVICE_LOCATION 0x2F 287 #define IEEE802154_MLME_SUBIE_TVWS_CH_INFOR_QUERY 0x30 288 #define IEEE802154_MLME_SUBIE_TVWS_CH_INFOR_SOURCE 0x31 289 #define IEEE802154_MLME_SUBIE_CTM 0x32 290 #define IEEE802154_MLME_SUBIE_TIMESTAMP 0x33 291 #define IEEE802154_MLME_SUBIE_TIMESTAMP_DIFF 0x34 292 #define IEEE802154_MLME_SUBIE_TMCP_SPECIFICATION 0x35 293 #define IEEE802154_MLME_SUBIE_RCC_PHY_OPER_MODE 0x36 297 #define IEEE802154_IETF_SUBIE_6TOP 0xC9 300 #define IEEE802154_CIPHER_SIZE 16 303 #define IEEE802154_MIC_LENGTH(_level_) ((0x2 << ((_level_) & 0x3)) & ~0x3) 305 #define IEEE802154_IS_ENCRYPTED(_level_) ((_level_) & 0x4) 308 #define IETF_6TOP_VERSION 0x0F 309 #define IETF_6TOP_TYPE 0x30 310 #define IETF_6TOP_FLAGS_RESERVED 0xC0 311 #define IETF_6TOP_SEQNUM 0xFF 314 #define IETF_6TOP_CMD_ADD 0x01 315 #define IETF_6TOP_CMD_DELETE 0x02 316 #define IETF_6TOP_CMD_RELOCATE 0x03 317 #define IETF_6TOP_CMD_COUNT 0x04 318 #define IETF_6TOP_CMD_LIST 0x05 319 #define IETF_6TOP_CMD_SIGNAL 0x06 320 #define IETF_6TOP_CMD_CLEAR 0x07 321 #define IETF_6TOP_RC_SUCCESS 0x00 322 #define IETF_6TOP_RC_EOL 0x01 323 #define IETF_6TOP_RC_ERR 0x02 324 #define IETF_6TOP_RC_RESET 0x03 325 #define IETF_6TOP_RC_ERR_VERSION 0x04 326 #define IETF_6TOP_RC_ERR_SFID 0x05 327 #define IETF_6TOP_RC_ERR_SEQNUM 0x06 328 #define IETF_6TOP_RC_ERR_CELLLIST 0x07 329 #define IETF_6TOP_RC_ERR_BUSY 0x08 330 #define IETF_6TOP_RC_ERR_LOCKED 0x09 333 #define IETF_6TOP_TYPE_REQUEST 0x00 334 #define IETF_6TOP_TYPE_RESPONSE 0x01 335 #define IETF_6TOP_TYPE_CONFIRMATION 0x02 336 #define IETF_6TOP_TYPE_RESERVED 0x03 339 #define IETF_6TOP_CELL_OPTION_TX 0x01 340 #define IETF_6TOP_CELL_OPTION_RX 0x02 341 #define IETF_6TOP_CELL_OPTION_SHARED 0x04 342 #define IETF_6TOP_CELL_OPTION_RESERVED 0xF8 345 #define IEEE802159_MPX_TRANSFER_TYPE_MASK 0x07 346 #define IEEE802159_MPX_TRANSACTION_ID_MASK 0xf8 347 #define IEEE802159_MPX_TRANSACTION_ID_SHIFT 0x03 349 #define IEEE802159_MPX_FULL_FRAME 0 350 #define IEEE802159_MPX_FULL_FRAME_NO_MUXID 1 351 #define IEEE802159_MPX_NON_LAST_FRAGMENT 2 352 #define IEEE802159_MPX_LAST_FRAGMENT 4 353 #define IEEE802159_MPX_ABORT 6 355 #define IEEE802159_MPX_MULTIPLEX_ID_KMP 1 356 #define IEEE802159_MPX_MULTIPLEX_ID_WISUN 2 358 #define IEEE802159_MPX_KMP_ID_IEEE8021X 1 359 #define IEEE802159_MPX_KMP_ID_HIP 2 360 #define IEEE802159_MPX_KMP_ID_IKEV2 3 361 #define IEEE802159_MPX_KMP_ID_PANA 4 362 #define IEEE802159_MPX_KMP_ID_DRAGONFLY 5 363 #define IEEE802159_MPX_KMP_ID_IEEE80211_4WH 6 364 #define IEEE802159_MPX_KMP_ID_IEEE80211_GKH 7 365 #define IEEE802159_MPX_KMP_ID_ETSI_TS_102_887_2 8 366 #define IEEE802159_MPX_KMP_ID_VENDOR_SPECIFIC 255 368 #define IEEE802159_MPX_WISUN_SUBID_MHDS 0 369 #define IEEE802159_MPX_WISUN_SUBID_6LOWPAN 1 370 #define IEEE802159_MPX_WISUN_SUBID_SECURITY 2 377 gint32 dst_addr_mode;
378 gint32 src_addr_mode;
379 gboolean security_enable;
380 gboolean frame_pending;
381 gboolean ack_request;
382 gboolean pan_id_compression;
383 gboolean seqno_suppression;
387 gboolean payload_ie_present;
397 ieee802154_security_level security_level;
398 ieee802154_key_id_mode key_id_mode;
399 gboolean frame_counter_suppression;
400 guint32 frame_counter;
401 guint8 key_sequence_counter;
411 GHashTable *short_table;
416 GHashTable *long_table;
417 GHashTable *short_table;
440 #define IEEE802154_USER_MAPPING 0 451 DECRYPT_PACKET_SUCCEEDED,
452 DECRYPT_NOT_ENCRYPTED,
453 DECRYPT_FRAME_COUNTER_SUPPRESSION_UNSUPPORTED,
454 DECRYPT_PACKET_TOO_SMALL,
455 DECRYPT_PACKET_NO_EXT_SRC_ADDR,
456 DECRYPT_PACKET_NO_KEY,
457 DECRYPT_PACKET_DECRYPT_FAILED,
458 DECRYPT_PACKET_MIC_CHECK_FAILED
459 } ieee802154_decrypt_status;
465 ieee802154_key_hash hash_type;
466 guint8 key[IEEE802154_CIPHER_SIZE];
467 guint8 mle_key[IEEE802154_CIPHER_SIZE];
475 void ccm_init_block(gchar *block, gboolean adata, gint M, guint64 addr, guint32 frame_counter, guint8 level, gint ctr_val,
const gchar *generic_nonce);
476 gboolean ccm_ctr_encrypt(
const gchar *key,
const gchar *iv, gchar *mic, gchar *data, gint length);
477 gboolean ccm_cbc_mac(
const gchar *key,
const gchar *iv,
const gchar *a, gint a_len,
const gchar *m, gint m_len, gchar *mic);
484 #define IEEE802154_DISSECT_HEADER_OPTION_NO_AUX_SEC_HDR (1 << 1) 538 unsigned char* rx_mic;
539 guint* rx_mic_length;
542 ieee802154_decrypt_status* status;
557 extern void register_ieee802154_mac_key_hash_handler(guint hash_identifier, ieee802154_set_key_func key_func);
561 const char *, guint);
562 extern guint ieee802154_short_addr_hash(gconstpointer);
563 extern guint ieee802154_long_addr_hash(gconstpointer key);
564 extern gboolean ieee802154_short_addr_equal(gconstpointer, gconstpointer);
565 extern gboolean ieee802154_long_addr_equal(gconstpointer a, gconstpointer b);
567 extern gboolean ieee802154_short_addr_invalidate(guint16, guint16, guint);
568 extern gboolean ieee802154_long_addr_invalidate(guint64, guint);
Definition: packet-ieee802154.h:373
Definition: packet-ieee802154.h:462
Definition: packet_info.h:44
Definition: tvbuff-int.h:35
Definition: packet-ieee802154.h:415
Definition: packet-ieee802154.h:427
Definition: packet-ieee802154.h:533
Definition: packet-ieee802154.h:421
Definition: packet-ieee802154.h:442
Definition: packet-ieee802154.h:432
Definition: value_string.h:24