Add dissection of

- MBMS-SESSION-START-REQUEST
- MBMS-SESSION-START-RESPONSE

svn path=/trunk/; revision=36186
This commit is contained in:
Anders Broman 2011-03-14 07:15:25 +00:00
parent 4d6d8c58a5
commit 338f238746
1 changed files with 324 additions and 28 deletions

View File

@ -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");
}