Batch of filterable expert info.

svn path=/trunk/; revision=51689
This commit is contained in:
Michael Mann 2013-09-03 02:26:50 +00:00
parent 5405b34469
commit a72fc72061
7 changed files with 232 additions and 163 deletions

View File

@ -198,6 +198,8 @@ static gint ett_bssgp_list_of_setup_pfcs = -1;
static gint ett_bssgp_pfc_flow_control_parameters_pfc = -1;
static gint ett_bssgp_ra_id = -1;
static expert_field ei_bssgp_extraneous_data = EI_INIT;
/* PDU type coding, v6.5.0, table 11.3.26, p 80 */
#define BSSGP_PDU_DL_UNITDATA 0x00
#define BSSGP_PDU_UL_UNITDATA 0x01
@ -3980,7 +3982,7 @@ bssgp_dl_unitdata(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 o
/* Initial LLC-PDU (note 8) LLC-PDU/11.3.15 O TLV 2-? */
ELEM_OPT_TELV(0x0e, BSSGP_PDU_TYPE, DE_BSSGP_LLC_PDU, " - initial");
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
* 10.2.2 UL-UNITDATA
@ -4018,7 +4020,7 @@ bssgp_ul_unitdata(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 o
/* LLC-PDU (note) LLC-PDU/11.3.15 M TLV 2-? */
ELEM_MAND_TELV(0x0e, BSSGP_PDU_TYPE, DE_BSSGP_LLC_PDU, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
* 10.2.3 RA-CAPABILITY
@ -4041,7 +4043,7 @@ bssgp_ra_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset
/* MS Radio Access Capability MS Radio Access Capability/11.3.22 M TLV 7-? */
ELEM_MAND_TELV(BSSGP_IEI_MS_RADIO_ACCESS_CAPABILITY, GSM_A_PDU_TYPE_GM, DE_MS_RAD_ACC_CAP , NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
@ -4077,7 +4079,7 @@ bssgp_dl_mbms_unitdata(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guin
ELEM_MAND_TELV(0x0e, BSSGP_PDU_TYPE, DE_BSSGP_LLC_PDU, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
@ -4106,7 +4108,7 @@ bssgp_ul_mbms_unitdata(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guin
/* LLC-PDU (note 1) LLC-PDU/11.3.15 M TLV 2-? */
ELEM_MAND_TELV(0x0e, BSSGP_PDU_TYPE, DE_BSSGP_LLC_PDU, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
@ -4148,7 +4150,7 @@ bssgp_paging_ps(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 off
/* P-TMSI TMSI/11.3.36 O TLV 6 */
ELEM_OPT_TELV(BSSGP_IEI_TMSI,GSM_A_PDU_TYPE_RR, DE_RR_TMSI_PTMSI, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
@ -4190,7 +4192,7 @@ bssgp_paging_cs(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 off
/* Global CN-Id (note 2) Global CN-Id/11.3.69 O TLV 7 */
ELEM_OPT_TELV(0x53, SGSAP_PDU_TYPE, DE_SGSAP_GLOBAL_CN_ID, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
@ -4220,7 +4222,7 @@ bssgp_ra_cap_upd(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 of
/* MS Radio Access Capability MS Radio Access Capability/11.3.22 C TLV 7-? */
ELEM_OPT_TELV(BSSGP_IEI_MS_RADIO_ACCESS_CAPABILITY, GSM_A_PDU_TYPE_GM, DE_MS_RAD_ACC_CAP , NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
@ -4251,7 +4253,7 @@ bssgp_ra_cap_upd_ack(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint3
/* MS Radio Access Capability MS Radio Access Capability/11.3.22 C TLV 7-? */
ELEM_OPT_TELV(BSSGP_IEI_MS_RADIO_ACCESS_CAPABILITY, GSM_A_PDU_TYPE_GM, DE_MS_RAD_ACC_CAP , NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
@ -4280,7 +4282,7 @@ bssgp_ra_status(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 off
/* Radio Cause Radio Cause/11.3.29 M TLV 3 */
ELEM_MAND_TELV(BSSGP_IEI_RADIO_CAUSE, BSSGP_PDU_TYPE, DE_BSSGP_RA_CAUSE , NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
* 10.3.6 SUSPEND
@ -4304,7 +4306,7 @@ bssgp_suspend(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offse
/* Routeing Area Routeing Area/11.3.31 M TLV 8 */
ELEM_MAND_TELV(0x1b,GSM_A_PDU_TYPE_GM, DE_RAI, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
* 10.3.7 SUSPEND-ACK
@ -4331,7 +4333,7 @@ bssgp_suspend_ack(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 o
ELEM_MAND_TELV(0x1d,BSSGP_PDU_TYPE, DE_BBSGP_SUSPEND_REF_NO, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
* 10.3.8 SUSPEND-NACK
@ -4358,7 +4360,7 @@ bssgp_suspend_nack(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
/* Cause Cause/11.3.8 O TLV 3 */
ELEM_MAND_TELV(BSSGP_IEI_CAUSE,BSSGP_PDU_TYPE, DE_BSSGP_CAUSE, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
* 10.3.9 RESUME
@ -4384,7 +4386,7 @@ bssgp_resume(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset
/* Suspend Reference Number Suspend Reference Number/11.3.33 M TLV 3 */
ELEM_MAND_TELV(0x1d,BSSGP_PDU_TYPE, DE_BBSGP_SUSPEND_REF_NO, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
* 10.3.10 RESUME-ACK
@ -4409,7 +4411,7 @@ bssgp_resume_ack(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 of
/* Routeing Area Routeing Area/11.3.31 M TLV 8 */
ELEM_MAND_TELV(0x1b,GSM_A_PDU_TYPE_GM, DE_RAI, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
* 10.3.11 RESUME-NACK
@ -4436,7 +4438,7 @@ bssgp_resume_nack(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 o
/* Cause Cause/11.3.8 O TLV 3 */
ELEM_OPT_TELV(BSSGP_IEI_CAUSE,BSSGP_PDU_TYPE, DE_BSSGP_CAUSE, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
* 10.4 PDU functional definitions and contents at NM SAP
@ -4465,7 +4467,7 @@ bssgp_flush_ll(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offs
/* NSEI (new) NSEI/11.3.48 O (note) TLV 4 */
ELEM_OPT_TELV(0x3e, GSM_A_PDU_TYPE_RR, DE_BSSGP_NSEI , " - New");
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
* 10.4.2 FLUSH-LL-ACK
@ -4497,7 +4499,7 @@ bssgp_flush_ll_ack(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
ELEM_OPT_TELV(0x3e, GSM_A_PDU_TYPE_RR, DE_BSSGP_NSEI , " - New");
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
* 10.4.3 LLC-DISCARDED
@ -4526,7 +4528,7 @@ bssgp_llc_discarded(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
/* PFI (note) PFI/11.3.42 O TLV 3 */
ELEM_OPT_TELV(BSSGP_IEI_PFI , GSM_A_PDU_TYPE_GM, DE_PACKET_FLOW_ID , NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
@ -4565,7 +4567,7 @@ bssgp_flow_control_bvc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guin
/* Flow Control Granularity (note) Flow Control Granularity/11.3.102 O TLV 3 */
ELEM_OPT_TELV(0x7e, BSSGP_PDU_TYPE, DE_BSSGP_FLOW_CONTROL_GRAN , NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
@ -4591,7 +4593,7 @@ bssgp_flow_control_bvc_ack(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
/* Tag Tag/11.3.34 M TLV 3 */
ELEM_MAND_TELV(BSSGP_IEI_TAG, BSSGP_PDU_TYPE, DE_BSSGP_TAG , NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
@ -4627,7 +4629,7 @@ bssgp_flow_control_ms(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint
/* Flow Control Granularity (note) Flow Control Granularity/11.3.102 O TLV 3 */
ELEM_OPT_TELV(0x7e, BSSGP_PDU_TYPE, DE_BSSGP_FLOW_CONTROL_GRAN , NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
* 10.4.7 FLOW-CONTROL-MS-ACK
@ -4652,7 +4654,7 @@ bssgp_flow_control_ms_ack(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, g
/* Tag Tag/11.3.34 M TLV 3 */
ELEM_MAND_TELV(BSSGP_IEI_TAG, BSSGP_PDU_TYPE, DE_BSSGP_TAG , NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
* 10.4.8 BVC-BLOCK
@ -4677,7 +4679,7 @@ bssgp_bvc_block(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 off
/* Cause Cause/11.3.8 M TLV 3 */
ELEM_MAND_TELV(BSSGP_IEI_CAUSE,BSSGP_PDU_TYPE, DE_BSSGP_CAUSE, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
@ -4700,7 +4702,7 @@ bssgp_bvc_block_ack(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
/* BVCI BVCI/11.3.6 M TLV 4 */
ELEM_MAND_TELV(BSSGP_IEI_BVCI, BSSGP_PDU_TYPE, DE_BSSGP_BVCI , NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
@ -4724,7 +4726,7 @@ bssgp_bvc_un_block(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
ELEM_MAND_TELV(BSSGP_IEI_BVCI, BSSGP_PDU_TYPE, DE_BSSGP_BVCI , NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
* 10.4.11 BVC-UNBLOCK-ACK
@ -4747,7 +4749,7 @@ bssgp_bvc_un_block_ack(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guin
/* BVCI BVCI/11.3.6 M TLV 4 */
ELEM_MAND_TELV(BSSGP_IEI_BVCI, BSSGP_PDU_TYPE, DE_BSSGP_BVCI , NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
@ -4778,7 +4780,7 @@ bssgp_bvc_reset(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 off
/* Extended Feature Bitmap (note 3) Extended Feature Bitmap/11.3.84 O TLV 3 */
ELEM_OPT_TELV(0x69, BSSGP_PDU_TYPE, DE_BSSGP_EXT_FEATURE_BITMAP , NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
@ -4807,7 +4809,7 @@ bssgp_bvc_reset_ack(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
/* Extended Feature Bitmap (note 3) Extended Feature Bitmap/11.3.84 O TLV 3 */
ELEM_OPT_TELV(0x69, BSSGP_PDU_TYPE, DE_BSSGP_EXT_FEATURE_BITMAP , NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
@ -4833,7 +4835,7 @@ bssgp_status(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset
/* PDU In Error (note) PDU In Error/11.3.24 O TLV 3-? */
ELEM_MAND_TELV(0x15, BSSGP_PDU_TYPE, DE_BSSGP_PDU_IN_ERROR , NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
* 10.4.15 SGSN-INVOKE-TRACE
@ -4866,7 +4868,7 @@ bssgp_sgsn_invoke_trace(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
/* TransactionId TransactionId/11.3.39 O TLV 4 */
ELEM_OPT_TELV(0x23, BSSGP_PDU_TYPE, DE_BSSGP_TRANSACTION_ID , NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
@ -4891,7 +4893,7 @@ bssgp_download_bss_pfc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guin
/* PFI PFI/11.3.42 M TLV 3 */
ELEM_MAND_TELV(BSSGP_IEI_PFI , GSM_A_PDU_TYPE_GM, DE_PACKET_FLOW_ID , NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
@ -4938,7 +4940,7 @@ bssgp_create_bss_pfc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint3
*/
ELEM_OPT_TELV(0x81, BSSGP_PDU_TYPE, DE_BSSGP_SUB_PROF_ID_F_RAT_FRQ_PRIO, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
@ -4969,7 +4971,7 @@ bssgp_create_bss_pfc_ack(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gu
/* Cause Cause/11.3.8 O TLV 3 */
ELEM_OPT_TELV(BSSGP_IEI_CAUSE,BSSGP_PDU_TYPE, DE_BSSGP_CAUSE, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
* 10.4.19 CREATE-BSS-PFC-NACK
@ -4997,7 +4999,7 @@ bssgp_create_bss_pfc_nack(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, g
/* Cause Cause/11.3.8 M TLV 3 */
ELEM_MAND_TELV(BSSGP_IEI_CAUSE,BSSGP_PDU_TYPE, DE_BSSGP_CAUSE, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
* 10.4.20 MODIFY-BSS-PFC
@ -5023,7 +5025,7 @@ bssgp_modify_bss_pfc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint3
/* ABQP ABQP/11.3.43 M TLV 13-? */
ELEM_MAND_TELV(0x3a , GSM_A_PDU_TYPE_GM, DE_QOS , NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
@ -5053,7 +5055,7 @@ bssgp_modify_bss_pfc_ack(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gu
ELEM_MAND_TELV(0x3a , GSM_A_PDU_TYPE_GM, DE_QOS , NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
* 10.4.22 DELETE-BSS-PFC
@ -5077,7 +5079,7 @@ bssgp_delete_bss_pfc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint3
/* PFI PFI/11.3.42 M TLV 3 */
ELEM_MAND_TELV(BSSGP_IEI_PFI , GSM_A_PDU_TYPE_GM, DE_PACKET_FLOW_ID , NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
* 10.4.23 DELETE-BSS-PFC-ACK
@ -5101,7 +5103,7 @@ bssgp_delete_bss_pfc_ack(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gu
/* PFI PFI/11.3.42 M TLV 3 */
ELEM_MAND_TELV(BSSGP_IEI_PFI , GSM_A_PDU_TYPE_GM, DE_PACKET_FLOW_ID , NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
* 10.4.24 FLOW-CONTROL-PFC
@ -5135,7 +5137,7 @@ bssgp_flow_cntrl_pfc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint3
/* Flow Control Granularity (note) Flow Control Granularity/11.3.102 O TLV 3 */
ELEM_OPT_TELV(0x7e, BSSGP_PDU_TYPE, DE_BSSGP_FLOW_CONTROL_GRAN , NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
* 10.4.25 FLOW-CONTROL-PFC-ACK
@ -5161,7 +5163,7 @@ bssgp_flow_cntrl_pfc_ack(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gu
/* Tag Tag/11.3.34 M TLV 3 */
ELEM_MAND_TELV(BSSGP_IEI_TAG, BSSGP_PDU_TYPE, DE_BSSGP_TAG , NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
* 10.4.26 DELETE-BSS-PFC-REQ
@ -5187,7 +5189,7 @@ bssgp_delete_bss_pfc_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gu
/* Cause Cause/11.3.8 M TLV 3 */
ELEM_MAND_TELV(BSSGP_IEI_CAUSE,BSSGP_PDU_TYPE, DE_BSSGP_CAUSE, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
* 10.4.27 PS-HANDOVER-REQUIRED
@ -5237,7 +5239,7 @@ bssgp_ps_ho_required(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint3
/* TAC (note 6) Tracking Area Code/11.3.110 C TLV 5 */
ELEM_OPT_TELV(0x86, NAS_PDU_TYPE_EMM, DE_EMM_TRAC_AREA_ID, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
* 10.4.28 PS-HANDOVER-REQUIRED-ACK
@ -5271,7 +5273,7 @@ bssgp_ps_ho_required_ack(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gu
*/
ELEM_MAND_TELV(0x6b,BSSGP_PDU_TYPE, DE_BSSGP_TRG_TO_SRC_TRANSP_CONT, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
@ -5296,7 +5298,7 @@ bssgp_ps_ho_required_nack(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, g
/* Cause Cause/11.3.8 M TLV 3 */
ELEM_MAND_TELV(BSSGP_IEI_CAUSE,BSSGP_PDU_TYPE, DE_BSSGP_CAUSE, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
* 10.4.30 PS-HANDOVER-REQUEST
@ -5340,7 +5342,7 @@ bssgp_ps_ho_request(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
/* Reliable Inter RAT Handover Info (note 3) Reliable Inter RAT Handover Info/11.3.107 C TLV 3 */
ELEM_OPT_TELV(0x83,BSSGP_PDU_TYPE, DE_BSSGP_RELIABLE_INTER_RAT_HO_INF, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
@ -5367,7 +5369,7 @@ bssgp_ps_ho_request_ack(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
/* Target BSS to Source BSS Transparent Container Target BSS to Source BSS Transparent Container/11.3.80 M TLV 3-? */
ELEM_MAND_TELV(0x65,BSSGP_PDU_TYPE, DE_BSSGP_TARGET_BSS_TO_SOURCE_BSS_TRANSP_CONT, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
* 10.4.32 PS-HANDOVER-REQUEST-NACK
@ -5391,7 +5393,7 @@ bssgp_ps_ho_request_nack(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gu
/* Cause Cause/11.3.8 M TLV 3 */
ELEM_MAND_TELV(BSSGP_IEI_CAUSE,BSSGP_PDU_TYPE, DE_BSSGP_CAUSE, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
@ -5420,7 +5422,7 @@ bssgp_ps_ho_complete(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint3
/* Request for Inter RAT Handover Info (note 2) Request for Inter RAT Handover Info/11.3.106 C TLV 3 */
ELEM_OPT_TELV(0x82, BSSGP_PDU_TYPE, DE_BSSGP_REQ_FOR_INTER_RAT_HO_INFO , NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
* 10.4.34 PS-HANDOVER-CANCEL
@ -5452,7 +5454,7 @@ bssgp_ps_ho_cancel(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
/* Target eNB Identifier (note 1) (note 2) eNB Identifier/11.3.103 C TLV 3-n */
ELEM_OPT_TELV(0x7f,BSSGP_PDU_TYPE, DE_BSSGP_ENB_ID, " - Target");
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
@ -5484,7 +5486,7 @@ bssgp_ps_ho_complete_ack(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gu
/* E-UTRAN Inter RAT Handover Info E-UTRAN Inter RAT Handover Info/11.3.104 C (note 1) TLV 3-? */
ELEM_OPT_TELV(0x80, BSSGP_PDU_TYPE, DE_BSSGP_E_UTRAN_INTER_RAT_HO_INFO, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
* 10.5 PDU functional definitions and contents at LCS SAP
@ -5535,7 +5537,7 @@ bssgp_perform_loc_request(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, g
/* Requested GANSS Assistance Data (note 6) Requested GANSS Assistance Data/11.3.99 O TLV 3-? */
ELEM_OPT_TLV(0x7b, GSM_A_PDU_TYPE_BSSMAP, BE_GANSS_ASS_DTA, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
@ -5572,7 +5574,7 @@ bssgp_perform_loc_response(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
/* GANSS Positioning Data GANSS Positioning Data /11.3.101 O TLV 3-? */
ELEM_OPT_TELV(0x7d, GSM_A_PDU_TYPE_BSSMAP, BE_GANSS_POS_DTA, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
@ -5599,7 +5601,7 @@ bssgp_perform_loc_response_abort(tvbuff_t *tvb, proto_tree *tree, packet_info *p
/* LCS Cause LCS Cause/11.3.58 M TLV 3-? */
ELEM_MAND_TELV(BSSGP_IEI_LCS_CAUSE, GSM_PDU_TYPE_BSSMAP_LE, DE_BMAPLE_LCS_CAUSE, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
@ -5628,7 +5630,7 @@ bssgp_pos_cmd(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offse
/* RRLP APDU RRLP APDU/11.3.49 M TLV 3-? */
ELEM_MAND_TELV(BSSGP_IEI_RRLP_APDU, BSSGP_PDU_TYPE, DE_BSSGP_RRLP_APDU , NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
@ -5659,7 +5661,7 @@ bssgp_pos_resp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offs
/* LCS Cause b) LCS Cause/11.3.58 O TLV 3-? */
ELEM_OPT_TELV(BSSGP_IEI_LCS_CAUSE, GSM_PDU_TYPE_BSSMAP_LE, DE_BMAPLE_LCS_CAUSE, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
@ -5686,7 +5688,7 @@ bssgp_ran_inf_request(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint
/* RIM Container RAN-INFORMATION-REQUEST RIM Container/11.3.62a.1 M TLV 3-? */
ELEM_OPT_TELV(BSSGP_IEI_RAN_INF_REQUEST_RIM_CONTAINER, BSSGP_PDU_TYPE, DE_BSSGP_RAN_INF_REQUEST_RIM_CONT, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
@ -5713,7 +5715,7 @@ bssgp_ran_inf(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offse
ELEM_MAND_TELV(BSSGP_IEI_RAN_INF_RIM_CONTAINER, BSSGP_PDU_TYPE, DE_BSSGP_RAN_INF_RIM_CONT , " - Source Cell Identifier");
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
@ -5742,7 +5744,7 @@ bssgp_ran_inf_request_ack(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, g
/* RIM Container RAN-INFORMATION-ACK RIM Container/11.3.62a.3 M TLV 3-? */
ELEM_MAND_TELV(BSSGP_IEI_RAN_INF_ACK_RIM_CONTAINER, BSSGP_PDU_TYPE, DE_BSSGP_RAN_INFORMATION_ACK_RIM_CONT , NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
@ -5772,7 +5774,7 @@ bssgp_ran_inf_err(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 o
/* RIM Container RAN-INFORMATION-ERROR RIM Container/11.3.62a.4 M TLV 3-? */
ELEM_MAND_TELV(BSSGP_IEI_RAN_INF_ERROR_RIM_CONTAINER, BSSGP_PDU_TYPE, DE_BSSGP_RAN_INFORMATION_ERROR_RIM_CONT , NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
* 10.6.5 RAN-INFORMATION-APPLICATION-ERROR
@ -5800,7 +5802,7 @@ bssgp_ran_inf_app_err(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint
/* RIM Container RAN-INFORMATION-APPLICATION ERROR RIM Container/11.3.62a.5 M TLV 3-? */
ELEM_MAND_TELV(BSSGP_IEI_RAN_INF_APP_ERROR_RIM_CONTAINER, BSSGP_PDU_TYPE, DE_BSSGP_RAN_INF_APP_ERROR_RIM_CONT , NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
@ -5844,7 +5846,7 @@ bssgp_mbms_session_start_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo
ELEM_MAND_TELV(0x72, BSSGP_PDU_TYPE, DE_BSSGP_MBMS_SESSION_REP_NO, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
* 10.7.2 MBMS-SESSION-START-RESPONSE
@ -5873,7 +5875,7 @@ bssgp_mbms_session_start_resp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinf
/* MBMS Response MBMS Response/ 11.3.74 M TLV 3 */
ELEM_OPT_TELV(0x60, BSSGP_PDU_TYPE, DE_BSSGP_MBMS_RESPONSE, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
@ -5901,7 +5903,7 @@ bssgp_mbms_session_stop_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
/* MBMS Stop Cause MBMS Stop Cause/11.3.78 M TLV 3 */
ELEM_OPT_TELV(0x63, BSSGP_PDU_TYPE, DE_BSSGP_MBMS_STOP_CAUSE, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
* 10.7.4 MBMS-SESSION-STOP-RESPONSE
@ -5928,7 +5930,7 @@ bssgp_mbms_session_stop_resp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo
/* MBMS Response MBMS Response/ 11.3.74 M TLV 3 */
ELEM_OPT_TELV(0x60, BSSGP_PDU_TYPE, DE_BSSGP_MBMS_RESPONSE, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
* 10.7.5 MBMS-SESSION-UPDATE-REQUEST
@ -5971,7 +5973,7 @@ bssgp_mbms_session_update_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinf
/* MBMS Session Repetition Number MBMS Session Repetition Number/11.3.93 O TLV 3 */
ELEM_MAND_TELV(0x72, BSSGP_PDU_TYPE, DE_BSSGP_MBMS_SESSION_REP_NO, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
/*
* 10.7.6 MBMS-SESSION-UPDATE-RESPONSE
@ -6000,7 +6002,7 @@ bssgp_mbms_session_uptate_resp(tvbuff_t *tvb, proto_tree *tree, packet_info *pin
/* MBMS Response MBMS Response/ 11.3.74 M TLV 3 */
ELEM_OPT_TELV(0x60, BSSGP_PDU_TYPE, DE_BSSGP_MBMS_RESPONSE, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_bssgp_extraneous_data);
}
static const value_string bssgp_msg_strings[] = {
@ -6899,6 +6901,13 @@ proto_register_bssgp(void)
gint *ett[NUM_INDIVIDUAL_ELEMS +
NUM_BSSGP_ELEM +
NUM_BSSGP_MSG];
static ei_register_info ei[] = {
{ &ei_bssgp_extraneous_data, { "bssgp.extraneous_data", PI_PROTOCOL, PI_NOTE, "Extraneous Data, dissector bug or later version spec(report to wireshark.org)", EXPFILL }},
};
expert_module_t* expert_bssgp;
ett[0] = &ett_bssgp;
ett[1] = &ett_bssgp_list_of_setup_pfcs;
ett[2] = &ett_bssgp_pfcs_to_be_set_up_list_t10;
@ -6930,6 +6939,8 @@ proto_register_bssgp(void)
/* Required function calls to register the header fields and subtrees used */
proto_register_field_array(proto_bssgp, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
expert_bssgp = expert_register_protocol(proto_bssgp);
expert_register_field_array(expert_bssgp, ei, array_length(ei));
register_dissector("bssgp", dissect_bssgp, proto_bssgp);
/* Register configuration options */

View File

@ -732,6 +732,8 @@ static int hf_gsm_a_geo_loc_uncertainty_radius = -1;
static int hf_gsm_a_geo_loc_offset_angle = -1;
static int hf_gsm_a_geo_loc_included_angle = -1;
static expert_field ei_gsm_a_extraneous_data = EI_INIT;
static char a_bigbuf[1024];
sccp_msg_info_t* sccp_msg;
@ -2359,7 +2361,7 @@ de_mid(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guin
break;
}
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo, &ei_gsm_a_extraneous_data);
return(curr_offset - offset);
}
@ -2462,7 +2464,7 @@ de_ms_cm_2(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset,
curr_offset++;
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset,pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo, &ei_gsm_a_extraneous_data);
return(curr_offset - offset);
}
@ -3208,7 +3210,7 @@ de_ms_cm_3(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset,
/* translate to byte offset (we already know that we are on an octet boundary) */
curr_offset = bit_offset >> 3;
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo, &ei_gsm_a_extraneous_data);
return(len);
}
@ -3397,7 +3399,7 @@ de_cn_common_gsm_map_nas_sys_info(tvbuff_t *tvb, proto_tree *tree, packet_info *
proto_tree_add_item(tree, hf_gsm_a_lac, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
curr_offset += 2;
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo, &ei_gsm_a_extraneous_data);
return(curr_offset - offset);
}
@ -3423,7 +3425,7 @@ de_cs_domain_spec_sys_info(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
proto_tree_add_item(tree, hf_gsm_a_att, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
curr_offset++;
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo, &ei_gsm_a_extraneous_data);
return(curr_offset - offset);
}
@ -3455,7 +3457,7 @@ de_ps_domain_spec_sys_info(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
proto_tree_add_item(tree, hf_gsm_a_nmo, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
curr_offset++;
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo, &ei_gsm_a_extraneous_data);
return(curr_offset - offset);
}
@ -3499,7 +3501,7 @@ de_plmn_list(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset
g_snprintf(add_string, string_len, " - %u PLMN%s",
num_plmn, plurality(num_plmn, "", "s"));
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo, &ei_gsm_a_extraneous_data);
return(curr_offset - offset);
}
@ -3535,7 +3537,7 @@ de_nas_cont_for_ps_ho(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint
proto_tree_add_item(tree, hf_gsm_a_iov_ui, tvb, curr_offset, 4, ENC_BIG_ENDIAN);
curr_offset += 4;
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo, &ei_gsm_a_extraneous_data);
return(curr_offset - offset);
}
@ -4466,6 +4468,12 @@ proto_register_gsm_a_common(void)
static gint *ett[NUM_INDIVIDUAL_ELEMS +
NUM_GSM_COMMON_ELEM];
static ei_register_info ei[] = {
{ &ei_gsm_a_extraneous_data, { "gsm_a.extraneous_data", PI_PROTOCOL, PI_NOTE, "Extraneous Data, dissector bug or later version spec(report to wireshark.org)", EXPFILL }},
};
expert_module_t* expert_a_common;
last_offset = NUM_INDIVIDUAL_ELEMS;
for (i=0; i < NUM_GSM_COMMON_ELEM; i++, last_offset++)
@ -4482,6 +4490,9 @@ proto_register_gsm_a_common(void)
proto_register_field_array(proto_a_common, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
expert_a_common = expert_register_protocol(proto_a_common);
expert_register_field_array(expert_a_common, ei, array_length(ei));
gsm_a_tap = register_tap("gsm_a");
}

View File

@ -229,16 +229,13 @@ extern const char* get_gsm_a_msg_string(int pdu_type, int idx);
curr_offset += ((edc_len) - (edc_max_len)); \
}
#define EXTRANEOUS_DATA_CHECK_EXPERT(edc_len, edc_max_len, pinfo) \
#define EXTRANEOUS_DATA_CHECK_EXPERT(edc_len, edc_max_len, pinfo, ei) \
if ((edc_len) > (edc_max_len)) \
{ \
proto_item *expert_item; \
expert_item = proto_tree_add_text(tree, tvb, \
curr_offset, (edc_len) - (edc_max_len), "Extraneous Data, dissector bug or later version spec(report to wireshark.org)"); \
expert_add_info_format(pinfo, expert_item, PI_PROTOCOL, PI_NOTE, "Extraneous Data, dissector bug or later version spec(report to wireshark.org)"); \
PROTO_ITEM_SET_GENERATED(expert_item); \
proto_tree_add_expert(tree, pinfo, ei, tvb, curr_offset, (edc_len) - (edc_max_len)); \
curr_offset += ((edc_len) - (edc_max_len)); \
}
/* curr_offset, (edc_len) - (edc_max_len), "Extraneous Data, dissector bug or later version spec(report to wireshark.org)"); \ */
#define SHORT_DATA_CHECK(sdc_len, sdc_min_len) \
if ((sdc_len) < (sdc_min_len)) \

View File

@ -536,6 +536,13 @@ static gint ett_bc_oct_7 = -1;
static gint ett_epc_ue_tl_a_lb_setup = -1;
static gint ett_mm_timer = -1;
static expert_field ei_gsm_a_dtap_keypad_info_not_dtmf_digit = EI_INIT;
static expert_field ei_gsm_a_dtap_text_string_not_multiple_of_7 = EI_INIT;
static expert_field ei_gsm_a_dtap_autn = EI_INIT;
static expert_field ei_gsm_a_dtap_invalid_ia5_character = EI_INIT;
static expert_field ei_gsm_a_dtap_auts = EI_INIT;
static expert_field ei_gsm_a_dtap_end_mark_unexpected = EI_INIT;
static char a_bigbuf[1024];
static dissector_handle_t data_handle;
@ -592,8 +599,7 @@ de_auth_param_autn(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
proto_tree_add_item(subtree, hf_gsm_a_dtap_autn_mac, tvb, offset + 8, 8, ENC_NA);
}
else
expert_add_info_format(pinfo, item, PI_MALFORMED, PI_WARN,
"AUTN length not equal to 16");
expert_add_info(pinfo, item, &ei_gsm_a_dtap_autn);
return(len);
}
@ -641,8 +647,7 @@ de_auth_fail_param(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
proto_tree_add_item(subtree, hf_gsm_a_dtap_auts_mac_s, tvb, offset + 6, 8, ENC_NA);
}
else
expert_add_info_format(pinfo, item, PI_MALFORMED, PI_WARN,
"AUTS length not equal to 14");
expert_add_info(pinfo, item, &ei_gsm_a_dtap_auts);
return(len);
}
@ -742,7 +747,7 @@ de_network_name(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 off
num_text_bits = ((len - 1) << 3) - num_spare_bits;
if (num_spare_bits && (num_text_bits % 7))
{
expert_add_info_format(pinfo, item, PI_MALFORMED, PI_WARN, "Value leads to a Text String whose length is not a multiple of 7 bits");
expert_add_info(pinfo, item, &ei_gsm_a_dtap_text_string_not_multiple_of_7);
}
/*
* If the number of spare bits is 7, then we have unpacked one extra
@ -1088,7 +1093,7 @@ de_emerg_num_list(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 o
malformed_number = TRUE;
if(malformed_number)
expert_add_info_format(pinfo, item, PI_MALFORMED, PI_WARN, "\'f\' end mark present in unexpected position");
expert_add_info(pinfo, item, &ei_gsm_a_dtap_end_mark_unexpected);
curr_offset = curr_offset + en_len;
count++;
@ -2534,7 +2539,7 @@ de_bcd_num(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset,
malformed_number = TRUE;
if(malformed_number)
expert_add_info_format(pinfo, item, PI_MALFORMED, PI_WARN, "\'f\' end mark present in unexpected position");
expert_add_info(pinfo, item, &ei_gsm_a_dtap_end_mark_unexpected);
return(len);
}
@ -2609,7 +2614,7 @@ de_sub_addr(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset,
"Subaddress: %s", a_bigbuf);
if(invalid_ia5_char)
expert_add_info_format(pinfo, item, PI_MALFORMED, PI_WARN, "Invalid IA5 character(s) in string (value > 127)");
expert_add_info(pinfo, item, &ei_gsm_a_dtap_invalid_ia5_character);
return(len);
}
@ -3032,7 +3037,7 @@ de_keypad_facility(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
if (((keypad_char < '0') || (keypad_char > '9')) &&
((keypad_char < 'A') || (keypad_char > 'D')) &&
(keypad_char != '*') && (keypad_char != '#'))
expert_add_info_format(pinfo, item, PI_MALFORMED, PI_WARN, "Keypad information contains character that is not a DTMF digit");
expert_add_info(pinfo, item, &ei_gsm_a_dtap_keypad_info_not_dtmf_digit);
curr_offset++;
if (add_string)
@ -7156,6 +7161,17 @@ proto_register_gsm_a_dtap(void)
NUM_GSM_DTAP_MSG_SMS + NUM_GSM_DTAP_MSG_SS + NUM_GSM_DTAP_MSG_TP +
NUM_GSM_DTAP_ELEM];
static ei_register_info ei[] = {
{ &ei_gsm_a_dtap_autn, { "gsm_a.dtap.autn.invalid", PI_MALFORMED, PI_WARN, "AUTN length not equal to 16", EXPFILL }},
{ &ei_gsm_a_dtap_auts, { "gsm_a.dtap.auts.invalid", PI_MALFORMED, PI_WARN, "AUTS length not equal to 14", EXPFILL }},
{ &ei_gsm_a_dtap_text_string_not_multiple_of_7, { "gsm_a.dtap.text_string_not_multiple_of_7", PI_MALFORMED, PI_WARN, "Value leads to a Text String whose length is not a multiple of 7 bits", EXPFILL }},
{ &ei_gsm_a_dtap_end_mark_unexpected, { "gsm_a.dtap.end_mark_unexpected", PI_MALFORMED, PI_WARN, "\'f\' end mark present in unexpected position", EXPFILL }},
{ &ei_gsm_a_dtap_invalid_ia5_character, { "gsm_a.dtap.invalid_ia5_character", PI_MALFORMED, PI_WARN, "Invalid IA5 character(s) in string (value > 127)", EXPFILL }},
{ &ei_gsm_a_dtap_keypad_info_not_dtmf_digit, { "gsm_a.dtap.keypad_info_not_dtmf_digit", PI_MALFORMED, PI_WARN, "Keypad information contains character that is not a DTMF digit", EXPFILL }},
};
expert_module_t* expert_a_dtap;
ett[0] = &ett_dtap_msg;
ett[1] = &ett_dtap_oct_1;
ett[2] = &ett_cm_srvc_type;
@ -7224,6 +7240,9 @@ proto_register_gsm_a_dtap(void)
proto_register_field_array(proto_a_dtap, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
expert_a_dtap = expert_register_protocol(proto_a_dtap);
expert_register_field_array(expert_a_dtap, ei, array_length(ei));
/* subdissector code */
register_dissector("gsm_a_dtap", dissect_dtap, proto_a_dtap);

View File

@ -468,6 +468,8 @@ static gint ett_gmm_gprs_timer = -1;
static gint ett_sm_tft = -1;
static gint ett_sm_pco = -1;
static expert_field ei_gsm_a_gm_extraneous_data = EI_INIT;
static dissector_handle_t data_handle;
static dissector_handle_t rrc_irat_ho_info_handle;
static dissector_handle_t lte_rrc_ue_eutra_cap_handle;
@ -895,7 +897,7 @@ de_gmm_ptmsi_sig2(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 o
proto_item_append_text(curr_item, "%s", add_string ? add_string : "");
curr_offset += 3;
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo, &ei_gsm_a_gm_extraneous_data);
return (curr_offset - offset);
}
@ -993,7 +995,7 @@ de_gmm_rec_npdu_lst(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
} while (curr_len > 1);
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo, &ei_gsm_a_gm_extraneous_data);
return (curr_offset - offset);
}
@ -1166,7 +1168,7 @@ de_gmm_ms_net_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 o
proto_tree_add_item(tree, hf_gsm_a_gmm_net_geran_net_sharing, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
curr_offset++;
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo, &ei_gsm_a_gm_extraneous_data);
return (curr_offset - offset);
}
@ -2981,7 +2983,7 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
curr_offset += curr_len;
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo, &ei_gsm_a_gm_extraneous_data);
return (curr_offset - offset);
}
@ -3304,7 +3306,7 @@ de_gmm_ps_lcs_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 o
curr_offset++;
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo, &ei_gsm_a_gm_extraneous_data);
return (curr_offset - offset);
}
@ -3556,7 +3558,7 @@ de_gc_context_stat(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
curr_offset++;
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo, &ei_gsm_a_gm_extraneous_data);
return (curr_offset - offset);
}
@ -3925,7 +3927,7 @@ de_sm_apn(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, g
proto_tree_add_string(tree, hf_gsm_a_gm_apn, tvb, curr_offset, len, str+1);
curr_offset += len;
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo, &ei_gsm_a_gm_extraneous_data);
return (curr_offset - offset);
}
@ -4164,7 +4166,7 @@ de_sm_pco(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, g
}
curr_offset += curr_len;
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo, &ei_gsm_a_gm_extraneous_data);
return (curr_offset - offset);
}
@ -4263,7 +4265,7 @@ de_sm_pdp_addr(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offs
curr_offset += 4;
}
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo, &ei_gsm_a_gm_extraneous_data);
return (curr_offset - offset);
}
@ -4772,7 +4774,7 @@ de_sm_qos(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, g
curr_offset += 1;
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo, &ei_gsm_a_gm_extraneous_data);
return (curr_offset - offset);
}
@ -4919,7 +4921,7 @@ de_sm_linked_ti(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 off
}
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo, &ei_gsm_a_gm_extraneous_data);
return (curr_offset - offset);
}
@ -4992,7 +4994,7 @@ de_sm_pflow_id(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offs
if (add_string)
g_snprintf(add_string, string_len, " - %s", rval_to_str(value, gsm_a_sm_packet_flow_id_vals, "Unknown"));
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo, &ei_gsm_a_gm_extraneous_data);
return (curr_offset - offset);
}
@ -5339,7 +5341,7 @@ de_sm_tflow_temp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 of
}
}
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo, &ei_gsm_a_gm_extraneous_data);
return (len);
}
@ -5360,7 +5362,7 @@ de_sm_tmgi(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset,
NO_MORE_DATA_CHECK(len);
curr_offset = dissect_e212_mcc_mnc(tvb, pinfo, tree, curr_offset, TRUE);
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo, &ei_gsm_a_gm_extraneous_data);
return (curr_offset - offset);
}
@ -5409,7 +5411,7 @@ de_sm_mbms_bearer_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint
curr_offset += 1;
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo, &ei_gsm_a_gm_extraneous_data);
return (curr_offset - offset);
}
@ -5426,7 +5428,7 @@ de_sm_mbms_prot_conf_opt(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gu
proto_tree_add_bits_item(tree, hf_gsm_a_spare_bits, tvb, (curr_offset<<3), 8, ENC_BIG_ENDIAN);
curr_offset++;
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo, &ei_gsm_a_gm_extraneous_data);
return (curr_offset - offset);
}
@ -5663,7 +5665,7 @@ dtap_gmm_attach_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
ELEM_OPT_TLV(0x10, GSM_A_PDU_TYPE_GM, DE_NET_RES_ID_CONT, " - TMSI based NRI container");
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_gsm_a_gm_extraneous_data);
}
/*
@ -5727,7 +5729,7 @@ dtap_gmm_attach_acc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
ELEM_OPT_TLV(0x66, GSM_A_PDU_TYPE_GM, DE_ADD_NET_FEAT_SUP, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_gsm_a_gm_extraneous_data);
}
/*
@ -5750,7 +5752,7 @@ dtap_gmm_attach_com(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
ELEM_OPT_TLV( 0x2B, GSM_A_PDU_TYPE_GM, DE_EUTRAN_IRAT_INFO_CONTAINER, " - E-UTRAN inter RAT handover information");
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_gsm_a_gm_extraneous_data);
}
/*
@ -5774,7 +5776,7 @@ dtap_gmm_attach_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
ELEM_OPT_TLV(0x3A, GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_2, " - T3346 value");
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_gsm_a_gm_extraneous_data);
}
/*
@ -5803,7 +5805,7 @@ dtap_gmm_detach_req_MT(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guin
ELEM_OPT_TV( 0x25, GSM_A_PDU_TYPE_GM, DE_GMM_CAUSE, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_gsm_a_gm_extraneous_data);
}
static void
@ -5831,7 +5833,7 @@ dtap_gmm_detach_req_MO(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guin
ELEM_OPT_TLV( 0x19, GSM_A_PDU_TYPE_GM, DE_P_TMSI_SIG_2, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_gsm_a_gm_extraneous_data);
}
static void
@ -5880,7 +5882,7 @@ dtap_gmm_detach_acc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
return;
}
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_gsm_a_gm_extraneous_data);
}
/*
@ -5910,7 +5912,7 @@ dtap_gmm_ptmsi_realloc_cmd(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
ELEM_OPT_TV( 0x19, GSM_A_PDU_TYPE_GM, DE_P_TMSI_SIG, " - P-TMSI Signature" );
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_gsm_a_gm_extraneous_data);
}
/*
@ -5928,7 +5930,7 @@ dtap_gmm_ptmsi_realloc_com(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
pinfo->p2p_dir = P2P_DIR_RECV;
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_gsm_a_gm_extraneous_data);
}
/*
@ -5983,13 +5985,13 @@ dtap_gmm_auth_ciph_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guin
if (curr_len == 0 )
{
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_gsm_a_gm_extraneous_data);
return;
}
ELEM_OPT_TLV( 0x28, GSM_A_PDU_TYPE_DTAP, DE_AUTH_PARAM_AUTN, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_gsm_a_gm_extraneous_data);
}
/*
@ -6019,7 +6021,7 @@ dtap_gmm_auth_ciph_resp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
ELEM_OPT_TLV( 0x29, GSM_A_PDU_TYPE_DTAP, DE_AUTH_RESP_PARAM_EXT, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_gsm_a_gm_extraneous_data);
}
/*
@ -6036,7 +6038,7 @@ dtap_gmm_auth_ciph_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guin
pinfo->p2p_dir = P2P_DIR_SENT;
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_gsm_a_gm_extraneous_data);
}
/*
@ -6058,7 +6060,7 @@ dtap_gmm_auth_ciph_fail(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
ELEM_OPT_TLV( 0x30, GSM_A_PDU_TYPE_DTAP, DE_AUTH_FAIL_PARAM, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_gsm_a_gm_extraneous_data);
}
/*
@ -6093,7 +6095,7 @@ dtap_gmm_ident_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
return;
}
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_gsm_a_gm_extraneous_data);
}
/*
@ -6113,7 +6115,7 @@ dtap_gmm_ident_res(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
ELEM_MAND_LV( GSM_A_PDU_TYPE_COMMON, DE_MID, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_gsm_a_gm_extraneous_data);
}
/*
@ -6187,7 +6189,7 @@ dtap_gmm_rau_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 of
ELEM_OPT_TLV(0x10, GSM_A_PDU_TYPE_GM, DE_NET_RES_ID_CONT, " - TMSI based NRI container");
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_gsm_a_gm_extraneous_data);
}
/*
@ -6251,7 +6253,7 @@ dtap_gmm_rau_acc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 of
ELEM_OPT_TLV(0x66, GSM_A_PDU_TYPE_GM, DE_ADD_NET_FEAT_SUP, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_gsm_a_gm_extraneous_data);
}
/*
@ -6275,7 +6277,7 @@ dtap_gmm_rau_com(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 of
ELEM_OPT_TLV( 0x2B, GSM_A_PDU_TYPE_GM, DE_EUTRAN_IRAT_INFO_CONTAINER, " - E-UTRAN inter RAT handover information");
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_gsm_a_gm_extraneous_data);
}
/*
@ -6305,7 +6307,7 @@ dtap_gmm_rau_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 of
ELEM_OPT_TLV(0x3A, GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_2, " - T3346 value");
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_gsm_a_gm_extraneous_data);
}
/*
@ -6325,7 +6327,7 @@ dtap_gmm_status(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 off
ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_GMM_CAUSE, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_gsm_a_gm_extraneous_data);
}
/*
@ -6355,7 +6357,7 @@ dtap_gmm_information(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint3
ELEM_OPT_TLV( 0x49, GSM_A_PDU_TYPE_DTAP, DE_DAY_SAVING_TIME, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_gsm_a_gm_extraneous_data);
}
/*
@ -6393,7 +6395,7 @@ dtap_gmm_service_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint3
ELEM_OPT_TV_SHORT(0xD0, GSM_A_PDU_TYPE_GM, DE_DEVICE_PROPERTIES, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_gsm_a_gm_extraneous_data);
}
/*
@ -6416,7 +6418,7 @@ dtap_gmm_service_acc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint3
/* MBMS context status 10.5.7.6 TLV 2 - 18 */
ELEM_OPT_TLV( 0x35, GSM_A_PDU_TYPE_GM, DE_MBMS_CTX_STATUS, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_gsm_a_gm_extraneous_data);
}
/*
@ -6438,7 +6440,7 @@ dtap_gmm_service_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint3
ELEM_OPT_TLV(0x3A, GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_2, " - T3346 value");
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_gsm_a_gm_extraneous_data);
}
/*
@ -6475,7 +6477,7 @@ dtap_sm_act_pdp_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
ELEM_OPT_TV_SHORT(0xC0, GSM_A_PDU_TYPE_GM, DE_DEVICE_PROPERTIES, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_gsm_a_gm_extraneous_data);
}
/*
@ -6519,7 +6521,7 @@ dtap_sm_act_pdp_acc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
ELEM_OPT_TV_SHORT(0xB0 , GSM_A_PDU_TYPE_GM, DE_SM_CONNECTIVITY_TYPE, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_gsm_a_gm_extraneous_data);
}
/*
@ -6546,7 +6548,7 @@ dtap_sm_act_pdp_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
ELEM_OPT_TLV(0x37, GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_3, " - T3396 value");
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_gsm_a_gm_extraneous_data);
}
/*
@ -6582,7 +6584,7 @@ dtap_sm_act_sec_pdp_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
ELEM_OPT_TV_SHORT(0xC0, GSM_A_PDU_TYPE_GM, DE_DEVICE_PROPERTIES, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_gsm_a_gm_extraneous_data);
}
/*
@ -6620,7 +6622,7 @@ dtap_sm_act_sec_pdp_acc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
ELEM_OPT_TLV( 0x27, GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_gsm_a_gm_extraneous_data);
}
/*
@ -6647,7 +6649,7 @@ dtap_sm_act_sec_pdp_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
ELEM_OPT_TLV(0x37, GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_3, " - T3396 value");
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_gsm_a_gm_extraneous_data);
}
/*
@ -6674,7 +6676,7 @@ dtap_sm_req_pdp_act(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
ELEM_OPT_TLV( 0x27, GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_gsm_a_gm_extraneous_data);
}
/*
@ -6699,7 +6701,7 @@ dtap_sm_req_pdp_act_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
ELEM_OPT_TLV( 0x27, GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_gsm_a_gm_extraneous_data);
}
/*
@ -6740,7 +6742,7 @@ dtap_sm_mod_pdp_req_net(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
ELEM_OPT_TLV( 0x36, GSM_A_PDU_TYPE_GM, DE_TRAFFIC_FLOW_TEMPLATE, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_gsm_a_gm_extraneous_data);
}
/*
@ -6771,7 +6773,7 @@ dtap_sm_mod_pdp_req_ms(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guin
ELEM_OPT_TV_SHORT(0xC0, GSM_A_PDU_TYPE_GM, DE_DEVICE_PROPERTIES, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_gsm_a_gm_extraneous_data);
}
/*
@ -6794,7 +6796,7 @@ dtap_sm_mod_pdp_acc_ms(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guin
ELEM_OPT_TLV( 0x27, GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_gsm_a_gm_extraneous_data);
}
/*
@ -6825,7 +6827,7 @@ dtap_sm_mod_pdp_acc_net(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
ELEM_OPT_TLV( 0x27, GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_gsm_a_gm_extraneous_data);
}
/*
@ -6853,7 +6855,7 @@ dtap_sm_mod_pdp_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
ELEM_OPT_TLV(0x37, GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_3, " - T3396 value");
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_gsm_a_gm_extraneous_data);
}
/*
@ -6883,7 +6885,7 @@ dtap_sm_deact_pdp_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint
ELEM_OPT_TLV(0x37, GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_3, " - T3396 value");
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_gsm_a_gm_extraneous_data);
}
/*
@ -6907,7 +6909,7 @@ dtap_sm_deact_pdp_acc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint
ELEM_OPT_TLV( 0x35, GSM_A_PDU_TYPE_GM, DE_MBMS_PROT_CONF_OPT, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_gsm_a_gm_extraneous_data);
}
/*
@ -6939,7 +6941,7 @@ dtap_sm_req_sec_pdp_act(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
/* 27 Protocol configuration options Protocol configuration options 10.5.6.3 O TLV 3 - 253 */
ELEM_OPT_TLV( 0x27, GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_gsm_a_gm_extraneous_data);
}
/*
@ -6965,7 +6967,7 @@ dtap_sm_req_sec_pdp_act_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
/* 27 Protocol configuration options Protocol configuration options 10.5.6.3 O TLV 3 - 253 */
ELEM_OPT_TLV( 0x27, GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_gsm_a_gm_extraneous_data);
}
/*
@ -6987,7 +6989,7 @@ dtap_sm_notif(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offse
ELEM_MAND_LV( GSM_A_PDU_TYPE_GM, DE_SM_NOTIF_IND, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_gsm_a_gm_extraneous_data);
}
/*
@ -7009,7 +7011,7 @@ dtap_sm_status(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offs
ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_SM_CAUSE, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_gsm_a_gm_extraneous_data);
}
/*
@ -7048,7 +7050,7 @@ dtap_sm_act_mbms_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint3
ELEM_OPT_TV_SHORT(0xC0, GSM_A_PDU_TYPE_GM, DE_DEVICE_PROPERTIES, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_gsm_a_gm_extraneous_data);
}
/*
@ -7073,7 +7075,7 @@ dtap_sm_act_mbms_acc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint3
ELEM_OPT_TLV( 0x35, GSM_A_PDU_TYPE_GM, DE_MBMS_PROT_CONF_OPT, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_gsm_a_gm_extraneous_data);
}
/*
@ -7098,7 +7100,7 @@ dtap_sm_act_mbms_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint3
ELEM_OPT_TLV(0x37, GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_3, " - T3396 value");
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_gsm_a_gm_extraneous_data);
}
/*
@ -7125,7 +7127,7 @@ dtap_sm_req_mbms_act(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint3
ELEM_OPT_TLV( 0x35, GSM_A_PDU_TYPE_GM, DE_MBMS_PROT_CONF_OPT, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_gsm_a_gm_extraneous_data);
}
/*
@ -7148,7 +7150,7 @@ dtap_sm_req_mbms_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint3
ELEM_OPT_TLV( 0x35, GSM_A_PDU_TYPE_GM, DE_MBMS_PROT_CONF_OPT, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo, &ei_gsm_a_gm_extraneous_data);
}
#define NUM_GSM_DTAP_MSG_GMM (sizeof(gsm_a_dtap_msg_gmm_strings)/sizeof(value_string))
@ -8328,6 +8330,12 @@ proto_register_gsm_a_gm(void)
NUM_GSM_DTAP_MSG_GMM + NUM_GSM_DTAP_MSG_SM +
NUM_GSM_GM_ELEM];
static ei_register_info ei[] = {
{ &ei_gsm_a_gm_extraneous_data, { "gsm_a.gm.extraneous_data", PI_PROTOCOL, PI_NOTE, "Extraneous Data, dissector bug or later version spec(report to wireshark.org)", EXPFILL }},
};
expert_module_t* expert_gsm_a_gm;
ett[0] = &ett_tc_component;
ett[1] = &ett_tc_invoke_id;
ett[2] = &ett_tc_linked_id;
@ -8372,6 +8380,8 @@ proto_register_gsm_a_gm(void)
proto_register_field_array(proto_a_gm, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
expert_gsm_a_gm = expert_register_protocol(proto_a_gm);
expert_register_field_array(expert_gsm_a_gm, ei, array_length(ei));
/* subdissector code */
gprs_sm_pco_subdissector_table = register_dissector_table("sm_pco.protocol",

View File

@ -799,6 +799,9 @@ static gint ett_ccch_msg = -1;
static gint ett_ccch_oct_1 = -1;
static gint ett_sacch_msg = -1;
static expert_field ei_gsm_a_rr_ie_overrun = EI_INIT;
static expert_field ei_gsm_a_rr_ie_underrun = EI_INIT;
static char a_bigbuf[1024];
static dissector_handle_t data_handle;
@ -1315,11 +1318,11 @@ de_rr_ba_list_pref(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
if (((bit_offset + 7) >> 3) > (offset + len))
{
expert_add_info_format(pinfo, proto_tree_get_parent(tree), PI_MALFORMED, PI_ERROR, "IE over-runs stated length");
expert_add_info(pinfo, proto_tree_get_parent(tree), &ei_gsm_a_rr_ie_overrun);
}
else if ((bit_offset >> 3) < (offset + len))
{
expert_add_info_format(pinfo, proto_tree_get_parent(tree), PI_COMMENTS_GROUP, PI_NOTE, "IE under-runs stated length");
expert_add_info(pinfo, proto_tree_get_parent(tree), &ei_gsm_a_rr_ie_underrun);
}
return len;
}
@ -1353,11 +1356,11 @@ de_rr_utran_freq_list(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint
if (((bit_offset + 7) >> 3) > (offset + len))
{
expert_add_info_format(pinfo, proto_tree_get_parent(tree), PI_MALFORMED, PI_ERROR, "IE over-runs stated length");
expert_add_info(pinfo, proto_tree_get_parent(tree), &ei_gsm_a_rr_ie_overrun);
}
else if ((bit_offset >> 3) < (offset + len))
{
expert_add_info_format(pinfo, proto_tree_get_parent(tree), PI_COMMENTS_GROUP, PI_NOTE, "IE under-runs stated length");
expert_add_info(pinfo, proto_tree_get_parent(tree), &ei_gsm_a_rr_ie_underrun);
}
return (len);
}
@ -2388,11 +2391,11 @@ de_rr_dyn_arfcn_map(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
if (((bit_offset + 7) >> 3) > (offset + len))
{
expert_add_info_format(pinfo, proto_tree_get_parent(tree), PI_MALFORMED, PI_ERROR, "IE over-runs stated length");
expert_add_info(pinfo, proto_tree_get_parent(tree), &ei_gsm_a_rr_ie_overrun);
}
else if ((bit_offset >> 3) < (offset + len))
{
expert_add_info_format(pinfo, proto_tree_get_parent(tree), PI_COMMENTS_GROUP, PI_NOTE, "IE under-runs stated length");
expert_add_info(pinfo, proto_tree_get_parent(tree), &ei_gsm_a_rr_ie_underrun);
}
return(len);
}
@ -12636,6 +12639,13 @@ proto_register_gsm_a_rr(void)
NUM_GSM_RR_REST_OCTETS_ELEM +
NUM_GSM_SACCH_MSG_RR];
static ei_register_info ei[] = {
{ &ei_gsm_a_rr_ie_overrun, { "gsm_a.rr.ie_overrun", PI_MALFORMED, PI_ERROR, "IE over-runs stated length", EXPFILL }},
{ &ei_gsm_a_rr_ie_underrun, { "gsm_a.rr.ie_underrun", PI_COMMENTS_GROUP, PI_NOTE, "IE under-runs stated length", EXPFILL }},
};
expert_module_t* expert_a_rr;
ett[0] = &ett_ccch_msg;
ett[1] = &ett_ccch_oct_1;
ett[2] = &ett_sacch_msg;
@ -12671,6 +12681,8 @@ proto_register_gsm_a_rr(void)
proto_register_protocol("GSM A-I/F Radio Resource Management", "GSM RR", "gsm_a.rr");
proto_register_field_array(proto_a_rr, hf, array_length(hf));
expert_a_rr = expert_register_protocol(proto_a_rr);
expert_register_field_array(expert_a_rr, ei, array_length(ei));
/* Register the protocol name and description */
proto_a_ccch =

View File

@ -956,6 +956,8 @@ static int hf_si6_restoctet_vbs_vgcs_options = -1;
static int hf_si6_restoctet_max_lapdm = -1;
static int hf_si6_restoctet_bandindicator = -1;
static expert_field ei_li = EI_INIT;
static dissector_handle_t data_handle;
/* Payload type as defined in TS 44.060 / 10.4.7 */
@ -6756,7 +6758,7 @@ static guint8 construct_gprs_data_segment_li_array(tvbuff_t *tvb, proto_tree *tr
}
else
{
expert_add_info_format(pinfo, item, PI_UNDECODED, PI_ERROR, "Too many LIs, corresponding blocks will not be decoded");
expert_add_info(pinfo, item, &ei_li);
}
proto_tree_add_bits_item(tree, hf_me, tvb, (offset * 8) + 6, 2, ENC_BIG_ENDIAN);
proto_tree_add_bits_ret_val(tree, hf_e, tvb, (offset * 8) + 7, 1, e, ENC_BIG_ENDIAN);
@ -6785,7 +6787,7 @@ static guint8 construct_egprs_data_segment_li_array(tvbuff_t *tvb, proto_tree *t
}
else
{
expert_add_info_format(pinfo, item, PI_UNDECODED, PI_ERROR, "Too many LIs, corresponding blocks will not be decoded");
expert_add_info(pinfo, item, &ei_li);
}
offset++;
}
@ -12150,6 +12152,11 @@ proto_register_gsm_rlcmac(void)
};
static ei_register_info ei[] = {
{ &ei_li, { "gsm_rlcmac.li.too_many", PI_UNDECODED, PI_ERROR, "Too many LIs, corresponding blocks will not be decoded", EXPFILL }},
};
expert_module_t* expert_gsm_rlcmac;
/* Register the protocol name and description */
proto_gsm_rlcmac = proto_register_protocol("Radio Link Control, Medium Access Control, 3GPP TS44.060",
@ -12158,6 +12165,8 @@ proto_register_gsm_rlcmac(void)
/* Required function calls to register the header fields and subtrees used */
proto_register_field_array(proto_gsm_rlcmac, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
expert_gsm_rlcmac = expert_register_protocol(proto_gsm_rlcmac);
expert_register_field_array(expert_gsm_rlcmac, ei, array_length(ei));
register_dissector("gsm_rlcmac_ul", dissect_gsm_rlcmac_uplink, proto_gsm_rlcmac);
register_dissector("gsm_rlcmac_dl", dissect_gsm_rlcmac_downlink, proto_gsm_rlcmac);
}