From Neil Piercy:

1 new split file (GMM & SM in one file) and diff patches for the others. The RR, RP and BSSMAP patches are really a tidy-up: now they are split it becomes clear what was redundant code.

svn path=/trunk/; revision=26064
This commit is contained in:
Anders Broman 2008-08-24 17:42:30 +00:00
parent 924894e617
commit 2226bccd44
8 changed files with 5965 additions and 5939 deletions

View File

@ -426,6 +426,7 @@ CLEAN_DISSECTOR_SRC = \
packet-gsm_a_bssmap.c \
packet-gsm_a_common.c \
packet-gsm_a_dtap.c \
packet-gsm_a_gm.c \
packet-gsm_a_rp.c \
packet-gsm_a_rr.c \
packet-gsm_bsslap.c \

View File

@ -277,11 +277,6 @@ static dissector_handle_t dtap_handle;
static packet_info *g_pinfo;
static proto_tree *g_tree;
/*
* this should be set on a per message basis, if possible
*/
static gint is_uplink;
typedef enum
{
BE_CIC, /* Circuit Identity Code */
@ -2084,8 +2079,6 @@ bssmap_ass_req(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
curr_offset = offset;
curr_len = len;
is_uplink = IS_UPLINK_FALSE;
ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CHAN_TYPE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CHAN_TYPE, "");
ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_L3_HEADER_INFO].value, BSSAP_PDU_TYPE_BSSMAP, BE_L3_HEADER_INFO, "");
@ -2122,8 +2115,6 @@ bssmap_ass_complete(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
curr_offset = offset;
curr_len = len;
is_uplink = IS_UPLINK_TRUE;
ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_RR_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_RR_CAUSE, "");
ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CIC].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC, "");
@ -2156,8 +2147,6 @@ bssmap_ass_failure(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
curr_offset = offset;
curr_len = len;
is_uplink = IS_UPLINK_TRUE;
ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, "");
ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_RR_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_RR_CAUSE, "");
@ -2182,8 +2171,6 @@ bssmap_block(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
curr_offset = offset;
curr_len = len;
is_uplink = IS_UPLINK_TRUE;
ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, "");
ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_CIC].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC, "");
@ -2206,8 +2193,6 @@ bssmap_block_ack(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
curr_offset = offset;
curr_len = len;
is_uplink = IS_UPLINK_TRUE;
ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_CIC].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC, "");
EXTRANEOUS_DATA_CHECK(curr_len, 0);
@ -2226,8 +2211,6 @@ bssmap_unblock(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
curr_offset = offset;
curr_len = len;
is_uplink = IS_UPLINK_TRUE;
ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_CIC].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC, "");
ELEM_OPT_T(gsm_bssmap_elem_strings[BE_CONN_REL_REQ].value, BSSAP_PDU_TYPE_BSSMAP, BE_CONN_REL_REQ, "");
@ -2248,8 +2231,6 @@ bssmap_unblock_ack(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
curr_offset = offset;
curr_len = len;
is_uplink = IS_UPLINK_TRUE;
ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_CIC].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC, "");
EXTRANEOUS_DATA_CHECK(curr_len, 0);
@ -2268,8 +2249,6 @@ bssmap_ho_req(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
curr_offset = offset;
curr_len = len;
is_uplink = IS_UPLINK_FALSE;
ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CHAN_TYPE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CHAN_TYPE, "");
ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_ENC_INFO].value, BSSAP_PDU_TYPE_BSSMAP, BE_ENC_INFO, "");
@ -2328,8 +2307,6 @@ bssmap_ho_reqd(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
curr_offset = offset;
curr_len = len;
is_uplink = IS_UPLINK_TRUE;
ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, "");
ELEM_OPT_T(gsm_bssmap_elem_strings[BE_RESP_REQ].value, BSSAP_PDU_TYPE_BSSMAP, BE_RESP_REQ, "");
@ -2362,8 +2339,6 @@ bssmap_ho_req_ack(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
curr_offset = offset;
curr_len = len;
is_uplink = IS_UPLINK_TRUE;
ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_L3_INFO].value, BSSAP_PDU_TYPE_BSSMAP, BE_L3_INFO, "");
ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CHOSEN_CHAN].value, BSSAP_PDU_TYPE_BSSMAP, BE_CHOSEN_CHAN, "");
@ -2394,8 +2369,6 @@ bssmap_ho_cmd(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
curr_offset = offset;
curr_len = len;
is_uplink = IS_UPLINK_FALSE;
ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_L3_INFO].value, BSSAP_PDU_TYPE_BSSMAP, BE_L3_INFO, "");
ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_CELL_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID, "");
@ -2416,8 +2389,6 @@ bssmap_ho_complete(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
curr_offset = offset;
curr_len = len;
is_uplink = IS_UPLINK_TRUE;
ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_RR_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_RR_CAUSE, "");
EXTRANEOUS_DATA_CHECK(curr_len, 0);
@ -2436,8 +2407,6 @@ bssmap_ho_cand_enq(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
curr_offset = offset;
curr_len = len;
is_uplink = IS_UPLINK_FALSE;
ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_NUM_MS].value, BSSAP_PDU_TYPE_BSSMAP, BE_NUM_MS, "");
ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CELL_ID_LIST].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID_LIST, "");
@ -2460,8 +2429,6 @@ bssmap_ho_cand_resp(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
curr_offset = offset;
curr_len = len;
is_uplink = IS_UPLINK_TRUE;
ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_NUM_MS].value, BSSAP_PDU_TYPE_BSSMAP, BE_NUM_MS, "");
ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CELL_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID, "");
@ -2482,8 +2449,6 @@ bssmap_ho_failure(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
curr_offset = offset;
curr_len = len;
is_uplink = IS_UPLINK_TRUE;
ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, "");
ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_RR_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_RR_CAUSE, "");
@ -2508,8 +2473,6 @@ bssmap_paging(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
curr_offset = offset;
curr_len = len;
is_uplink = IS_UPLINK_FALSE;
ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_IMSI].value, BSSAP_PDU_TYPE_BSSMAP, BE_IMSI, "");
ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_TMSI].value, BSSAP_PDU_TYPE_BSSMAP, BE_TMSI, "");
@ -2536,8 +2499,6 @@ bssmap_clear_req(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
curr_offset = offset;
curr_len = len;
is_uplink = IS_UPLINK_TRUE;
ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, "");
EXTRANEOUS_DATA_CHECK(curr_len, 0);
@ -2556,8 +2517,6 @@ bssmap_clear_cmd(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
curr_offset = offset;
curr_len = len;
is_uplink = IS_UPLINK_FALSE;
ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_L3_HEADER_INFO].value, BSSAP_PDU_TYPE_BSSMAP, BE_L3_HEADER_INFO, "");
ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, "");
@ -2578,8 +2537,6 @@ bssmap_reset(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
curr_offset = offset;
curr_len = len;
is_uplink = IS_UPLINK_UNKNOWN;
ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, "");
EXTRANEOUS_DATA_CHECK(curr_len, 0);
@ -2598,8 +2555,6 @@ bssmap_ho_performed(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
curr_offset = offset;
curr_len = len;
is_uplink = IS_UPLINK_TRUE;
ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, "");
ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CELL_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID, "");
@ -2628,8 +2583,6 @@ bssmap_overload(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
curr_offset = offset;
curr_len = len;
is_uplink = IS_UPLINK_TRUE;
ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, "");
ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_CELL_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID, "");
@ -2650,8 +2603,6 @@ bssmap_cm_upd(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
curr_offset = offset;
curr_len = len;
is_uplink = IS_UPLINK_FALSE;
ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CM_INFO_2].value, BSSAP_PDU_TYPE_BSSMAP, BE_CM_INFO_2, "");
ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_CM_INFO_3].value, BSSAP_PDU_TYPE_BSSMAP, BE_CM_INFO_3, "");
@ -2672,8 +2623,6 @@ bssmap_ciph_mode_cmd(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
curr_offset = offset;
curr_len = len;
is_uplink = IS_UPLINK_FALSE;
ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_L3_HEADER_INFO].value, BSSAP_PDU_TYPE_BSSMAP, BE_L3_HEADER_INFO, "");
ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_ENC_INFO].value, BSSAP_PDU_TYPE_BSSMAP, BE_ENC_INFO, "");
@ -2696,8 +2645,6 @@ bssmap_ciph_mode_complete(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint
curr_offset = offset;
curr_len = len;
is_uplink = IS_UPLINK_TRUE;
ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_L3_MSG].value, BSSAP_PDU_TYPE_BSSMAP, BE_L3_MSG, "");
ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CHOSEN_ENC_ALG].value, BSSAP_PDU_TYPE_BSSMAP, BE_CHOSEN_ENC_ALG, "");
@ -2718,8 +2665,6 @@ bssmap_cl3_info(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
curr_offset = offset;
curr_len = len;
is_uplink = IS_UPLINK_TRUE;
ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CELL_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID, "");
ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_L3_INFO].value, BSSAP_PDU_TYPE_BSSMAP, BE_L3_INFO, "");
@ -2746,8 +2691,6 @@ bssmap_sapi_rej(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
curr_offset = offset;
curr_len = len;
is_uplink = IS_UPLINK_TRUE;
ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_DLCI].value, BSSAP_PDU_TYPE_BSSMAP, BE_DLCI, "");
ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, "");
@ -2768,8 +2711,6 @@ bssmap_ho_reqd_rej(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
curr_offset = offset;
curr_len = len;
is_uplink = IS_UPLINK_FALSE;
ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, "");
EXTRANEOUS_DATA_CHECK(curr_len, 0);
@ -2788,8 +2729,6 @@ bssmap_reset_cct(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
curr_offset = offset;
curr_len = len;
is_uplink = IS_UPLINK_TRUE;
ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_CIC].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC, "");
ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, "");
@ -2810,8 +2749,6 @@ bssmap_reset_cct_ack(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
curr_offset = offset;
curr_len = len;
is_uplink = IS_UPLINK_TRUE;
ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_CIC].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC, "");
EXTRANEOUS_DATA_CHECK(curr_len, 0);
@ -2830,8 +2767,6 @@ bssmap_cct_group_block(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint le
curr_offset = offset;
curr_len = len;
is_uplink = IS_UPLINK_TRUE;
ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, "");
ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_CIC].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC, "");
@ -2854,8 +2789,6 @@ bssmap_cct_group_block_ack(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guin
curr_offset = offset;
curr_len = len;
is_uplink = IS_UPLINK_TRUE;
ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_CIC].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC, "");
ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_CIC_LIST].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC_LIST, "");
@ -2876,8 +2809,6 @@ bssmap_cct_group_unblock(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint
curr_offset = offset;
curr_len = len;
is_uplink = IS_UPLINK_TRUE;
ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_CIC].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC, "");
ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_CIC_LIST].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC_LIST, "");
@ -2898,8 +2829,6 @@ bssmap_cct_group_unblock_ack(tvbuff_t *tvb, proto_tree *tree, guint32 offset, gu
curr_offset = offset;
curr_len = len;
is_uplink = IS_UPLINK_TRUE;
ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_CIC].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC, "");
ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_CIC_LIST].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC_LIST, "");
@ -2920,8 +2849,6 @@ bssmap_confusion(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
curr_offset = offset;
curr_len = len;
is_uplink = IS_UPLINK_TRUE;
ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, "");
ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_DIAG].value, BSSAP_PDU_TYPE_BSSMAP, BE_DIAG, "");
@ -2942,8 +2869,6 @@ bssmap_unequipped_cct(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len
curr_offset = offset;
curr_len = len;
is_uplink = IS_UPLINK_TRUE;
ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_CIC].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC, "");
ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CIC_LIST].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC_LIST, "");
@ -2964,8 +2889,6 @@ bssmap_ciph_mode_rej(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
curr_offset = offset;
curr_len = len;
is_uplink = IS_UPLINK_TRUE;
ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, "");
EXTRANEOUS_DATA_CHECK(curr_len, 0);
@ -2984,8 +2907,6 @@ bssmap_load_ind(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
curr_offset = offset;
curr_len = len;
is_uplink = IS_UPLINK_TRUE;
ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_TIME_IND].value, BSSAP_PDU_TYPE_BSSMAP, BE_TIME_IND, "");
ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CELL_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID, "");
@ -3012,8 +2933,6 @@ bssmap_change_cct(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
curr_offset = offset;
curr_len = len;
is_uplink = IS_UPLINK_FALSE;
ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, "");
EXTRANEOUS_DATA_CHECK(curr_len, 0);
@ -3032,8 +2951,6 @@ bssmap_change_cct_ack(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len
curr_offset = offset;
curr_len = len;
is_uplink = IS_UPLINK_TRUE;
ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_CIC].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC, "");
EXTRANEOUS_DATA_CHECK(curr_len, 0);
@ -3052,8 +2969,6 @@ bssmap_common_id(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
curr_offset = offset;
curr_len = len;
is_uplink = IS_UPLINK_FALSE;
ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_IMSI].value, BSSAP_PDU_TYPE_BSSMAP, BE_IMSI, "");
EXTRANEOUS_DATA_CHECK(curr_len, 0);
@ -3072,8 +2987,6 @@ bssmap_lsa_info(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
curr_offset = offset;
curr_len = len;
is_uplink = IS_UPLINK_FALSE;
ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_LSA_INFO].value, BSSAP_PDU_TYPE_BSSMAP, BE_LSA_INFO, "");
EXTRANEOUS_DATA_CHECK(curr_len, 0);
@ -3092,8 +3005,6 @@ bssmap_conn_oriented(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
curr_offset = offset;
curr_len = len;
is_uplink = IS_UPLINK_FALSE;
ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_APDU].value, BSSAP_PDU_TYPE_BSSMAP, BE_APDU, "");
ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SEG].value, BSSAP_PDU_TYPE_BSSMAP, BE_SEG, "");

View File

@ -269,6 +269,9 @@ const char* get_gsm_a_msg_string(int pdu_type, int idx)
case GSM_A_PDU_TYPE_COMMON:
msg_string = gsm_common_elem_strings[idx].strptr;
break;
case GSM_A_PDU_TYPE_GM:
msg_string = gsm_gm_elem_strings[idx].strptr;
break;
default:
DISSECTOR_ASSERT_NOT_REACHED();
}
@ -296,6 +299,9 @@ static int get_hf_elem_id(int pdu_type)
case GSM_A_PDU_TYPE_COMMON:
hf_elem_id = hf_gsm_a_common_elem_id;
break;
case GSM_A_PDU_TYPE_GM:
hf_elem_id = hf_gsm_a_gm_elem_id;
break;
default:
DISSECTOR_ASSERT_NOT_REACHED();
}

View File

@ -82,11 +82,19 @@ extern gint ett_gsm_common_elem[];
extern elem_fcn common_elem_fcn[];
extern int hf_gsm_a_common_elem_id;
extern const value_string gsm_gm_elem_strings[];
extern gint ett_gsm_gm_elem[];
extern elem_fcn gm_elem_fcn[];
extern int hf_gsm_a_gm_elem_id;
extern void get_gmm_msg_params(guint8 oct, const gchar **msg_str, int *ett_tree, int *hf_idx, msg_fcn *msg_fcn);
extern void get_sm_msg_params(guint8 oct, const gchar **msg_str, int *ett_tree, int *hf_idx, msg_fcn *msg_fcn);
extern sccp_msg_info_t* sccp_msg;
extern sccp_assoc_info_t* sccp_assoc;
extern int gsm_a_tap;
extern gboolean lower_nibble;
extern packet_info *gsm_a_dtap_pinfo;
/* common field values */
extern int hf_gsm_a_length;
@ -106,6 +114,7 @@ extern int hf_gsm_a_rr_chnl_needed_ch1;
#define GSM_A_PDU_TYPE_RP 2
#define GSM_A_PDU_TYPE_RR 3
#define GSM_A_PDU_TYPE_COMMON 4
#define GSM_A_PDU_TYPE_GM 5
extern const char* get_gsm_a_msg_string(int pdu_type, int idx);
@ -185,6 +194,11 @@ extern const char* get_gsm_a_msg_string(int pdu_type, int idx);
SEV_elem_ett = ett_gsm_common_elem; \
SEV_elem_funcs = common_elem_fcn; \
break; \
case GSM_A_PDU_TYPE_GM: \
SEV_elem_names = gsm_gm_elem_strings; \
SEV_elem_ett = ett_gsm_gm_elem; \
SEV_elem_funcs = gm_elem_fcn; \
break; \
default: \
proto_tree_add_text(tree, \
tvb, curr_offset, -1, \
@ -500,7 +514,6 @@ typedef enum
DE_AUTH_FAIL_PARAM, /* Authentication Failure Parameter (UMTS authentication challenge only) */
DE_CM_SRVC_TYPE, /* CM Service Type */
DE_ID_TYPE, /* Identity Type */
/* Pos 50 */
DE_LOC_UPD_TYPE, /* Location Updating Type */
DE_NETWORK_NAME, /* Network Name */
DE_REJ_CAUSE, /* Reject Cause */
@ -512,7 +525,6 @@ typedef enum
DE_DAY_SAVING_TIME, /* Daylight Saving Time */
DE_EMERGENCY_NUM_LIST, /* Emergency Number List */
/* Call Control Information Elements 10.5.4 */
/* Pos 60 */
DE_AUX_STATES, /* Auxiliary States */
DE_BEARER_CAP, /* Bearer Capability */
DE_CC_CAP, /* Call Control Capabilities */
@ -551,6 +563,27 @@ typedef enum
DE_IMM_MOD_IND, /* Immediate Modification Indicator */
DE_SUP_CODEC_LIST, /* Supported Codec List */
DE_SRVC_CAT, /* Service Category */
/* Short Message Service Information Elements [5] 8.1.4 */
DE_CP_USER_DATA, /* CP-User Data */
DE_CP_CAUSE, /* CP-Cause */
/* Tests procedures information elements 3GPP TS 44.014 6.4.0 and 3GPP TS 34.109 6.4.0 */
DE_TP_SUB_CHANNEL, /* Close TCH Loop Cmd Sub-channel */
DE_TP_ACK, /* Open Loop Cmd Ack */
DE_TP_LOOP_TYPE, /* Close Multi-slot Loop Cmd Loop type*/
DE_TP_LOOP_ACK, /* Close Multi-slot Loop Ack Result */
DE_TP_TESTED_DEVICE, /* Test Interface Tested device */
DE_TP_PDU_DESCRIPTION, /* GPRS Test Mode Cmd PDU description */
DE_TP_MODE_FLAG, /* GPRS Test Mode Cmd Mode flag */
DE_TP_EGPRS_MODE_FLAG, /* EGPRS Start Radio Block Loopback Cmd Mode flag */
DE_TP_UE_TEST_LOOP_MODE, /* Close UE Test Loop Mode */
DE_TP_UE_POSITIONING_TECHNOLOGY, /* UE Positioning Technology */
DE_TP_RLC_SDU_COUNTER_VALUE, /* RLC SDU Counter Value */
DE_NONE /* NONE */
}
dtap_elem_idx_t;
typedef enum
{
/* GPRS Mobility Management Information Elements 10.5.5 */
DE_ATTACH_RES, /* [7] 10.5.1 Attach Result*/
DE_ATTACH_TYPE, /* [7] 10.5.2 Attach Type */
@ -579,10 +612,6 @@ typedef enum
DE_NET_FEAT_SUP, /* [7] 10.5.23 Network Feature Support */
DE_RAT_INFO_CONTAINER, /* [7] 10.5.24 Inter RAT information container */
/* [7] 10.5.25 Requested MS information */
/* Short Message Service Information Elements [5] 8.1.4 */
DE_CP_USER_DATA, /* CP-User Data */
DE_CP_CAUSE, /* CP-Cause */
/* Session Management Information Elements 10.5.6 */
DE_ACC_POINT_NAME, /* Access Point Name */
DE_NET_SAPI, /* Network Service Access Point Identifier */
@ -602,20 +631,8 @@ typedef enum
DE_GPRS_TIMER_2, /* [8] 10.5.7.4 GPRS Timer 2 */
DE_RAD_PRIO_2, /* [8] 10.5.7.5 Radio Priority 2 */
DE_MBMS_CTX_STATUS, /* [8] 10.5.7.6 MBMS context status */
/* Tests procedures information elements 3GPP TS 44.014 6.4.0 and 3GPP TS 34.109 6.4.0 */
DE_TP_SUB_CHANNEL, /* Close TCH Loop Cmd Sub-channel */
DE_TP_ACK, /* Open Loop Cmd Ack */
DE_TP_LOOP_TYPE, /* Close Multi-slot Loop Cmd Loop type*/
DE_TP_LOOP_ACK, /* Close Multi-slot Loop Ack Result */
DE_TP_TESTED_DEVICE, /* Test Interface Tested device */
DE_TP_PDU_DESCRIPTION, /* GPRS Test Mode Cmd PDU description */
DE_TP_MODE_FLAG, /* GPRS Test Mode Cmd Mode flag */
DE_TP_EGPRS_MODE_FLAG, /* EGPRS Start Radio Block Loopback Cmd Mode flag */
DE_TP_UE_TEST_LOOP_MODE, /* Close UE Test Loop Mode */
DE_TP_UE_POSITIONING_TECHNOLOGY, /* UE Positioning Technology */
DE_TP_RLC_SDU_COUNTER_VALUE, /* RLC SDU Counter Value */
DE_NONE /* NONE */
DE_GM_NONE /* NONE */
}
dtap_elem_idx_t;
gm_elem_idx_t;
#endif /* __PACKET_GSM_A_COMMON_H__ */

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -89,11 +89,6 @@ static dissector_table_t sms_dissector_table; /* SMS TPDU */
static packet_info *g_pinfo;
static proto_tree *g_tree;
/*
* this should be set on a per message basis, if possible
*/
static gint is_uplink;
typedef enum
{
/* Short Message Service Information Elements [5] 8.2 */
@ -286,7 +281,6 @@ rp_data_n_ms(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
curr_offset = offset;
curr_len = len;
is_uplink = IS_UPLINK_FALSE;
g_pinfo->p2p_dir = P2P_DIR_SENT;
ELEM_MAND_V(GSM_A_PDU_TYPE_RP, DE_RP_MESSAGE_REF);
@ -313,7 +307,6 @@ rp_data_ms_n(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
curr_offset = offset;
curr_len = len;
is_uplink = IS_UPLINK_TRUE;
g_pinfo->p2p_dir = P2P_DIR_RECV;
ELEM_MAND_V(GSM_A_PDU_TYPE_RP, DE_RP_MESSAGE_REF);
@ -340,8 +333,6 @@ rp_smma(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
curr_offset = offset;
curr_len = len;
is_uplink = IS_UPLINK_TRUE;
ELEM_MAND_V(GSM_A_PDU_TYPE_RP, DE_RP_MESSAGE_REF);
EXTRANEOUS_DATA_CHECK(curr_len, 0);
@ -360,7 +351,6 @@ rp_ack_n_ms(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
curr_offset = offset;
curr_len = len;
is_uplink = IS_UPLINK_FALSE;
g_pinfo->p2p_dir = P2P_DIR_SENT;
ELEM_MAND_V(GSM_A_PDU_TYPE_RP, DE_RP_MESSAGE_REF);
@ -383,7 +373,6 @@ rp_ack_ms_n(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
curr_offset = offset;
curr_len = len;
is_uplink = IS_UPLINK_TRUE;
g_pinfo->p2p_dir = P2P_DIR_RECV;
ELEM_MAND_V(GSM_A_PDU_TYPE_RP, DE_RP_MESSAGE_REF);
@ -406,7 +395,6 @@ rp_error_n_ms(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
curr_offset = offset;
curr_len = len;
is_uplink = IS_UPLINK_FALSE;
g_pinfo->p2p_dir = P2P_DIR_SENT;
ELEM_MAND_V(GSM_A_PDU_TYPE_RP, DE_RP_MESSAGE_REF);
@ -431,7 +419,6 @@ rp_error_ms_n(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
curr_offset = offset;
curr_len = len;
is_uplink = IS_UPLINK_TRUE;
g_pinfo->p2p_dir = P2P_DIR_RECV;
ELEM_MAND_V(GSM_A_PDU_TYPE_RP, DE_RP_MESSAGE_REF);

View File

@ -459,15 +459,6 @@ static char a_bigbuf[1024];
static dissector_handle_t data_handle;
static packet_info *g_pinfo;
static proto_tree *g_tree;
/*
* this should be set on a per message basis, if possible
*/
static gint is_uplink;
typedef enum
{
/* Radio Resource Management Information Elements 10.5.2, most are from 10.5.1 */
@ -3488,7 +3479,7 @@ dtap_rr_gprs_sus_req(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
ELEM_MAND_V(GSM_A_PDU_TYPE_RR, DE_RR_TLLI);
/* Routeing Area Identification 10.5.5.15 M V 6 */
ELEM_MAND_V(GSM_A_PDU_TYPE_DTAP, DE_RAI);
ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_RAI);
/* Suspension cause 10.5.2.47 M V 1 */
ELEM_MAND_V(GSM_A_PDU_TYPE_RR, DE_RR_SUS_CAU);
@ -3852,8 +3843,6 @@ dtap_rr_paging_resp(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
curr_offset = offset;
curr_len = len;
is_uplink = IS_UPLINK_TRUE;
/*
* special dissection for Cipher Key Sequence Number
*/
@ -3923,8 +3912,6 @@ dtap_rr_rr_status(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
curr_offset = offset;
curr_len = len;
is_uplink = IS_UPLINK_TRUE;
ELEM_MAND_V(GSM_A_PDU_TYPE_RR, DE_RR_CAUSE);
EXTRANEOUS_DATA_CHECK(curr_len, 0);
@ -4186,7 +4173,7 @@ void get_rr_msg_params(guint8 oct, const gchar **msg_str, int *ett_tree, int *hf
{
gint idx;
*msg_str = match_strval_idx((guint32) (oct & DTAP_RR_IEI_MASK), gsm_a_dtap_msg_rr_strings, &idx);
*msg_str = match_strval_idx((guint32) (oct & DTAP_RR_IEI_MASK), gsm_a_dtap_msg_rr_strings, &idx);
*ett_tree = ett_gsm_dtap_msg_rr[idx];
*hf_idx = hf_gsm_a_dtap_msg_rr_type;
*msg_fcn = dtap_msg_rr_fcn[idx];
@ -4212,8 +4199,8 @@ dissect_ccch(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
guint32 offset, saved_offset;
guint32 len;
guint32 oct_1, oct_2;
proto_item *dtap_item = NULL;
proto_tree *dtap_tree = NULL;
proto_item *ccch_item = NULL;
proto_tree *ccch_tree = NULL;
proto_item *oct_1_item = NULL;
proto_tree *pd_tree = NULL;
proto_tree *saved_tree = NULL;
@ -4256,9 +4243,6 @@ dissect_ccch(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
offset = 0;
oct_2 = 0;
g_pinfo = pinfo;
g_tree = tree;
/* Skip pseeudo hdr here */
offset = 1;
@ -4306,16 +4290,16 @@ dissect_ccch(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
* create the protocol tree
*/
if (msg_str == NULL){
dtap_item = proto_tree_add_protocol_format(tree, proto_a_ccch, tvb, 0, len,
ccch_item = proto_tree_add_protocol_format(tree, proto_a_ccch, tvb, 0, len,
"GSM CCCH - Message Type (0x%02x)",
oct);
dtap_tree = proto_item_add_subtree(dtap_item, ett_ccch_msg);
ccch_tree = proto_item_add_subtree(ccch_item, ett_ccch_msg);
}else{
dtap_item = proto_tree_add_protocol_format(tree, proto_a_ccch, tvb, 0, -1,
ccch_item = proto_tree_add_protocol_format(tree, proto_a_ccch, tvb, 0, -1,
"GSM CCCH - %s", msg_str);
dtap_tree = proto_item_add_subtree(dtap_item, ett_tree);
ccch_tree = proto_item_add_subtree(ccch_item, ett_tree);
}
if (check_col(pinfo->cinfo, COL_INFO)){
@ -4334,13 +4318,13 @@ dissect_ccch(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
pseudo_len = tvb_get_guint8(tvb,offset)>>2;
saved_tree = tree;
tree = dtap_tree;
tree = ccch_tree;
ELEM_MAND_V(GSM_A_PDU_TYPE_RR, DE_RR_L2_PSEUDO_LEN);
tree = saved_tree;
offset = saved_offset;
oct_1_item =
proto_tree_add_text(dtap_tree,
proto_tree_add_text(ccch_tree,
tvb, 1, 1,
"Protocol Discriminator: %s",
val_to_str(pd, protocol_discriminator_vals, "Unknown (%u)"));
@ -4390,7 +4374,7 @@ dissect_ccch(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/*
* add DTAP message name
*/
proto_tree_add_uint_format(dtap_tree, hf_idx, tvb, offset, 1, oct,
proto_tree_add_uint_format(ccch_tree, hf_idx, tvb, offset, 1, oct,
"Message Type: %s",msg_str ? msg_str : "(Unknown)");
offset++;
@ -4411,10 +4395,10 @@ dissect_ccch(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
* decode elements
*/
if (msg_fcn == NULL){
proto_tree_add_text(dtap_tree, tvb, offset, len - offset,
proto_tree_add_text(ccch_tree, tvb, offset, len - offset,
"Message Elements");
}else{
(*msg_fcn)(tvb, dtap_tree, offset, len - offset);
(*msg_fcn)(tvb, ccch_tree, offset, len - offset);
}
}
@ -4435,7 +4419,7 @@ proto_register_gsm_a_rr(void)
"", HFILL }
},
{ &hf_gsm_a_rr_elem_id,
{ "Element ID", "gsm_a_dtap.elem_id",
{ "Element ID", "gsm_a_rr.elem_id",
FT_UINT8, BASE_DEC, NULL, 0,
"", HFILL }
},