diff --git a/epan/dissectors/packet-bssgp.c b/epan/dissectors/packet-bssgp.c index d38a4355a9..9b099b3d0d 100644 --- a/epan/dissectors/packet-bssgp.c +++ b/epan/dissectors/packet-bssgp.c @@ -80,6 +80,7 @@ static dissector_handle_t rrlp_handle; static dissector_handle_t data_handle; static module_t *bssgp_module; +static dissector_table_t diameter_3gpp_avp_dissector_table; /* Initialize the protocol and registered fields */ static int proto_bssgp = -1; @@ -143,7 +144,10 @@ static int hf_bssgp_b_pfc = -1; static int hf_bssgp_precedence = -1; static int hf_bssgp_serv_utran_cco = -1; -static int hf_bssgp_mbs_session_id = -1; +static int hf_bssgp_mbms_session_id = -1; +static int hf_bssgp_mbms_cause = -1; +static int hf_bssgp_mbms_num_ra_ids = -1; +static int hf_bssgp_session_inf = -1; static int hf_bssgp_gb_if = -1; static int hf_bssgp_ps_ho = -1; static int hf_bssgp_src_to_trg_transp_cont = -1; @@ -154,6 +158,8 @@ static int hf_bssgp_container_id = -1; static int hf_bssgp_global_tfi = -1; static int hf_bssgp_ul_tfi = -1; static int hf_bssgp_dl_tfi = -1; +static int hf_bssgp_time_to_MBMS_data_tran = -1; +static int hf_bssgp_mbms_session_rep_no = -1; static int hf_bssgp_ps_ho_cmd = -1; static int hf_bssgp_sipsi = -1; static int hf_bssgp_type = -1; @@ -177,6 +183,7 @@ static gint ett_bssgp_pfcs_to_be_set_up_list_arp = -1; static gint ett_bssgp_pfcs_to_be_set_up_list_t10 = -1; 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; /* PDU type coding, v6.5.0, table 11.3.26, p 80 */ #define BSSGP_PDU_DL_UNITDATA 0x00 @@ -319,14 +326,13 @@ static gint ett_bssgp_pfc_flow_control_parameters_pfc = -1; #define BSSGP_PDU_RESERVED_0X7E 0x7e #define BSSGP_PDU_RESERVED_0X7F 0x7f -/* -0x80 MBMS-SESSION-START-REQUEST -0x81 MBMS-SESSION-START-RESPONSE -0x82 MBMS-SESSION-STOP-REQUEST -0x83 MBMS-SESSION-STOP-RESPONSE -0x84 MBMS-SESSION-UPDATE-REQUEST -0x85 MBMS-SESSION-UPDATE-RESPONSE -*/ +#define BSSGP_PDU_MBMS_SESSION_START_REQ 0x80 +#define BSSGP_PDU_MBMS_SESSION_START_RESP 0x81 +#define BSSGP_PDU_MBMS_SESSION_STOP_REQ 0x82 +#define BSSGP_PDU_MBMS_SESSION_STOP_RESP 0x83 +#define BSSGP_PDU_MBMS_SESSION_UPDATE_REQ 0x84 +#define BSSGP_PDU_MBMS_SESSION_UPDATE_RESP 0x85 + /* 0x91 PS-HANDOVER-COMPLETE 0x92 PS-HANDOVER-CANCEL @@ -2248,18 +2254,165 @@ de_bssgp_mbms_session_id(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint curr_offset = offset; /* MBMS Session Identity */ - proto_tree_add_item(tree, hf_bssgp_mbs_session_id, tvb, curr_offset, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(tree, hf_bssgp_mbms_session_id, tvb, curr_offset, 1, ENC_BIG_ENDIAN); curr_offset++; return(curr_offset-offset); } /* * 11.3.72 MBMS Session Duration + */ +static guint16 +de_bssgp_mbms_session_dur(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_) +{ + tvbuff_t *new_tvb; + guint32 curr_offset; + + curr_offset = offset; + + /* AVP Code: 904 MBMS-Session-Duration Registered by packet-gtp.c */ + new_tvb =tvb_new_subset(tvb, offset, len, len); + dissector_try_uint(diameter_3gpp_avp_dissector_table, 904, new_tvb, gpinfo, tree); + + return(curr_offset-offset); +} +/* * 11.3.73 MBMS Service Area Identity List + * octet 3 - 514 + * MBMS-Service-Area AVP encoded as in 3GPP TS 29.061, + * excluding AVP Header fields (as defined in IETF RFC 3588 [33]). + * + */ +static guint16 +de_bssgp_mbms_sai_list(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_) +{ + tvbuff_t *new_tvb; + guint32 curr_offset; + + curr_offset = offset; + + /* AVP Code: 903 MBMS-Service-Area Registered by packet-gtp.c */ + new_tvb =tvb_new_subset(tvb, offset, len, len); + dissector_try_uint(diameter_3gpp_avp_dissector_table, 903, new_tvb, gpinfo, tree); + + return(curr_offset-offset); +} +/* * 11.3.74 MBMS Response + */ + +static const value_string bssgp_mbms_cause_vals[] = { + { 0, "Acknowledge" }, + { 1, "Acknowledge, initiate data transfer" }, + { 2, "Acknowledge, data transfer initiated from other SGSN" }, + { 3, "Reject - Congestion" }, + { 4, "Reject - None of the listed MBMS Service Areas are supported by BSS" }, + { 5, "Reject - MBMS Service Context is released due to interrupted data flow" }, + + { 6, "Unspecified in this version of the protocol" }, + { 7, "Unspecified in this version of the protocol" }, + { 8, "Unspecified in this version of the protocol" }, + { 9, "Unspecified in this version of the protocol" }, + { 10, "Unspecified in this version of the protocol" }, + { 11, "Unspecified in this version of the protocol" }, + { 12, "Unspecified in this version of the protocol" }, + { 13, "Unspecified in this version of the protocol" }, + { 14, "Unspecified in this version of the protocol" }, + { 15, "Unspecified in this version of the protocol" }, + { 0, NULL }, +}; +static value_string_ext bssgp_mbms_cause_vals_ext = VALUE_STRING_EXT_INIT(bssgp_mbms_cause_vals); + +static guint16 +de_bssgp_mbms_response(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_) +{ + guint32 curr_offset; + + curr_offset = offset; + + /* MBMS Session Identity */ + proto_tree_add_item(tree, hf_bssgp_mbms_cause, tvb, curr_offset, 1, ENC_BIG_ENDIAN); + curr_offset++; + + return(curr_offset-offset); +} +/* * 11.3.75 MBMS Routing Area List + */ +/* Number of Routing Areas (octet 3) */ +static const value_string bssgp_mbms_num_ra_ids_vals[] = { + { 0, "Notification shall not be sent to any Routing Areas in the BSS" }, + { 1, "'1' Routing Area Identities" }, + { 2, "'1' Routing Area Identities" }, + { 3, "'1' Routing Area Identities" }, + { 4, "'1' Routing Area Identities" }, + { 5, "'1' Routing Area Identities" }, + { 6, "'1' Routing Area Identities" }, + { 7, "'1' Routing Area Identities" }, + { 8, "'1' Routing Area Identities" }, + { 9, "'1' Routing Area Identities" }, + { 10, "'1' Routing Area Identities" }, + { 11, "'1' Routing Area Identities" }, + { 12, "'1' Routing Area Identities" }, + { 13, "'1' Routing Area Identities" }, + { 14, "'1' Routing Area Identities" }, + { 15, "Notification shall be sent in all Routing Areas in the BSS" }, + { 0, NULL }, +}; +static value_string_ext bssgp_mbms_num_ra_ids_vals_ext = VALUE_STRING_EXT_INIT(bssgp_mbms_num_ra_ids_vals); + +static guint16 +de_bssgp_mbms_ra_list(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_) +{ + proto_item *ti; + proto_tree *rai_tree; + guint32 curr_offset; + guint8 num_ra_ids; + int i; + + curr_offset = offset; + + /* octet 3 Number of Routing Area Identifications Spare Spare Spare Spare */ + num_ra_ids = tvb_get_guint8(tvb,curr_offset) >> 4; + proto_tree_add_item(tree, hf_bssgp_mbms_num_ra_ids, tvb, curr_offset, 1, ENC_BIG_ENDIAN); + + /* octet 4 - 11 Routing Area Identification 1 (etc)*/ + for (i = 0; i < num_ra_ids; i++) { + ti = proto_tree_add_text(tree, tvb, curr_offset, 8, "Routing Area Identification (%u)", i + 1); + rai_tree = proto_item_add_subtree(ti, ett_bssgp_ra_id); + + /* The element is coded as the Routing Area Identification information element in + * 3GPP TS 24.008, not including 3GPP TS 24.008 IEI and 3GPP TS 24.008 length indicator. + */ + de_gmm_rai(tvb, tree, curr_offset , 6, NULL, 0); + + curr_offset+=8; + } + + return(curr_offset-offset); +} + +/* * 11.3.76 MBMS Session Information */ + +static const true_false_string tfs_bssgp_bc_mc = { + "Multicast Session", + "Broadcast Session" +}; +static guint16 +de_bssgp_mbms_session_inf(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_) +{ + guint32 curr_offset; + + curr_offset = offset; + + /* MBMS Session Identity */ + proto_tree_add_item(tree, hf_bssgp_session_inf, tvb, curr_offset, 1, ENC_BIG_ENDIAN); + curr_offset++; + + return(curr_offset-offset); +} /* * 11.3.77 TMGI (Temporary Mobile Group Identity) */ @@ -2580,8 +2733,36 @@ de_bssgp_global_tfi(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _ */ /* * 11.3.92 Time to MBMS Data Transfer + */ +static guint16 +de_bssgp_time_to_MBMS_data_tran(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_) +{ + guint32 curr_offset; + guint8 value; + + curr_offset = offset; + + /* 0 = 1s etc */ + value = tvb_get_guint8(tvb,curr_offset) + 1; + proto_tree_add_uint(tree, hf_bssgp_time_to_MBMS_data_tran, tvb, curr_offset, 1, value); + + return(len); +} +/* * 11.3.93 MBMS Session Repetition Number */ +static guint16 +de_bssgp_mbms_session_rep_no(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_) +{ + guint32 curr_offset; + + curr_offset = offset; + + proto_tree_add_item(tree, hf_bssgp_mbms_session_rep_no, tvb, curr_offset, 1, ENC_BIG_ENDIAN); + curr_offset++; + + return(len); +} /* * 11.3.94 Inter RAT Handover Info */ @@ -3069,11 +3250,11 @@ const value_string bssgp_elem_strings[] = { /* 0x53, SGSAP_PDU_TYPE, DE_SGSAP_GLOBAL_CN_ID */ /* 11.3.69 Global CN-Id */ { 0x00, "RIM Routing Information" }, /* 11.3.70 RIM Routing Information */ { 0x00, "MBMS Session Identity" }, /* 11.3.71 MBMS Session Identity */ - /* 11.3.72 MBMS Session Duration */ - /* 11.3.73 MBMS Service Area Identity List */ - /* 11.3.74 MBMS Response */ - /* 11.3.75 MBMS Routing Area List */ - /* 11.3.76 MBMS Session Information */ + { 0x00, "MBMS Session Duration" }, /* 11.3.72 MBMS Session Duration */ + { 0x00, "MBMS Service Area Identity List" }, /* 11.3.73 MBMS Service Area Identity List */ + { 0x00, "MBMS Response" }, /* 11.3.74 MBMS Response */ + { 0x00, "MBMS Routing Area List" }, /* 11.3.75 MBMS Routing Area List */ + { 0x00, "MBMS Session Information" }, /* 11.3.76 MBMS Session Information */ /* ELEM_MAND_TELV(GSM_A_PDU_TYPE_GM, DE_TMGI, */ /* 11.3.77 TMGI (Temporary Mobile Group Identity) */ /* 11.3.78 MBMS Stop Cause */ { 0x00, "Source BSS to Target BSS Transparent Container" }, /* 11.3.79 Source BSS to Target BSS Transparent Container */ @@ -3089,8 +3270,8 @@ const value_string bssgp_elem_strings[] = { { 0x00, "Container ID" }, /* 11.3.89 Container ID */ { 0x00, "Global TFI" }, /* 11.3.90 Global TFI */ /* 11.3.91 IMEI */ - /* 11.3.92 Time to MBMS Data Transfer */ - /* 11.3.93 MBMS Session Repetition Number */ + { 0x00, "Time to MBMS Data Transfer" }, /* 11.3.92 Time to MBMS Data Transfer */ + { 0x00, "MBMS Session Repetition Number" }, /* 11.3.93 MBMS Session Repetition Number */ { 0x00, "Inter RAT Handover Info" }, /* 11.3.94 Inter RAT Handover Info */ { 0x00, "PS Handover Command" }, /* 11.3.95 PS Handover Command */ { 0x00, "PS Handover Indications" }, /* 11.3.95a PS Handover Indications */ @@ -3187,6 +3368,12 @@ typedef enum DE_BSSGP_RIM_ROUTING_INF, /* 11.3.70 RIM Routing Information */ DE_BSSGP_MBMS_SESSION_ID, /* 11.3.71 MBMS Session Identity */ + DE_BSSGP_MBMS_SESSION_DUR, /* 11.3.72 MBMS Session Duration */ + DE_BSSGP_MBMS_SAI_LIST, /* 11.3.73 MBMS Service Area Identity List */ + DE_BSSGP_MBMS_RESPONSE, /* 11.3.74 MBMS Response */ + DE_BSSGP_MBMS_RA_LIST, /* 11.3.75 MBMS Routing Area List */ + DE_BSSGP_MBMS_SESSION_INF, /* 11.3.76 MBMS Session Information */ + DE_BSSGP_TMGI, /* 11.3.77 TMGI (Temporary Mobile Group Identity) GSM_A_PDU_TYPE_GM, DE_TMGI*/ DE_BSSGP_SOURCE_BSS_TO_TARGET_BSS_TRANSP_CONT, /* 11.3.79 Source BSS to Target BSS Transparent Container */ DE_BSSGP_TARGET_BSS_TO_SOURCE_BSS_TRANSP_CONT, /* 11.3.80 Target BSS to Source BSS Transparent Container */ @@ -3199,6 +3386,8 @@ typedef enum DE_BSSGP_PAGE_MODE, /* 11.3.88 Page Mode */ DE_BSSGP_CONTAINER_ID, /* 11.3.89 Container ID */ DE_BSSGP_GLOBAL_TFI, /* 11.3.90 Global TFI */ + DE_BSSGP_TIME_TO_MBMS_DATA_TRAN, /* 11.3.92 Time to MBMS Data Transfer */ + DE_BSSGP_MBMS_SESSION_REP_NO, /* 11.3.93 MBMS Session Repetition Number */ DE_BSSGP_INTER_RAT_HO_INFO, /* 11.3.94 Inter RAT Handover Info */ DE_BSSGP_PS_HO_CMD, /* 11.3.95 PS Handover Command */ @@ -3286,6 +3475,11 @@ guint16 (*bssgp_elem_fcn[])(tvbuff_t *tvb, proto_tree *tree, guint32 offset, gui de_bssgp_pfc_flow_ctrl, /* 11.3.68 PFC Flow Control parameters */ de_bssgp_rim_routing_inf, /* 11.3.70 RIM Routing Information */ de_bssgp_mbms_session_id, /* 11.3.71 MBMS Session Identity */ + de_bssgp_mbms_session_dur, /* 11.3.72 MBMS Session Duration */ + de_bssgp_mbms_sai_list, /* 11.3.73 MBMS Service Area Identity List */ + de_bssgp_mbms_response, /* 11.3.74 MBMS Response */ + de_bssgp_mbms_ra_list, /* 11.3.75 MBMS Routing Area List */ + de_bssgp_mbms_session_inf, /* 11.3.76 MBMS Session Information */ NULL, /* 11.3.77 TMGI (Temporary Mobile Group Identity) */ de_bssgp_source_BSS_to_target_BSS_transp_cont, /* 11.3.79 Source BSS to Target BSS Transparent Container */ de_bssgp_target_BSS_to_source_BSS_transp_cont, /* 11.3.80 Target BSS to Source BSS Transparent Container */ @@ -3298,6 +3492,8 @@ guint16 (*bssgp_elem_fcn[])(tvbuff_t *tvb, proto_tree *tree, guint32 offset, gui de_bssgp_page_mode, /* 11.3.88 Page Mode */ de_bssgp_container_id, /* 11.3.89 Container ID */ de_bssgp_global_tfi, /* 11.3.90 Global TFI */ + de_bssgp_time_to_MBMS_data_tran, /* 11.3.92 Time to MBMS Data Transfer */ + de_bssgp_mbms_session_rep_no, /* 11.3.93 MBMS Session Repetition Number */ de_bssgp_inter_rat_ho_info, /* 11.3.94 Inter RAT Handover Info */ de_bssgp_ps_ho_cmd, /* 11.3.95 PS Handover Command */ de_bssgp_ps_ho_indications, /* 11.3.95a PS Handover Indications */ @@ -4535,7 +4731,7 @@ bssgp_create_bss_pfc(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len) /* Allocation/Retention Priority Priority/11.3.27 O TLV 3 */ ELEM_OPT_TELV(0x0b, GSM_A_PDU_TYPE_BSSMAP, BE_PRIO, NULL); /* T10 GPRS Timer/11.3.44 C (note 2) TLV 3 */ - ELEM_MAND_TELV(0x29, BSSGP_PDU_TYPE, DE_BSSGP_GPRS_TIMER , " - T10"); + ELEM_MAND_TELV(BSSGP_IEI_GPRS_TIMER, BSSGP_PDU_TYPE, DE_BSSGP_GPRS_TIMER , " - T10"); /* Inter RAT Handover Info Inter RAT Handover Info/11.3.94 O (note 3) TLV 3-? */ ELEM_OPT_TELV(0x73, BSSGP_PDU_TYPE, DE_BSSGP_INTER_RAT_HO_INFO, NULL); /* E-UTRAN Inter RAT Handover Info E-UTRAN Inter RAT Handover Info/11.3.104 O (note 3) TLV 3-? */ @@ -4655,7 +4851,7 @@ bssgp_modify_bss_pfc_ack(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint /* PFI PFI/11.3.42 M TLV 3 */ ELEM_MAND_TELV(BSSGP_IEI_PFI , GSM_A_PDU_TYPE_GM, DE_PACKET_FLOW_ID , NULL); /* PFT GPRS Timer/11.3.44 M TLV 3 */ - ELEM_MAND_TELV(0x29, BSSGP_PDU_TYPE, DE_BSSGP_GPRS_TIMER , " - PFT"); + ELEM_MAND_TELV(BSSGP_IEI_GPRS_TIMER, BSSGP_PDU_TYPE, DE_BSSGP_GPRS_TIMER , " - PFT"); /* ABQP ABQP/11.3.43 M TLV 13-? */ ELEM_MAND_TELV(0x3a , GSM_A_PDU_TYPE_GM, DE_QOS , NULL); @@ -5328,7 +5524,77 @@ bssgp_ran_inf_app_err(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len /* * 10.7 PDU functional definitions and contents at MBMS SAP * 10.7.1 MBMS-SESSION-START-REQUEST + */ +static void +bssgp_mbms_session_start_req(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len) +{ + guint32 curr_offset; + guint32 consumed; + guint curr_len; + + curr_offset = offset; + curr_len = len; + + /* This PDU allows a SGSN to request BSS to start an MBMS session. */ + + /* Direction: SGSN to BSS */ + gpinfo->link_dir = P2P_DIR_DL; + + /* TMGI TMGI/11.3.77 M TLV 3-8 */ + ELEM_MAND_TELV(0x5c, GSM_A_PDU_TYPE_GM, DE_TMGI, NULL); + /* MBMS Session Identity MBMS Session Identity/11.3.71 O TLV 3 */ + ELEM_OPT_TELV(0x5d, BSSGP_PDU_TYPE, DE_BSSGP_MBMS_SESSION_ID, NULL); + /* ABQP ABQP/11.3.43 M TLV 13-? */ + ELEM_MAND_TELV(0x3a , GSM_A_PDU_TYPE_GM, DE_QOS , NULL); + /* MBMS Service Area Identity List MBMS Service Area Identity List/11.3.73 M TLV 4-? */ + ELEM_MAND_TELV(0x5f, BSSGP_PDU_TYPE, DE_BSSGP_MBMS_SAI_LIST, NULL); + /* MBMS Routing Area List MBMS Routing Area List/11.3.75 M TLV 3-? */ + ELEM_MAND_TELV(0x61, BSSGP_PDU_TYPE, DE_BSSGP_MBMS_RA_LIST, NULL); + /* MBMS Session Duration MBMS Session Duration/11.3.72 M TLV 3-? */ + ELEM_MAND_TELV(0x5e, BSSGP_PDU_TYPE, DE_BSSGP_MBMS_SESSION_DUR, NULL); + /* MBMS Session Information MBMS Session Information/11.3.76 M TLV 3 */ + ELEM_MAND_TELV(0x62, BSSGP_PDU_TYPE, DE_BSSGP_MBMS_SESSION_INF, NULL); + /* Time to MBMS Data Transfer Time to MBMS Data Transfer/11.3.92 M TLV 3 */ + ELEM_MAND_TELV(0x71, BSSGP_PDU_TYPE, DE_BSSGP_TIME_TO_MBMS_DATA_TRAN, NULL); + /* Allocation/Retention Priority Priority/11.3.27 O TLV 3 */ + ELEM_OPT_TELV(0x0b, GSM_A_PDU_TYPE_BSSMAP, BE_PRIO, NULL); + /* 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, gpinfo); +} +/* * 10.7.2 MBMS-SESSION-START-RESPONSE + */ +static void +bssgp_mbms_session_start_resp(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len) +{ + guint32 curr_offset; + guint32 consumed; + guint curr_len; + + curr_offset = offset; + curr_len = len; + + /* This PDU allows a BSS to acknowledge to SGSN that it will start an MBMS session or to indicate to SGSN why the + * MBMS Service Context cannot be created or is released by the BSS. + */ + + /* Direction: BSS to SGSN */ + gpinfo->link_dir = P2P_DIR_UL; + + /* TMGI TMGI/ 11.3.77 M TLV 3-8 */ + ELEM_MAND_TELV(0x5c, GSM_A_PDU_TYPE_GM, DE_TMGI, NULL); + /* MBMS Session Identity MBMS Session Identity/ 11.3.71 O TLV 3 */ + ELEM_OPT_TELV(0x5d, BSSGP_PDU_TYPE, DE_BSSGP_MBMS_SESSION_ID, NULL); + /* 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, gpinfo); +} + +/* * 10.7.3 MBMS-SESSION-STOP-REQUEST * 10.7.4 MBMS-SESSION-STOP-RESPONSE * 10.7.5 MBMS-SESSION-UPDATE-REQUEST @@ -5474,12 +5740,12 @@ static const value_string bssgp_msg_strings[] = { /* 0x7d */ { BSSGP_PDU_RESERVED_0X7D, "Reserved" }, /* */ /* 0x7e */ { BSSGP_PDU_RESERVED_0X7E, "Reserved" }, /* */ /* 0x7f */ { BSSGP_PDU_RESERVED_0X7F, "Reserved" }, /* */ -/* 0x80 */ {0x80, "MBMS-SESSION-START-REQUEST" }, -/* 0x81 */ {0x81, "MBMS-SESSION-START-RESPONSE" }, -/* 0x82 */ {0x82, "MBMS-SESSION-STOP-REQUEST" }, -/* 0x83 */ {0x83, "MBMS-SESSION-STOP-RESPONSE" }, -/* 0x84 */ {0x84, "MBMS-SESSION-UPDATE-REQUEST" }, -/* 0x85 */ {0x85, "MBMS-SESSION-UPDATE-RESPONSE" }, +/* 0x80 */ { BSSGP_PDU_MBMS_SESSION_START_REQ, "MBMS-SESSION-START-REQUEST" }, /* 10.7.1 MBMS-SESSION-START-REQUEST */ +/* 0x81 */ { BSSGP_PDU_MBMS_SESSION_START_RESP, "MBMS-SESSION-START-RESPONSE" }, /* 10.7.2 MBMS-SESSION-START-RESPONSE */ +/* 0x82 */ { BSSGP_PDU_MBMS_SESSION_STOP_REQ, "MBMS-SESSION-STOP-REQUEST" }, +/* 0x83 */ { BSSGP_PDU_MBMS_SESSION_STOP_RESP, "MBMS-SESSION-STOP-RESPONSE" }, +/* 0x84 */ { BSSGP_PDU_MBMS_SESSION_UPDATE_REQ, "MBMS-SESSION-UPDATE-REQUEST" }, +/* 0x85 */ { BSSGP_PDU_MBMS_SESSION_UPDATE_RESP, "MBMS-SESSION-UPDATE-RESPONSE" }, /* 0x91 */ {0x91, "PS-HANDOVER-COMPLETE" }, /* 0x92 */ {0x92, "PS-HANDOVER-CANCEL" }, @@ -5639,6 +5905,8 @@ static void (*bssgp_msg_fcn[])(tvbuff_t *tvb, proto_tree *tree, guint32 offset, NULL, /* 0x7d */ NULL, /* 0x7e */ NULL, /* 0x7f */ + bssgp_mbms_session_start_req, /* 10.7.1 MBMS-SESSION-START-REQUEST */ + bssgp_mbms_session_start_resp, /* 10.7.2 MBMS-SESSION-START-RESPONSE */ NULL, /* NONE */ }; @@ -6021,11 +6289,26 @@ proto_register_bssgp(void) FT_UINT8, BASE_DEC, VALS(bssgp_service_utran_cco_vals), 0x07, NULL, HFILL } }, - { &hf_bssgp_mbs_session_id, - { "MBMS Session ID", "bssgp.mbs_session_id", + { &hf_bssgp_mbms_session_id, + { "MBMS Session ID", "bssgp.mbms_session_id", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } }, + { &hf_bssgp_mbms_cause, + { "Cause", "bssgp.mbms_cause", + FT_UINT8, BASE_DEC|BASE_EXT_STRING, &bssgp_mbms_cause_vals_ext, 0x0f, + NULL, HFILL } + }, + { &hf_bssgp_session_inf, + { "BC/MC", "bssgp.session_inf", + FT_BOOLEAN, 8, TFS(&tfs_bssgp_bc_mc), 0x01, + NULL, HFILL } + }, + { &hf_bssgp_mbms_num_ra_ids, + { "Number of Routing Area Identifications", "bssgp.mbms_num_ra_ids", + FT_UINT8, BASE_DEC|BASE_EXT_STRING, &bssgp_mbms_num_ra_ids_vals_ext, 0xf0, + NULL, HFILL } + }, { &hf_bssgp_gb_if, { "Gigabit Interface", "bssgp.gb_if", FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x02, @@ -6075,6 +6358,16 @@ proto_register_bssgp(void) { "DOWNLINK_TFI", "bssgp.global_tfi", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } + }, + { &hf_bssgp_time_to_MBMS_data_tran, + { "Time to MBMS Data Transfer", "bssgp.time_to_mbms_data_tran", + FT_UINT8, BASE_DEC, NULL, 0x0, + NULL, HFILL } + }, + { &hf_bssgp_mbms_session_rep_no, + { "MBMS-Session-Repetition-Number", "bssgp.mbms_session_rep_no", + FT_UINT8, BASE_DEC, NULL, 0x0, + NULL, HFILL } }, { &hf_bssgp_ps_ho_cmd, { "PS Handover Command", "bssgp.ps_ho_cmd", @@ -6140,7 +6433,7 @@ proto_register_bssgp(void) }; /* Setup protocol subtree array */ -#define NUM_INDIVIDUAL_ELEMS 9 +#define NUM_INDIVIDUAL_ELEMS 10 gint *ett[NUM_INDIVIDUAL_ELEMS + NUM_BSSGP_ELEM + NUM_BSSGP_MSG]; @@ -6153,6 +6446,7 @@ proto_register_bssgp(void) ett[6] = &ett_bssgp_pfcs_to_be_set_up_list; ett[7] = &ett_bssgp_new; ett[8] = &ett_bssgp_pfc_flow_control_parameters_pfc; + ett[9] = &ett_bssgp_ra_id, last_offset = NUM_INDIVIDUAL_ELEMS; @@ -6195,4 +6489,6 @@ proto_reg_handoff_bssgp(void) llc_handle = find_dissector("llcgprs"); rrlp_handle = find_dissector("rrlp"); data_handle = find_dissector("data"); + + diameter_3gpp_avp_dissector_table = find_dissector_table("diameter.3gpp"); }