aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--epan/dissectors/packet-aarp.c4
-rw-r--r--epan/dissectors/packet-bssgp.c8421
-rw-r--r--epan/dissectors/packet-collectd.c4
-rw-r--r--epan/dissectors/packet-diffserv-mpls-common.c58
-rw-r--r--epan/dissectors/packet-dis-fields.c4
-rw-r--r--epan/dissectors/packet-h248_3gpp.c4
-rw-r--r--epan/dissectors/packet-isis-clv.c4
-rw-r--r--epan/dissectors/packet-pop.c4
-rw-r--r--epan/dissectors/packet-radius_packetcable.c4
-rw-r--r--epan/dissectors/packet-rtcp.c7100
-rw-r--r--epan/dissectors/packet-sflow.c4
-rw-r--r--epan/dissectors/packet-ucp.c2
12 files changed, 7810 insertions, 7803 deletions
diff --git a/epan/dissectors/packet-aarp.c b/epan/dissectors/packet-aarp.c
index 6649ca15a9..761e8a7a9a 100644
--- a/epan/dissectors/packet-aarp.c
+++ b/epan/dissectors/packet-aarp.c
@@ -221,7 +221,7 @@ dissect_aarp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
if (ar_hln != 0) {
proto_tree_add_item(aarp_tree,
AARP_HW_IS_ETHER(ar_hrd, ar_hln) ? hf_aarp_src_hw_mac : hf_aarp_src_hw,
- tvb, sha_offset, ar_hln, FALSE);
+ tvb, sha_offset, ar_hln, ENC_NA);
}
if (ar_pln != 0) {
@@ -239,7 +239,7 @@ dissect_aarp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
if (ar_hln != 0) {
proto_tree_add_item(aarp_tree,
AARP_HW_IS_ETHER(ar_hrd, ar_hln) ? hf_aarp_dst_hw_mac : hf_aarp_dst_hw,
- tvb, tha_offset, ar_hln, FALSE);
+ tvb, tha_offset, ar_hln, ENC_NA);
}
if (ar_pln != 0) {
diff --git a/epan/dissectors/packet-bssgp.c b/epan/dissectors/packet-bssgp.c
index 3ff07d1f1c..f8f4d9b345 100644
--- a/epan/dissectors/packet-bssgp.c
+++ b/epan/dissectors/packet-bssgp.c
@@ -58,6 +58,13 @@
*
* which sure sounds little-endian.
*
+ * [
+ * Later comment:
+ * Actually: To me. the above reads as being BIG_ENDIAN.
+ * IOW: if bytes are numbered from 0 to n, then the n'th byte
+ * ("highest numbered octet") has the least significant bit.
+ * ]
+ *
* However, for some not-entirely-obvious reason, BSSGP_LITTLE_ENDIAN, which
* was passed to proto_tree_add_item() as the byte-order argument, was
* defined as FALSE - which meant big-endian.
@@ -421,13 +428,13 @@ static gint ett_bssgp_ra_id = -1;
#define BSSGP_IEI_RIM_SEQUENCE_NUMBER 0x4c
#define BSSGP_IEI_RAN_INF_REQUEST_APP_CONTAINER 0x4d
#define BSSGP_IEI_RAN_INF_APP_CONTAINER 0x4e
-#define BSSGP_IEI_RIM_PDU_INDICATIONS 0x4f
+#define BSSGP_IEI_RIM_PDU_INDICATIONS 0x4f
#define BSSGP_IEI_NUMBER_OF_CONTAINER_UNITS 0x50
#define BSSGP_IEI_PFC_FLOW_CONTROL_PARAMETERS 0x52
#define BSSGP_IEI_GLOBAL_CN_ID 0x53
-#define BSSGP_IEI_RIM_ROUTING_INFORMATION 0x54
-#define BSSGP_IEI_RIM_PROTOCOL_VERSION 0x55
-#define BSSGP_IEI_APPLICATION_ERROR_CONTAINER 0x56
+#define BSSGP_IEI_RIM_ROUTING_INFORMATION 0x54
+#define BSSGP_IEI_RIM_PROTOCOL_VERSION 0x55
+#define BSSGP_IEI_APPLICATION_ERROR_CONTAINER 0x56
#define BSSGP_IEI_RAN_INF_REQUEST_RIM_CONTAINER 0x57
#define BSSGP_IEI_RAN_INF_RIM_CONTAINER 0x58
@@ -491,32 +498,32 @@ x86 TAC
/* Defined localy here without the check of curr_len wrapping, that will be taken care of when this IEI dissecton finishes */
#define ELEM_IN_ELEM_MAND_TELV(EMT_iei, EMT_pdu_type, EMT_elem_idx, EMT_elem_name_addition) \
{\
- if ((consumed = elem_telv(tvb, tree, pinfo, (guint8) EMT_iei, EMT_pdu_type, EMT_elem_idx, curr_offset, curr_len, EMT_elem_name_addition)) > 0) \
- { \
- curr_offset += consumed; \
- curr_len -= consumed; \
- } \
- else \
- { \
- proto_tree_add_text(tree, \
- tvb, curr_offset, 0, \
- "Missing Mandatory element (0x%02x) %s%s, rest of dissection is suspect", \
- EMT_iei, \
- get_gsm_a_msg_string(EMT_pdu_type, EMT_elem_idx), \
- (EMT_elem_name_addition == NULL) ? "" : EMT_elem_name_addition \
- ); \
- } \
+ if ((consumed = elem_telv(tvb, tree, pinfo, (guint8) EMT_iei, EMT_pdu_type, EMT_elem_idx, curr_offset, curr_len, EMT_elem_name_addition)) > 0) \
+ { \
+ curr_offset += consumed; \
+ curr_len -= consumed; \
+ } \
+ else \
+ { \
+ proto_tree_add_text(tree, \
+ tvb, curr_offset, 0, \
+ "Missing Mandatory element (0x%02x) %s%s, rest of dissection is suspect", \
+ EMT_iei, \
+ get_gsm_a_msg_string(EMT_pdu_type, EMT_elem_idx), \
+ (EMT_elem_name_addition == NULL) ? "" : EMT_elem_name_addition \
+ ); \
+ } \
}
#define ELEM_IN_ELEM_OPT_TELV(EOT_iei, EOT_pdu_type, EOT_elem_idx, EOT_elem_name_addition) \
{\
- if (curr_len != 0){\
- if ((consumed = elem_telv(tvb, tree, pinfo, (guint8) EOT_iei, EOT_pdu_type, EOT_elem_idx, curr_offset, curr_len, EOT_elem_name_addition)) > 0) \
- { \
- curr_offset += consumed; \
- curr_len -= consumed; \
- } \
- } \
+ if (curr_len != 0){\
+ if ((consumed = elem_telv(tvb, tree, pinfo, (guint8) EOT_iei, EOT_pdu_type, EOT_elem_idx, curr_offset, curr_len, EOT_elem_name_addition)) > 0) \
+ { \
+ curr_offset += consumed; \
+ curr_len -= consumed; \
+ } \
+ } \
}
/* Forward declarations */
@@ -530,220 +537,220 @@ static guint16 de_bssgp_ran_inf_app_error_rim_cont(tvbuff_t *tvb, proto_tree *tr
static const value_string tab_nacc_cause[]={
- { 0x00, "Other unspecified error" },
- { 0x01, "Syntax error in the Application Container" },
- { 0x02, "Reporting Cell Identifier does not match with the Destination Cell Identifier or with the Source Cell Identifier" },
- { 0x03, "SI/PSI type error" },
- { 0x04, "Inconsistent length of a SI/PSI message" },
- { 0x05, "Inconsistent set of messages" },
- { 0, NULL },
+ { 0x00, "Other unspecified error" },
+ { 0x01, "Syntax error in the Application Container" },
+ { 0x02, "Reporting Cell Identifier does not match with the Destination Cell Identifier or with the Source Cell Identifier" },
+ { 0x03, "SI/PSI type error" },
+ { 0x04, "Inconsistent length of a SI/PSI message" },
+ { 0x05, "Inconsistent set of messages" },
+ { 0, NULL },
};
/*
- * 11.3 Information Element Identifier (IEI)
+ * 11.3 Information Element Identifier (IEI)
*/
/*
- * 11.3.1 Alignment octets
+ * 11.3.1 Alignment octets
*/
static guint16
de_bssgp_aligment_octets(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- proto_tree_add_text(tree, tvb, curr_offset, len, "%u Spare octet(s)",len);
+ proto_tree_add_text(tree, tvb, curr_offset, len, "%u Spare octet(s)",len);
- return(len);
+ return(len);
}
/*
- * 11.3.2 Bmax default MS
+ * 11.3.2 Bmax default MS
*/
static guint16
de_bssgp_bmax_default_ms(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- proto_tree_add_item(tree, hf_bssgp_bmax, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
- curr_offset+=2;
+ proto_tree_add_item(tree, hf_bssgp_bmax, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
+ curr_offset+=2;
- return(curr_offset-offset);
+ return(curr_offset-offset);
}
/*
- * 11.3.3 BSS Area Indication
+ * 11.3.3 BSS Area Indication
*/
static guint16
de_bssgp_bss_area_ind(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- proto_tree_add_item(tree, hf_bssgp_bss_area_ind, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
- curr_offset++;
+ proto_tree_add_item(tree, hf_bssgp_bss_area_ind, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
+ curr_offset++;
- return(curr_offset-offset);
+ return(curr_offset-offset);
}
/*
- * 11.3.4 Bucket Leak Rate (R)
+ * 11.3.4 Bucket Leak Rate (R)
*/
static guint16
de_bssgp_bucket_leak_rate(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- proto_tree_add_item(tree, hf_bssgp_r, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
- curr_offset+=2;
+ proto_tree_add_item(tree, hf_bssgp_r, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
+ curr_offset+=2;
- return(curr_offset-offset);
+ return(curr_offset-offset);
}
/*
- * 11.3.5 BVC Bucket Size
+ * 11.3.5 BVC Bucket Size
*/
static guint16
de_bssgp_bvc_bucket_size(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- proto_tree_add_item(tree, hf_bssgp_bucket_size, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
- curr_offset+=2;
+ proto_tree_add_item(tree, hf_bssgp_bucket_size, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
+ curr_offset+=2;
- return(curr_offset-offset);
+ return(curr_offset-offset);
}
/*
- * 11.3.6 BVCI (BSSGP Virtual Connection Identifier)
+ * 11.3.6 BVCI (BSSGP Virtual Connection Identifier)
*/
static guint16
de_bssgp_bvci(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
- guint16 bvci;
+ guint32 curr_offset;
+ guint16 bvci;
- curr_offset = offset;
+ curr_offset = offset;
- /* octet 3-4 Unstructured value */
- bvci = tvb_get_ntohs(tvb,curr_offset);
- proto_tree_add_item(tree, hf_bssgp_bvci, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
- curr_offset+=2;
+ /* octet 3-4 Unstructured value */
+ bvci = tvb_get_ntohs(tvb,curr_offset);
+ proto_tree_add_item(tree, hf_bssgp_bvci, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
+ curr_offset+=2;
- if (add_string)
- g_snprintf(add_string, string_len, " - 0x%x", bvci);
+ if (add_string)
+ g_snprintf(add_string, string_len, " - 0x%x", bvci);
- return(curr_offset-offset);
+ return(curr_offset-offset);
}
/*
- * 11.3.7 BVC Measurement
+ * 11.3.7 BVC Measurement
*/
static guint16
de_bssgp_bvc_meas(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- /* The Delay Value field is coded as a 16-bit integer value in units of centi-seconds (one hundredth of a second). This
- * coding provides a range of over 10 minutes in increments of 10 ms. As a special case, the hexadecimal value 0xFFFF
- *(decimal 65 535) shall be interpreted as "infinite delay".
- */
- proto_tree_add_item(tree, hf_bssgp_delay_val, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
- curr_offset+=2;
+ /* The Delay Value field is coded as a 16-bit integer value in units of centi-seconds (one hundredth of a second). This
+ * coding provides a range of over 10 minutes in increments of 10 ms. As a special case, the hexadecimal value 0xFFFF
+ *(decimal 65 535) shall be interpreted as "infinite delay".
+ */
+ proto_tree_add_item(tree, hf_bssgp_delay_val, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
+ curr_offset+=2;
- return(curr_offset-offset);
+ return(curr_offset-offset);
}
/*
- * 11.3.8 Cause
+ * 11.3.8 Cause
*/
static const value_string bssgp_cause_vals[] = {
- { 0x00, "Processor overload" },
- { 0x01, "Equipment failure" },
- { 0x02, "Transit network service failure" },
- { 0x03, "Network service transmission capacity modified from zero kbps to greater than zero kbps" },
- { 0x04, "Unknown MS" },
- { 0x05, "BVCI unknown" },
- { 0x06, "Cell traffic congestion" },
- { 0x07, "SGSN congestion" },
- { 0x08, "O&M intervention" },
- { 0x09, "BVCI blocked" },
- { 0x0a, "PFC create failure" },
- { 0x0b, "PFC preempted" },
- { 0x0c, "ABQP no more supported" },
-
- { 0x0d, "Undefined - protocol error - unspecified" },
- { 0x0e, "Undefined - protocol error - unspecified" },
- { 0x0f, "Undefined - protocol error - unspecified" },
- { 0x10, "Undefined - protocol error - unspecified" },
- { 0x11, "Undefined - protocol error - unspecified" },
- { 0x12, "Undefined - protocol error - unspecified" },
- { 0x13, "Undefined - protocol error - unspecified" },
- { 0x14, "Undefined - protocol error - unspecified" },
- { 0x15, "Undefined - protocol error - unspecified" },
- { 0x16, "Undefined - protocol error - unspecified" },
- { 0x17, "Undefined - protocol error - unspecified" },
- { 0x18, "Undefined - protocol error - unspecified" },
- { 0x19, "Undefined - protocol error - unspecified" },
- { 0x1a, "Undefined - protocol error - unspecified" },
- { 0x1b, "Undefined - protocol error - unspecified" },
- { 0x1c, "Undefined - protocol error - unspecified" },
- { 0x1d, "Undefined - protocol error - unspecified" },
- { 0x1e, "Undefined - protocol error - unspecified" },
- { 0x1f, "Undefined - protocol error - unspecified" },
-
- { 0x20, "Semantically incorrect PDU" },
- { 0x21, "Invalid mandatory information" },
- { 0x22, "Missing mandatory IE" },
- { 0x23, "Missing conditional IE" },
- { 0x24, "Unexpected conditional IE" },
- { 0x25, "Conditional IE error" },
- { 0x26, "PDU not compatible with the protocol state" },
- { 0x27, "Protocol error - unspecified" },
- { 0x28, "PDU not compatible with the feature set" },
- { 0x29, "Requested information not available" },
- { 0x2a, "Unknown destination address" },
- { 0x2b, "Unknown RIM application identity" },
- { 0x2c, "Invalid container unit information" },
- { 0x2d, "PFC queuing" },
- { 0x2e, "PFC created successfully" },
- { 0x2f, "T12 expiry" },
- { 0x30, "MS under PS Handover treatment" },
- { 0x31, "Uplink quality" },
- { 0x32, "Uplink strength" },
- { 0x33, "Downlink quality" },
- { 0x34, "Downlink strength" },
- { 0x35, "Distance" },
- { 0x36, "Better cell" },
- { 0x37, "Traffic" },
- { 0x38, "Radio contact lost with MS" },
- { 0x39, "MS back on old channel" },
- { 0x3a, "T13 expiry" },
- { 0x3b, "T14 expiry" },
- { 0x3c, "Not all requested PFCs created" },
- { 0x3d, "CS cause" },
- { 0x3e, "Requested ciphering and/or integrity protection algorithms not supported" },
- { 0x3f, "Relocation failure in target system" },
- { 0x40, "Directed Retry" },
- { 0x41, "Time critical relocation" },
- { 0x42, "PS Handover Target not allowed" },
- { 0x43, "PS Handover not Supported in Target BSS or Target System" },
- { 0x44, "Incoming relocation not supported due to PUESBINE feature" },
- { 0x45, "DTM Handover - No CS resource" },
- { 0x46, "DTM Handover - PS Allocation failure" },
- { 0x47, "DTM Handover - T24 expiry" },
- { 0x48, "DTM Handover - Invalid CS Indication IE" },
- { 0x49, "DTM Handover - T23 expiry" },
- { 0x4a, "DTM Handover - MSC Error" },
- { 0x4b, "Invalid CSG cell" },
- { 0, NULL },
+ { 0x00, "Processor overload" },
+ { 0x01, "Equipment failure" },
+ { 0x02, "Transit network service failure" },
+ { 0x03, "Network service transmission capacity modified from zero kbps to greater than zero kbps" },
+ { 0x04, "Unknown MS" },
+ { 0x05, "BVCI unknown" },
+ { 0x06, "Cell traffic congestion" },
+ { 0x07, "SGSN congestion" },
+ { 0x08, "O&M intervention" },
+ { 0x09, "BVCI blocked" },
+ { 0x0a, "PFC create failure" },
+ { 0x0b, "PFC preempted" },
+ { 0x0c, "ABQP no more supported" },
+
+ { 0x0d, "Undefined - protocol error - unspecified" },
+ { 0x0e, "Undefined - protocol error - unspecified" },
+ { 0x0f, "Undefined - protocol error - unspecified" },
+ { 0x10, "Undefined - protocol error - unspecified" },
+ { 0x11, "Undefined - protocol error - unspecified" },
+ { 0x12, "Undefined - protocol error - unspecified" },
+ { 0x13, "Undefined - protocol error - unspecified" },
+ { 0x14, "Undefined - protocol error - unspecified" },
+ { 0x15, "Undefined - protocol error - unspecified" },
+ { 0x16, "Undefined - protocol error - unspecified" },
+ { 0x17, "Undefined - protocol error - unspecified" },
+ { 0x18, "Undefined - protocol error - unspecified" },
+ { 0x19, "Undefined - protocol error - unspecified" },
+ { 0x1a, "Undefined - protocol error - unspecified" },
+ { 0x1b, "Undefined - protocol error - unspecified" },
+ { 0x1c, "Undefined - protocol error - unspecified" },
+ { 0x1d, "Undefined - protocol error - unspecified" },
+ { 0x1e, "Undefined - protocol error - unspecified" },
+ { 0x1f, "Undefined - protocol error - unspecified" },
+
+ { 0x20, "Semantically incorrect PDU" },
+ { 0x21, "Invalid mandatory information" },
+ { 0x22, "Missing mandatory IE" },
+ { 0x23, "Missing conditional IE" },
+ { 0x24, "Unexpected conditional IE" },
+ { 0x25, "Conditional IE error" },
+ { 0x26, "PDU not compatible with the protocol state" },
+ { 0x27, "Protocol error - unspecified" },
+ { 0x28, "PDU not compatible with the feature set" },
+ { 0x29, "Requested information not available" },
+ { 0x2a, "Unknown destination address" },
+ { 0x2b, "Unknown RIM application identity" },
+ { 0x2c, "Invalid container unit information" },
+ { 0x2d, "PFC queuing" },
+ { 0x2e, "PFC created successfully" },
+ { 0x2f, "T12 expiry" },
+ { 0x30, "MS under PS Handover treatment" },
+ { 0x31, "Uplink quality" },
+ { 0x32, "Uplink strength" },
+ { 0x33, "Downlink quality" },
+ { 0x34, "Downlink strength" },
+ { 0x35, "Distance" },
+ { 0x36, "Better cell" },
+ { 0x37, "Traffic" },
+ { 0x38, "Radio contact lost with MS" },
+ { 0x39, "MS back on old channel" },
+ { 0x3a, "T13 expiry" },
+ { 0x3b, "T14 expiry" },
+ { 0x3c, "Not all requested PFCs created" },
+ { 0x3d, "CS cause" },
+ { 0x3e, "Requested ciphering and/or integrity protection algorithms not supported" },
+ { 0x3f, "Relocation failure in target system" },
+ { 0x40, "Directed Retry" },
+ { 0x41, "Time critical relocation" },
+ { 0x42, "PS Handover Target not allowed" },
+ { 0x43, "PS Handover not Supported in Target BSS or Target System" },
+ { 0x44, "Incoming relocation not supported due to PUESBINE feature" },
+ { 0x45, "DTM Handover - No CS resource" },
+ { 0x46, "DTM Handover - PS Allocation failure" },
+ { 0x47, "DTM Handover - T24 expiry" },
+ { 0x48, "DTM Handover - Invalid CS Indication IE" },
+ { 0x49, "DTM Handover - T23 expiry" },
+ { 0x4a, "DTM Handover - MSC Error" },
+ { 0x4b, "Invalid CSG cell" },
+ { 0, NULL },
};
value_string_ext bssgp_cause_vals_ext = VALUE_STRING_EXT_INIT(bssgp_cause_vals);
@@ -751,21 +758,21 @@ value_string_ext bssgp_cause_vals_ext = VALUE_STRING_EXT_INIT(bssgp_cause_vals);
static guint16
de_bssgp_cause(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- /* The Delay Value field is coded as a 16-bit integer value in units of centi-seconds (one hundredth of a second). This
- * coding provides a range of over 10 minutes in increments of 10 ms. As a special case, the hexadecimal value 0xFFFF
- *(decimal 65 535) shall be interpreted as "infinite delay".
- */
- proto_tree_add_item(tree, hf_bssgp_cause, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- curr_offset+=1;
+ /* The Delay Value field is coded as a 16-bit integer value in units of centi-seconds (one hundredth of a second). This
+ * coding provides a range of over 10 minutes in increments of 10 ms. As a special case, the hexadecimal value 0xFFFF
+ *(decimal 65 535) shall be interpreted as "infinite delay".
+ */
+ proto_tree_add_item(tree, hf_bssgp_cause, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ curr_offset+=1;
- return(curr_offset-offset);
+ return(curr_offset-offset);
}
/*
- * 11.3.9 Cell Identifier
+ * 11.3.9 Cell Identifier
*/
/*
* octets 3-8 Octets 3 to 8 contain the value part (starting with octet 2) of the
@@ -779,26 +786,26 @@ de_bssgp_cause(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32
static guint16
de_bssgp_cell_id(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len _U_, gchar *add_string, int string_len)
{
- guint32 curr_offset;
- guint16 ci;
+ guint32 curr_offset;
+ guint16 ci;
- curr_offset = offset;
+ curr_offset = offset;
- curr_offset = curr_offset + de_gmm_rai(tvb, tree, pinfo, curr_offset, 6, add_string, string_len);
- /*Why doesn't this work? ( add_string will not contain RAI + CI )
- * curr_offset = curr_offset + de_cell_id(tvb, tree, curr_offset , 2, add_string, string_len);
- */
- ci = tvb_get_ntohs(tvb, curr_offset);
- proto_tree_add_item(tree, hf_bssgp_ci, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
- curr_offset+=2;
- if (add_string)
- g_snprintf(add_string, string_len, "%s, CI %u", add_string, ci);
+ curr_offset = curr_offset + de_gmm_rai(tvb, tree, pinfo, curr_offset, 6, add_string, string_len);
+ /*Why doesn't this work? ( add_string will not contain RAI + CI )
+ * curr_offset = curr_offset + de_cell_id(tvb, tree, curr_offset , 2, add_string, string_len);
+ */
+ ci = tvb_get_ntohs(tvb, curr_offset);
+ proto_tree_add_item(tree, hf_bssgp_ci, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
+ curr_offset+=2;
+ if (add_string)
+ g_snprintf(add_string, string_len, "%s, CI %u", add_string, ci);
- return(curr_offset-offset);
+ return(curr_offset-offset);
}
/*
- * 11.3.10 Channel needed
+ * 11.3.10 Channel needed
*/
/* Rest of element coded as the value part of the Channel Needed
* PDU defined in 3GPP TS 29.018, not including 3GPP TS 29.018
@@ -810,17 +817,17 @@ de_bssgp_cell_id(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 of
static guint16
de_bssgp_chnl_needed(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- curr_offset = de_rr_chnl_needed(tvb, tree, pinfo, curr_offset, len , NULL, 0);
+ curr_offset = de_rr_chnl_needed(tvb, tree, pinfo, curr_offset, len , NULL, 0);
- return(curr_offset-offset);
+ return(curr_offset-offset);
}
/*
- * 11.3.11 DRX Parameters
+ * 11.3.11 DRX Parameters
*/
/*
* Rest of element coded as the value part defined in
@@ -828,7 +835,7 @@ de_bssgp_chnl_needed(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint3
* 3GPP TS 24.008 octet length indicator
*/
/*
- * 11.3.12 eMLPP-Priority
+ * 11.3.12 eMLPP-Priority
*/
/*
* Rest of element coded as the value part of the eMLPP-Priority IE
@@ -836,35 +843,35 @@ de_bssgp_chnl_needed(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint3
* 3GPP TS 48.008 length indicator
*/
/*
- * 11.3.13 Flush Action
+ * 11.3.13 Flush Action
*/
static const value_string bssgp_flush_action_vals[] = {
{ 0x00, "LLC-PDU(s) deleted" },
{ 0x01, "LLC-PDU(s) transferred" },
{ 0, NULL },
/* Otherwise "Reserved" */
- };
+};
static guint16
de_bssgp_flush_action(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
- guint8 oct;
+ guint32 curr_offset;
+ guint8 oct;
- curr_offset = offset;
+ curr_offset = offset;
- /* Action value */
- oct = tvb_get_guint8(tvb,curr_offset);
- proto_tree_add_item(tree, hf_bssgp_flush_action, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- curr_offset+=1;
- if (add_string)
- g_snprintf(add_string, string_len, " - %s", val_to_str_const(oct, bssgp_flush_action_vals, "Reserved"));
+ /* Action value */
+ oct = tvb_get_guint8(tvb,curr_offset);
+ proto_tree_add_item(tree, hf_bssgp_flush_action, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ curr_offset+=1;
+ if (add_string)
+ g_snprintf(add_string, string_len, " - %s", val_to_str_const(oct, bssgp_flush_action_vals, "Reserved"));
- return(curr_offset-offset);
+ return(curr_offset-offset);
}
/*
- * 11.3.14 IMSI
+ * 11.3.14 IMSI
*/
/* Octets 3-n contain an IMSI coded as the value part of the Mobile
* Identity IE defined in 3GPP TS 24.008
@@ -873,58 +880,58 @@ de_bssgp_flush_action(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, g
* the receiver.
*/
/*
- * 11.3.15 LLC-PDU
+ * 11.3.15 LLC-PDU
*/
static guint16
de_bssgp_llc_pdu(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- tvbuff_t *next_tvb=NULL;
- guint32 curr_offset;
-
- curr_offset = offset;
+ tvbuff_t *next_tvb=NULL;
+ guint32 curr_offset;
+ curr_offset = offset;
- if(len > 0){
- next_tvb = tvb_new_subset_remaining(tvb, curr_offset);
- proto_tree_add_text(tree, tvb, curr_offset, len, "LLC Data");
- }
- if(next_tvb){
- if (llc_handle) {
- call_dissector(llc_handle, next_tvb, gpinfo, gparent_tree);
+ if(len > 0){
+ next_tvb = tvb_new_subset_remaining(tvb, curr_offset);
+ proto_tree_add_text(tree, tvb, curr_offset, len, "LLC Data");
}
- else if (data_handle) {
- call_dissector(data_handle, next_tvb, gpinfo, gparent_tree);
+
+ if(next_tvb){
+ if (llc_handle) {
+ call_dissector(llc_handle, next_tvb, gpinfo, gparent_tree);
+ }
+ else if (data_handle) {
+ call_dissector(data_handle, next_tvb, gpinfo, gparent_tree);
+ }
}
- }
- return(len);
+ return(len);
}
/*
- * 11.3.16 LLC Frames Discarded
+ * 11.3.16 LLC Frames Discarded
*/
static guint16
de_bssgp_llc_frames_disc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
- guint8 oct;
+ guint32 curr_offset;
+ guint8 oct;
- curr_offset = offset;
+ curr_offset = offset;
- /* Action value */
- oct = tvb_get_guint8(tvb,curr_offset);
- proto_tree_add_item(tree, hf_bssgp_llc_frames_disc, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- curr_offset+=1;
+ /* Action value */
+ oct = tvb_get_guint8(tvb,curr_offset);
+ proto_tree_add_item(tree, hf_bssgp_llc_frames_disc, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ curr_offset+=1;
- if (add_string)
- g_snprintf(add_string, string_len, " - %u Frames", oct);
+ if (add_string)
+ g_snprintf(add_string, string_len, " - %u Frames", oct);
- return(curr_offset-offset);
+ return(curr_offset-offset);
}
/*
- * 11.3.17 Location Area
+ * 11.3.17 Location Area
*/
/* Octets 3 to 7 contain the value part (starting with octet 2) of the
* Location Area Identification IE defined in 3GPP TS 24.008, not
@@ -932,19 +939,19 @@ de_bssgp_llc_frames_disc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_
*/
/*
- * 11.3.18 LSA Identifier List
+ * 11.3.18 LSA Identifier List
*/
/* Rest of element coded as in 3GPP TS 48.008, not including
* 3GPP TS 48.008 IEI and 3GPP TS 48.008 length indicator
*/
/*
- * 11.3.19 LSA Information
+ * 11.3.19 LSA Information
*/
/* Rest of element coded as in 3GPP TS 48.008, not including
* 3GPP TS 48.008 IEI and 3GPP TS 48.008 length indicator
*/
/*
- * 11.3.20 Mobile Id
+ * 11.3.20 Mobile Id
*/
/* Octets 3-n contain either the IMSI, IMEISV or IMEI coded as the
* value part (starting with octet 3) of the Mobile Identity IE defined in
@@ -952,61 +959,61 @@ de_bssgp_llc_frames_disc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_
* 3GPP TS 24.008 length indcator
*/
/*
- * 11.3.21 MS Bucket Size
+ * 11.3.21 MS Bucket Size
*/
static guint16
de_bssgp_ms_bucket_size(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- /* The Bmax field is coded as Bmax of BVC Bucket Size, see sub-clause 11.3.5. */
- proto_tree_add_item(tree, hf_bssgp_bucket_size, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
- curr_offset+=2;
+ /* The Bmax field is coded as Bmax of BVC Bucket Size, see sub-clause 11.3.5. */
+ proto_tree_add_item(tree, hf_bssgp_bucket_size, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
+ curr_offset+=2;
- return(curr_offset-offset);
+ return(curr_offset-offset);
}
/*
- * 11.3.22 MS Radio Access Capability
+ * 11.3.22 MS Radio Access Capability
*/
/* Rest of element coded as the value part defined in
* 3GPP TS 24.008, not including 3GPP TS 24.008 IEI and
* 3GPP TS 24.008 octet length indicator.
*/
/*
- * 11.3.23 OMC Id
+ * 11.3.23 OMC Id
*/
static guint16
de_bssgp_omc_id(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- /* octet 3-22 For the OMC identity, see 3GPP TS 12.20 */
- proto_tree_add_item(tree, hf_bssgp_omc_id, tvb, curr_offset, len, ENC_NA);
+ /* octet 3-22 For the OMC identity, see 3GPP TS 12.20 */
+ proto_tree_add_item(tree, hf_bssgp_omc_id, tvb, curr_offset, len, ENC_NA);
- return len;
+ return len;
}
/*
- * 11.3.24 PDU In Error
+ * 11.3.24 PDU In Error
*/
static guint16
de_bssgp_pdu_in_error(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- /* octet 3-? Erroneous BSSGP PDU */
- proto_tree_add_item(tree, hf_bssgp_msg_type, tvb, 0, 1, ENC_BIG_ENDIAN);
- curr_offset++;
+ /* octet 3-? Erroneous BSSGP PDU */
+ proto_tree_add_item(tree, hf_bssgp_msg_type, tvb, 0, 1, ENC_BIG_ENDIAN);
+ curr_offset++;
- proto_tree_add_text(tree, tvb, curr_offset, len-1, "PDU Data");
+ proto_tree_add_text(tree, tvb, curr_offset, len-1, "PDU Data");
- return len;
+ return len;
}
/*
* 11.3.25 PDU Lifetime
@@ -1014,14 +1021,14 @@ de_bssgp_pdu_in_error(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, g
static guint16
de_bssgp_pdu_lifetime(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- proto_tree_add_item(tree, hf_bssgp_delay_val, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
- curr_offset+=2;
+ proto_tree_add_item(tree, hf_bssgp_delay_val, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
+ curr_offset+=2;
- return(curr_offset-offset);
+ return(curr_offset-offset);
}
/*
@@ -1030,17 +1037,17 @@ coding provides a range of over 10 minutes in increments of 10 ms. As a special
(decimal 65 535) shall be interpreted as "infinite delay".
*/
/*
- * 11.3.26 PDU Type
+ * 11.3.26 PDU Type
*/
/*
- * 11.3.27 Priority
+ * 11.3.27 Priority
*/
/* Rest of element coded as the value part of the Priority IE defined in
* 3GPP TS 48.008, not including 3GPP TS 48.008 IEI and
* 3GPP TS 48.008 length indicator
*/
/*
- * 11.3.28 QoS Profile
+ * 11.3.28 QoS Profile
*/
static const true_false_string bssgp_a_bit_vals = {
"Radio interface uses RLC/MAC-UNITDATA functionality",
@@ -1058,102 +1065,102 @@ static const true_false_string bssgp_cr_bit_vals = {
};
const value_string bssgp_peak_rate_gran_vals[] = {
- { 0x0, "100 bits/s increments" },
+ { 0x0, "100 bits/s increments" },
{ 0x1, "1000 bits/s increments" },
{ 0x2, "10000 bits/s increments" },
{ 0x3, "100000 bits/s increments" },
- { 0, NULL }
+ { 0, NULL }
};
- static const value_string bssgp_precedence_ul[] = {
+static const value_string bssgp_precedence_ul[] = {
{ 0, "High priority" },
{ 1, "Normal priority" },
{ 2, "Low priority" },
{ 0, NULL },
- };
+};
- static const value_string bssgp_precedence_dl[] = {
+static const value_string bssgp_precedence_dl[] = {
{ 0, "Radio priority 1" },
{ 1, "Radio priority 2" },
{ 2, "Radio priority 3" },
{ 3, "Radio priority 4" },
{ 4, "Radio priority unknown" },
{ 0, NULL },
- };
+};
static guint16
de_bssgp_qos_profile(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- proto_item *pi, *pre_item;
- guint32 curr_offset;
- guint16 peak_bit_rate;
- guint8 rate_gran, precedence;
- int link_dir;
-
- curr_offset = offset;
-
- /* octet 3-4 Peak bit rate provided by the network (note)
- * NOTE: The bit rate 0 (zero) shall mean "best effort" in this IE.
- */
- link_dir = gpinfo->link_dir;
-
- peak_bit_rate = tvb_get_ntohs(tvb, curr_offset);
- pi = proto_tree_add_text(tree, tvb, curr_offset, 1, "Peak bit rate: ");
- if (peak_bit_rate == 0) {
- proto_item_append_text(pi, "Best effort");
- }else{
- rate_gran = tvb_get_guint8(tvb, curr_offset+2)&0xc0;
- switch(rate_gran){
- case 0:
- /* 100 bits/s increments */
- proto_item_append_text(pi, "%u bits/s", peak_bit_rate * 100);
- break;
- case 1:
- /* 1000 bits/s increments */
- proto_item_append_text(pi, "%u kbits/s", peak_bit_rate);
- break;
- case 2:
- /* 10000 bits/s increments */
- proto_item_append_text(pi, "%u kbits/s", peak_bit_rate * 10);
- break;
- case 3:
- /* 100000 bits/s increments */
- proto_item_append_text(pi, "%u kbits/s", peak_bit_rate * 100);
- break;
- default:
- break;
- }
- }
- curr_offset+=2;
-
- /* octet 5 Peak Bit Rate Granularity C/R T A Precedence */
- /* If the Gigabit Interface feature has not been negotiated, the "Peak bit rate"
- * field is the binary encoding of the peak bit rate information expressed in 100 bits/s
- * increments, starting from 0 x 100 bits/s until 65 535 x 100 bits/s (6 Mbps).
- *
- * If the Gigabit Interface feature has been negotiated, the "Peak bit rate" field is the
- * binary encoding of the peak bit rate information expressed in increments as defined by
- * the Peak Bit Rate Granularity field.
- */
- proto_tree_add_item(tree, hf_bssgp_peak_rate_gran, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(tree, hf_bssgp_cr_bit, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(tree, hf_bssgp_t_bit, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(tree, hf_bssgp_a_bit, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- precedence = tvb_get_guint8(tvb, curr_offset) & 0x7;
- pre_item = proto_tree_add_item(tree, hf_bssgp_precedence, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- if(link_dir == P2P_DIR_DL){
- proto_item_append_text(pre_item, " %s", val_to_str_const((guint32)precedence, bssgp_precedence_dl, "Radio Priority Unknown(Radio priority 3)"));
- }else{
- proto_item_append_text(pre_item, " %s", val_to_str_const((guint32)precedence, bssgp_precedence_ul, "Priority Unknown(Low priority)"));
- }
-
- curr_offset++;
-
- return(curr_offset-offset);
-}
-/*
- * 11.3.29 Radio Cause
- */
- static const value_string bssgp_radio_cause_vals[] = {
+ proto_item *pi, *pre_item;
+ guint32 curr_offset;
+ guint16 peak_bit_rate;
+ guint8 rate_gran, precedence;
+ int link_dir;
+
+ curr_offset = offset;
+
+ /* octet 3-4 Peak bit rate provided by the network (note)
+ * NOTE: The bit rate 0 (zero) shall mean "best effort" in this IE.
+ */
+ link_dir = gpinfo->link_dir;
+
+ peak_bit_rate = tvb_get_ntohs(tvb, curr_offset);
+ pi = proto_tree_add_text(tree, tvb, curr_offset, 1, "Peak bit rate: ");
+ if (peak_bit_rate == 0) {
+ proto_item_append_text(pi, "Best effort");
+ }else{
+ rate_gran = tvb_get_guint8(tvb, curr_offset+2)&0xc0;
+ switch(rate_gran){
+ case 0:
+ /* 100 bits/s increments */
+ proto_item_append_text(pi, "%u bits/s", peak_bit_rate * 100);
+ break;
+ case 1:
+ /* 1000 bits/s increments */
+ proto_item_append_text(pi, "%u kbits/s", peak_bit_rate);
+ break;
+ case 2:
+ /* 10000 bits/s increments */
+ proto_item_append_text(pi, "%u kbits/s", peak_bit_rate * 10);
+ break;
+ case 3:
+ /* 100000 bits/s increments */
+ proto_item_append_text(pi, "%u kbits/s", peak_bit_rate * 100);
+ break;
+ default:
+ break;
+ }
+ }
+ curr_offset+=2;
+
+ /* octet 5 Peak Bit Rate Granularity C/R T A Precedence */
+ /* If the Gigabit Interface feature has not been negotiated, the "Peak bit rate"
+ * field is the binary encoding of the peak bit rate information expressed in 100 bits/s
+ * increments, starting from 0 x 100 bits/s until 65 535 x 100 bits/s (6 Mbps).
+ *
+ * If the Gigabit Interface feature has been negotiated, the "Peak bit rate" field is the
+ * binary encoding of the peak bit rate information expressed in increments as defined by
+ * the Peak Bit Rate Granularity field.
+ */
+ proto_tree_add_item(tree, hf_bssgp_peak_rate_gran, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_bssgp_cr_bit, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_bssgp_t_bit, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_bssgp_a_bit, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ precedence = tvb_get_guint8(tvb, curr_offset) & 0x7;
+ pre_item = proto_tree_add_item(tree, hf_bssgp_precedence, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ if(link_dir == P2P_DIR_DL){
+ proto_item_append_text(pre_item, " %s", val_to_str_const((guint32)precedence, bssgp_precedence_dl, "Radio Priority Unknown(Radio priority 3)"));
+ }else{
+ proto_item_append_text(pre_item, " %s", val_to_str_const((guint32)precedence, bssgp_precedence_ul, "Priority Unknown(Low priority)"));
+ }
+
+ curr_offset++;
+
+ return(curr_offset-offset);
+}
+/*
+ * 11.3.29 Radio Cause
+ */
+static const value_string bssgp_radio_cause_vals[] = {
{ 0x00, "Radio contact lost with the MS" },
{ 0x01, "Radio link quality insufficient to continue communication" },
{ 0x02, "Cell reselection ordered" },
@@ -1161,136 +1168,136 @@ de_bssgp_qos_profile(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gu
{ 0x04, "Cell reselection failure" },
{ 0, NULL },
/* Otherwise "Reserved (Radio contact lost with the MS)" */
- };
+};
static guint16
de_bssgp_ra_cause(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- proto_tree_add_item(tree, hf_bssgp_ra_cause, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- curr_offset++;
+ proto_tree_add_item(tree, hf_bssgp_ra_cause, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ curr_offset++;
- return(curr_offset-offset);
+ return(curr_offset-offset);
}
/*
- * 11.3.30 RA-Cap-UPD-Cause
+ * 11.3.30 RA-Cap-UPD-Cause
*/
- static const value_string bssgp_ra_cap_upd_cause_vals[] = {
+static const value_string bssgp_ra_cap_upd_cause_vals[] = {
{ 0x00, "OK, RA capability IE present" },
{ 0x01, "TLLI unknown in SGSN" },
{ 0x02, "No RA capabilities or IMSI available for this MS" },
{ 0, NULL },
/* Otherwise "Reserved (TLLI unknown in SGSN)" */
- };
+};
static guint16
de_bssgp_ra_cap_upd_cause(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- proto_tree_add_item(tree, hf_bssgp_ra_cap_upd_cause, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- curr_offset++;
+ proto_tree_add_item(tree, hf_bssgp_ra_cap_upd_cause, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ curr_offset++;
- return(curr_offset-offset);
+ return(curr_offset-offset);
}
/*
- * 11.3.31 Routeing Area
+ * 11.3.31 Routeing Area
*/
/* Octets 3 to 8 contain the value part (starting with octet 2) of the
* Routing Area Identification IE defined in 3GPP TS 24.008, not
* including 3GPP TS 24.008 IEI
*/
/*
- * 11.3.32 R_default_MS
+ * 11.3.32 R_default_MS
*/
static guint16
de_bssgp_r_default_ms(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- proto_tree_add_item(tree, hf_bssgp_r_default_ms, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
- curr_offset+=2;
+ proto_tree_add_item(tree, hf_bssgp_r_default_ms, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
+ curr_offset+=2;
- return(curr_offset-offset);
+ return(curr_offset-offset);
}
/*
- * 11.3.33 Suspend Reference Number
+ * 11.3.33 Suspend Reference Number
*/
static guint16
de_bssgp_suspend_ref_no(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- /* Unstructured value */
- proto_tree_add_item(tree, hf_bssgp_suspend_ref_no, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ /* Unstructured value */
+ proto_tree_add_item(tree, hf_bssgp_suspend_ref_no, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- curr_offset++;
+ curr_offset++;
- return(curr_offset-offset);
+ return(curr_offset-offset);
}
/*
- * 11.3.34 Tag
+ * 11.3.34 Tag
*/
static guint16
de_bssgp_tag(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- /* Unstructured value */
- proto_tree_add_item(tree, hf_bssgp_tag, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ /* Unstructured value */
+ proto_tree_add_item(tree, hf_bssgp_tag, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- curr_offset++;
+ curr_offset++;
- return(curr_offset-offset);
+ return(curr_offset-offset);
}
/*
- * 11.3.35 Temporary logical link Identity (TLLI)
+ * 11.3.35 Temporary logical link Identity (TLLI)
* Rest of element coded as the value part of the TLLI information
* element in 3GPP TS 44.018, not including 3GPP TS 44.018 IEI.
*/
/*
- * 11.3.36 Temporary Mobile Subscriber Identity (TMSI)
+ * 11.3.36 Temporary Mobile Subscriber Identity (TMSI)
*/
/* Rest of element coded as the value part of the TMSI/P-TMSI
* information element in 3GPP TS 24.008, not including
* 3GPP TS 24.008 IEI.
*/
/*
- * 11.3.37 Trace Reference
+ * 11.3.37 Trace Reference
*/
static guint16
de_bssgp_trace_ref(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- /* octet 3-4 Trace Reference */
- proto_tree_add_item(tree, hf_bssgp_trace_ref, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
+ /* octet 3-4 Trace Reference */
+ proto_tree_add_item(tree, hf_bssgp_trace_ref, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
- curr_offset+=2;
+ curr_offset+=2;
- return(curr_offset-offset);
+ return(curr_offset-offset);
}
/*
- * 11.3.38 Trace Type
+ * 11.3.38 Trace Type
*/
/* This is coded as specified in Technical Specification
* 3GPP TS 32.008
@@ -1299,77 +1306,77 @@ de_bssgp_trace_ref(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guin
static guint16
de_bssgp_trace_type(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- proto_tree_add_text(tree, tvb, curr_offset, len, "Trace Type data ( Coding unknown (Specification withdrawn) 3GPP TS 32.008)");
+ proto_tree_add_text(tree, tvb, curr_offset, len, "Trace Type data ( Coding unknown (Specification withdrawn) 3GPP TS 32.008)");
- return(len);
+ return(len);
}
/*
- * 11.3.39 Transaction Id
+ * 11.3.39 Transaction Id
*/
static guint16
de_bssgp_transaction_id(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- proto_tree_add_item(tree, hf_bssgp_transaction_id, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_bssgp_transaction_id, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
- return(curr_offset-offset);
+ return(curr_offset-offset);
}
/*
- * 11.3.40 Trigger Id
+ * 11.3.40 Trigger Id
*/
static guint16
de_bssgp_trigger_id(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- proto_tree_add_item(tree, hf_bssgp_trigger_id, tvb, curr_offset, len, ENC_NA);
+ proto_tree_add_item(tree, hf_bssgp_trigger_id, tvb, curr_offset, len, ENC_NA);
- return(len);
+ return(len);
}
/*
- * 11.3.41 Number of octets affected
+ * 11.3.41 Number of octets affected
*/
static guint16
de_bssgp_no_of_oct_affected(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
- guint32 no_of_oct;
+ guint32 curr_offset;
+ guint32 no_of_oct;
- curr_offset = offset;
+ curr_offset = offset;
- /* octet 3-5 number of octets transferred or deleted */
- no_of_oct = tvb_get_ntoh24(tvb,curr_offset);
- proto_tree_add_item(tree, hf_bssgp_no_of_oct, tvb, curr_offset, 3, ENC_BIG_ENDIAN);
+ /* octet 3-5 number of octets transferred or deleted */
+ no_of_oct = tvb_get_ntoh24(tvb,curr_offset);
+ proto_tree_add_item(tree, hf_bssgp_no_of_oct, tvb, curr_offset, 3, ENC_BIG_ENDIAN);
- curr_offset+=3;
+ curr_offset+=3;
- if (add_string)
- g_snprintf(add_string, string_len, " - %u", no_of_oct);
+ if (add_string)
+ g_snprintf(add_string, string_len, " - %u", no_of_oct);
- return(curr_offset-offset);
+ return(curr_offset-offset);
}
/*
- * 11.3.42 Packet Flow Identifier (PFI)
+ * 11.3.42 Packet Flow Identifier (PFI)
*/
/* Rest of element coded as the value part of the Packet Flow
* Identifier information element in 3GPP TS 24.008, not including
* 3GPP TS 24.008 IEI
*/
/*
- * 11.3.42a (void)
+ * 11.3.42a (void)
*/
/*
- * 11.3.43 Aggregate BSS QoS Profile
+ * 11.3.43 Aggregate BSS QoS Profile
*/
/* Rest of element coded as the value part of the QoS information
* element in 3GPP TS 24.008, not including 3GPP TS 24.008 IEI and
@@ -1378,7 +1385,7 @@ de_bssgp_no_of_oct_affected(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo
* 10.5.6.5
*/
/*
- * 11.3.44 GPRS Timer
+ * 11.3.44 GPRS Timer
*/
static const value_string bssgp_unit_vals[] = {
{ 0, "incremented in multiples of 2 s" },
@@ -1386,236 +1393,236 @@ static const value_string bssgp_unit_vals[] = {
{ 2, "incremented in multiples of decihours" },
{ 3, "incremented in multiples of 500 msec" },
{ 4, "incremented in multiples of 1 minute(Undefined)" },
- { 5, "incremented in multiples of 1 minute(Undefined)" },
+ { 5, "incremented in multiples of 1 minute(Undefined)" },
{ 6, "incremented in multiples of 1 minute(Undefined)" },
{ 7, "the timer does not expire" },
{ 0, NULL},
/* Otherwise "incremented in multiples of 1 minute" */
- };
+};
static guint16
de_bssgp_gprs_timer(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- /*octet 3 Unit Value Timer value */
- proto_tree_add_item(tree, hf_bssgp_unit_val, tvb, curr_offset, 3, ENC_BIG_ENDIAN);
- proto_tree_add_item(tree, hf_bssgp_gprs_timer, tvb, curr_offset, 3, ENC_BIG_ENDIAN);
+ /*octet 3 Unit Value Timer value */
+ proto_tree_add_item(tree, hf_bssgp_unit_val, tvb, curr_offset, 3, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_bssgp_gprs_timer, tvb, curr_offset, 3, ENC_BIG_ENDIAN);
- curr_offset++;
+ curr_offset++;
- return(curr_offset-offset);
+ return(curr_offset-offset);
}
/*
- * 11.3.45 Feature Bitmap
+ * 11.3.45 Feature Bitmap
*/
static guint16
de_bssgp_feature_bitmap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
- curr_offset = offset;
- /* MBMS */
- proto_tree_add_item(tree, hf_bssgp_mbms, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- /* EnhancedRadioStatus */
- proto_tree_add_item(tree, hf_bssgp_EnhancedRadioStatus, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- /* PFCFC */
- proto_tree_add_item(tree, hf_bssgp_pfcfc, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- /* RIM */
- proto_tree_add_item(tree, hf_bssgp_rim, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- /* LCS */
- proto_tree_add_item(tree, hf_bssgp_lcs, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- /* INR */
- proto_tree_add_item(tree, hf_bssgp_inr, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- /* CBL */
- proto_tree_add_item(tree, hf_bssgp_cbl, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- /* PFC */
- proto_tree_add_item(tree, hf_bssgp_pfc, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ curr_offset = offset;
+ /* MBMS */
+ proto_tree_add_item(tree, hf_bssgp_mbms, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ /* EnhancedRadioStatus */
+ proto_tree_add_item(tree, hf_bssgp_EnhancedRadioStatus, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ /* PFCFC */
+ proto_tree_add_item(tree, hf_bssgp_pfcfc, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ /* RIM */
+ proto_tree_add_item(tree, hf_bssgp_rim, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ /* LCS */
+ proto_tree_add_item(tree, hf_bssgp_lcs, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ /* INR */
+ proto_tree_add_item(tree, hf_bssgp_inr, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ /* CBL */
+ proto_tree_add_item(tree, hf_bssgp_cbl, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ /* PFC */
+ proto_tree_add_item(tree, hf_bssgp_pfc, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- curr_offset++;
+ curr_offset++;
- return(curr_offset-offset);
+ return(curr_offset-offset);
}
/*
- * 11.3.46 Bucket Full Ratio
+ * 11.3.46 Bucket Full Ratio
*/
static guint16
de_bssgp_bucket_full_ratio(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- /* Ratio of the bucket that is filled up with data */
- proto_tree_add_item(tree, hf_bssgp_bucket_full_ratio, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ /* Ratio of the bucket that is filled up with data */
+ proto_tree_add_item(tree, hf_bssgp_bucket_full_ratio, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- curr_offset++;
+ curr_offset++;
- return(curr_offset-offset);
+ return(curr_offset-offset);
}
/*
- * 11.3.47 Service UTRAN CCO
+ * 11.3.47 Service UTRAN CCO
*/
static const value_string bssgp_service_utran_cco_vals[] = {
{ 0, "Network initiated cell change order procedure to UTRAN should be performed" },
{ 1, "Network initiated cell change order procedure to UTRAN should not be performed" },
{ 2, "Network initiated cell change order procedure to UTRAN shall not be performed" },
- { 3, "If received, shall be interpreted as no information available (bits 4-5 valid)" },
- { 0, NULL },
+ { 3, "If received, shall be interpreted as no information available (bits 4-5 valid)" },
+ { 0, NULL },
/* Otherwise "No information available" */
- };
+};
static const value_string bssgp_service_eutran_cco_vals[] = {
{ 0, "If received, shall be interpreted as no information available" },
{ 1, "Network initiated cell change order to E-UTRAN or PS handover to E-UTRAN procedure should be performed" },
{ 2, "Network initiated cell change order to E-UTRAN or PS handover to E-UTRAN procedure should not be performed" },
- { 3, "Network initiated cell change order to E-UTRAN or PS handover to E-UTRAN procedure shall not be performed" },
- { 0, NULL },
+ { 3, "Network initiated cell change order to E-UTRAN or PS handover to E-UTRAN procedure shall not be performed" },
+ { 0, NULL },
/* Otherwise "No information available" */
- };
+};
static guint16
de_bssgp_serv_utran_cco(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- /* Service EUTRAN CCO Value part */
- proto_tree_add_item(tree, hf_bssgp_serv_eutran_cco, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- /* Service UTRAN CCO Value part */
- proto_tree_add_item(tree, hf_bssgp_serv_utran_cco, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- curr_offset++;
+ /* Service EUTRAN CCO Value part */
+ proto_tree_add_item(tree, hf_bssgp_serv_eutran_cco, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ /* Service UTRAN CCO Value part */
+ proto_tree_add_item(tree, hf_bssgp_serv_utran_cco, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ curr_offset++;
- return(curr_offset-offset);
+ return(curr_offset-offset);
}
/*
- * 11.3.48 NSEI (Network Service Entity Identifier)
+ * 11.3.48 NSEI (Network Service Entity Identifier)
*/
static guint16
de_bssgp_nsei(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
- guint16 nsei;
+ guint32 curr_offset;
+ guint16 nsei;
- curr_offset = offset;
+ curr_offset = offset;
- nsei = tvb_get_ntohs(tvb, curr_offset);
- proto_tree_add_item(tree, hf_bssgp_nsei, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
- curr_offset+=2;
+ nsei = tvb_get_ntohs(tvb, curr_offset);
+ proto_tree_add_item(tree, hf_bssgp_nsei, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
+ curr_offset+=2;
- col_append_sep_fstr(gpinfo->cinfo, COL_INFO, BSSGP_SEP, "NSEI %u", nsei);
+ col_append_sep_fstr(gpinfo->cinfo, COL_INFO, BSSGP_SEP, "NSEI %u", nsei);
- return(curr_offset-offset);
+ return(curr_offset-offset);
}
/*
- * 11.3.49 RRLP APDU
+ * 11.3.49 RRLP APDU
*/
static guint16
de_bssgp_rrlp_apdu(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- tvbuff_t *next_tvb=NULL;
- guint32 curr_offset;
+ tvbuff_t *next_tvb=NULL;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- /* The rest of the information element contains an embedded RRLP
- * message whose content and encoding are defined according to the
- * 3GPP TS 44.031. The RRLP protocol is not octet aligned.
- * Therefore, the unused bits in the last octet are padded with zeroes
- */
+ /* The rest of the information element contains an embedded RRLP
+ * message whose content and encoding are defined according to the
+ * 3GPP TS 44.031. The RRLP protocol is not octet aligned.
+ * Therefore, the unused bits in the last octet are padded with zeroes
+ */
- if(len > 0){
- next_tvb = tvb_new_subset_remaining(tvb, curr_offset);
- proto_tree_add_text(tree, tvb, curr_offset, len, "RRLP APDU");
- }
+ if(len > 0){
+ next_tvb = tvb_new_subset_remaining(tvb, curr_offset);
+ proto_tree_add_text(tree, tvb, curr_offset, len, "RRLP APDU");
+ }
- if(next_tvb){
- if (rrlp_handle) {
- call_dissector(rrlp_handle, next_tvb, gpinfo, gparent_tree);
- }else if (data_handle) {
- call_dissector(data_handle, next_tvb, gpinfo, gparent_tree);
- }
+ if(next_tvb){
+ if (rrlp_handle) {
+ call_dissector(rrlp_handle, next_tvb, gpinfo, gparent_tree);
+ }else if (data_handle) {
+ call_dissector(data_handle, next_tvb, gpinfo, gparent_tree);
+ }
}
- return(len);
+ return(len);
}
/*
- * 11.3.50 LCS QoS
+ * 11.3.50 LCS QoS
*/
/* Rest of element coded as the value part defined in
* 3GPP TS 48.008, not including 3GPP TS 48.008 IEI and
* 3GPP TS 48.008 octet length indicator
*/
/*
- * 11.3.51 LCS Client Type
+ * 11.3.51 LCS Client Type
*/
/* Rest of element coded as the value part defined in
* 3GPP TS 49.031, not including 3GPP TS 49.031 IEI and
* 3GPP TS 49.031 octet length indicator
*/
/*
- * 11.3.52 Requested GPS Assistance Data
+ * 11.3.52 Requested GPS Assistance Data
*/
/* Rest of element coded as the value part defined in
* 3GPP TS 49.031, not including 3GPP TS 49.031 IEI and
* 3GPP TS 49.031 octet length indicator
*/
/*
- * 11.3.53 Location Type
+ * 11.3.53 Location Type
*/
/* Rest of element coded as the value part defined in
* 3GPP TS 49.031, not including 3GPP TS 49.031 IEI and
* 3GPP TS 49.031 octet length indicator
*/
/*
- * 11.3.54 Location Estimate
+ * 11.3.54 Location Estimate
*/
/* Rest of element coded as the value part defined in
* 3GPP TS 48.008, not including 3GPP TS 48.008 IEI and
* 3GPP TS 48.008 octet length indicator
*/
/*
- * 11.3.55 Positioning Data
+ * 11.3.55 Positioning Data
*/
/* Rest of element coded as the value part defined in
* 3GPP TS 49.031, not including 3GPP TS 49.031 IEI and
* 3GPP TS 49.031 octet length indicator
*/
/*
- * 11.3.56 Deciphering Keys
+ * 11.3.56 Deciphering Keys
*/
/* Rest of element coded as the value part defined in
* 3GPP TS 49.031, not including 3GPP TS 49.031 IEI and
* 3GPP TS 49.031 octet length indicator
*/
/*
- * 11.3.57 LCS Priority
+ * 11.3.57 LCS Priority
*/
/* Rest of element coded as the value part defined in
* 3GPP TS 49.031, not including 3GPP TS 49.031 IEI and
* 3GPP TS 49.031 octet length indicator
*/
/*
- * 11.3.58 LCS Cause
+ * 11.3.58 LCS Cause
*/
/* Rest of element coded as the value part defined in
* 3GPP TS 49.031, not including 3GPP TS 49.031 IEI and
* 3GPP TS 49.031 octet length indicator
*/
/*
- * 11.3.59 LCS Capability
+ * 11.3.59 LCS Capability
*/
/* Rest of element coded as the value part of the PS LCS Capability
* IE defined in 3GPP TS 24.008, not including 3GPP TS 24.008 IEI
* and length indicator
*/
/*
- * 11.3.60 RRLP Flags
+ * 11.3.60 RRLP Flags
*/
static const true_false_string bssgp_rrlp_flg1_vals = {
@@ -1626,77 +1633,77 @@ static const true_false_string bssgp_rrlp_flg1_vals = {
static guint16
de_bssgp_rrlp_flags(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- /* Flag 1 (Octet 3, bit 1): */
- proto_tree_add_item(tree, hf_bssgp_rrlp_flag1, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
+ /* Flag 1 (Octet 3, bit 1): */
+ proto_tree_add_item(tree, hf_bssgp_rrlp_flag1, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
- return(curr_offset-offset);
+ return(curr_offset-offset);
}
/*
- * 11.3.61 RIM Application Identity
+ * 11.3.61 RIM Application Identity
*/
static const value_string bssgp_rim_appid_vals[] = {
{ 0, "Reserved" },
{ 1, "Network Assisted Cell Change (NACC)" },
{ 2, "System Information 3 (SI3)" },
- { 3, "MBMS data channel" },
- { 4, "SON Transfer" },
- { 5, "UTRA System Information (UTRA SI)" },
- { 0, NULL },
- };
+ { 3, "MBMS data channel" },
+ { 4, "SON Transfer" },
+ { 5, "UTRA System Information (UTRA SI)" },
+ { 0, NULL },
+};
static guint16
de_bssgp_rim_app_id(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- /* RIM Application Identity */
- g_rim_application_identity = tvb_get_guint8(tvb, curr_offset);
- proto_tree_add_item(tree, hf_bssgp_rim_app_id, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- curr_offset++;
+ /* RIM Application Identity */
+ g_rim_application_identity = tvb_get_guint8(tvb, curr_offset);
+ proto_tree_add_item(tree, hf_bssgp_rim_app_id, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ curr_offset++;
- return(curr_offset-offset);
+ return(curr_offset-offset);
}
/*
- * 11.3.62 RIM Sequence Number
+ * 11.3.62 RIM Sequence Number
*/
static guint16
de_bssgp_rim_seq_no(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- /* RIM Sequence Number */
- proto_tree_add_item(tree, hf_bssgp_rim_seq_no, tvb, curr_offset, 4, ENC_BIG_ENDIAN);
- curr_offset+=4;
+ /* RIM Sequence Number */
+ proto_tree_add_item(tree, hf_bssgp_rim_seq_no, tvb, curr_offset, 4, ENC_BIG_ENDIAN);
+ curr_offset+=4;
- return(curr_offset-offset);
+ return(curr_offset-offset);
}
/*
- * 11.3.62a RIM Container
- * 11.3.62a.0 General
- * 11.3.62a.1 RAN-INFORMATION-REQUEST RIM Container
+ * 11.3.62a RIM Container
+ * 11.3.62a.0 General
+ * 11.3.62a.1 RAN-INFORMATION-REQUEST RIM Container
*/
/* Dissection moved */
/*
- * 11.3.62a.2 RAN-INFORMATION RIM Container
- * 11.3.62a.3 RAN-INFORMATION-ACK RIM Container
- * 11.3.62a.4 RAN-INFORMATION-ERROR RIM Container
- * 11.3.62a.5 RAN-INFORMATION-APPLICATION-ERROR RIM Container
+ * 11.3.62a.2 RAN-INFORMATION RIM Container
+ * 11.3.62a.3 RAN-INFORMATION-ACK RIM Container
+ * 11.3.62a.4 RAN-INFORMATION-ERROR RIM Container
+ * 11.3.62a.5 RAN-INFORMATION-APPLICATION-ERROR RIM Container
*/
/*
- * 11.3.63 Application Container
- * 11.3.63.1 RAN-INFORMATION-REQUEST Application Container
- * 11.3.63.1.0 General
+ * 11.3.63 Application Container
+ * 11.3.63.1 RAN-INFORMATION-REQUEST Application Container
+ * 11.3.63.1.0 General
*/
@@ -1704,63 +1711,63 @@ de_bssgp_rim_seq_no(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gui
static guint16
de_bssgp_ran_information_request_app_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- tvbuff_t *new_tvb = NULL;
- guint32 curr_offset;
-
- curr_offset = offset;
-
- switch(g_rim_application_identity){
- case 1:
- /* 11.3.63.1.1 RAN-INFORMATION-REQUEST Application Container for the NACC Application */
- /* Reporting Cell Identifier */
- curr_offset = curr_offset + de_bssgp_cell_id(tvb, tree, pinfo,curr_offset, len, add_string, string_len);
- break;
- case 2:
- /* 11.3.63.1.2 RAN-INFORMATION-REQUEST Application Container for the SI3 Application */
- /* Reporting Cell Identifier */
- curr_offset = curr_offset + de_bssgp_cell_id(tvb, tree, pinfo, curr_offset, len, add_string, string_len);
- break;
- case 3:
- /* 11.3.63.1.3 RAN-INFORMATION-REQUEST Application Container for the MBMS data channel Application */
- /* Reporting Cell Identifier */
- curr_offset = curr_offset + de_bssgp_cell_id(tvb, tree, pinfo, curr_offset, len, add_string, string_len);
- break;
- case 4:
- {
- asn1_ctx_t asn1_ctx;
-
- asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, gpinfo);
- /* 11.3.63.1.4 RAN-INFORMATION-REQUEST Application Container for the SON Transfer Application */
- /* Reporting Cell Identifier */
- /* convert to bit offset */
- curr_offset = curr_offset<<3;
- curr_offset = dissect_s1ap_Global_ENB_ID(tvb, curr_offset<<3, &asn1_ctx, tree, hf_bssgp_Global_ENB_ID_PDU);
- curr_offset = dissect_s1ap_SONtransferRequestContainer(tvb, curr_offset, &asn1_ctx, tree, hf_bssgp_SONtransferRequestContainer_PDU);
- curr_offset += 7; curr_offset >>= 3;
- }
- break;
- case 5:
- /* 11.3.63.1.5 RAN-INFORMATION Application Container for the UTRA SI Application */
- /* Octet 3-m Reporting Cell Identifier
- * This field is encoded as the Source Cell Identifier IE (UTRAN Source Cell ID) as defined in
- * 3GPP TS 25.413
- */
- new_tvb = tvb_new_subset_remaining(tvb, curr_offset);
- curr_offset = curr_offset + dissect_ranap_SourceCellID_PDU(new_tvb, gpinfo, tree);
- break;
- default :
- proto_tree_add_text(tree, tvb, curr_offset, len, "Unknown RIM Application Identity");
- curr_offset+=len;
- break;
- }
-
-
- return(curr_offset-offset);
-}
-
-/*
- * 11.3.63.2 RAN-INFORMATION Application Container Unit
- * 11.3.63.2.0 General
+ tvbuff_t *new_tvb = NULL;
+ guint32 curr_offset;
+
+ curr_offset = offset;
+
+ switch(g_rim_application_identity){
+ case 1:
+ /* 11.3.63.1.1 RAN-INFORMATION-REQUEST Application Container for the NACC Application */
+ /* Reporting Cell Identifier */
+ curr_offset = curr_offset + de_bssgp_cell_id(tvb, tree, pinfo,curr_offset, len, add_string, string_len);
+ break;
+ case 2:
+ /* 11.3.63.1.2 RAN-INFORMATION-REQUEST Application Container for the SI3 Application */
+ /* Reporting Cell Identifier */
+ curr_offset = curr_offset + de_bssgp_cell_id(tvb, tree, pinfo, curr_offset, len, add_string, string_len);
+ break;
+ case 3:
+ /* 11.3.63.1.3 RAN-INFORMATION-REQUEST Application Container for the MBMS data channel Application */
+ /* Reporting Cell Identifier */
+ curr_offset = curr_offset + de_bssgp_cell_id(tvb, tree, pinfo, curr_offset, len, add_string, string_len);
+ break;
+ case 4:
+ {
+ asn1_ctx_t asn1_ctx;
+
+ asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, gpinfo);
+ /* 11.3.63.1.4 RAN-INFORMATION-REQUEST Application Container for the SON Transfer Application */
+ /* Reporting Cell Identifier */
+ /* convert to bit offset */
+ curr_offset = curr_offset<<3;
+ curr_offset = dissect_s1ap_Global_ENB_ID(tvb, curr_offset<<3, &asn1_ctx, tree, hf_bssgp_Global_ENB_ID_PDU);
+ curr_offset = dissect_s1ap_SONtransferRequestContainer(tvb, curr_offset, &asn1_ctx, tree, hf_bssgp_SONtransferRequestContainer_PDU);
+ curr_offset += 7; curr_offset >>= 3;
+ }
+ break;
+ case 5:
+ /* 11.3.63.1.5 RAN-INFORMATION Application Container for the UTRA SI Application */
+ /* Octet 3-m Reporting Cell Identifier
+ * This field is encoded as the Source Cell Identifier IE (UTRAN Source Cell ID) as defined in
+ * 3GPP TS 25.413
+ */
+ new_tvb = tvb_new_subset_remaining(tvb, curr_offset);
+ curr_offset = curr_offset + dissect_ranap_SourceCellID_PDU(new_tvb, gpinfo, tree);
+ break;
+ default :
+ proto_tree_add_text(tree, tvb, curr_offset, len, "Unknown RIM Application Identity");
+ curr_offset+=len;
+ break;
+ }
+
+
+ return(curr_offset-offset);
+}
+
+/*
+ * 11.3.63.2 RAN-INFORMATION Application Container Unit
+ * 11.3.63.2.0 General
*/
static const true_false_string bssgp_si_psi_type_vals = {
"PSI messages as specified for PBCCH (3GPP TS 44.060) follow",
@@ -1771,151 +1778,151 @@ static const value_string bssgp_rat_discriminator_vals[] = {
{ 0, "The reporting RAT is GERAN" },
{ 1, "The reporting RAT is UTRAN" },
{ 2, "The reporting RAT is E-UTRAN" },
- { 0, NULL },
- };
+ { 0, NULL },
+};
static guint16
de_bssgp_ran_information_app_cont_unit(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- tvbuff_t *new_tvb = NULL;
- guint32 curr_offset;
- guint8 type, num_items, rat_type, oct;
- int i;
-
- curr_offset = offset;
-
- switch(g_rim_application_identity){
- case 1:
- /* 11.3.63.2.1 RAN-INFORMATION Application Container for the NACC Application */
- /* Reporting Cell Identifier */
- curr_offset = curr_offset + de_bssgp_cell_id(tvb, tree, pinfo, curr_offset, len, add_string, string_len);
- /* Number of SI/PSI */
- num_items = tvb_get_guint8(tvb,curr_offset)>>1;
- proto_tree_add_item(tree, hf_bssgp_num_si_psi, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- /* Type */
- type = tvb_get_guint8(tvb,curr_offset)&0x01;
- proto_tree_add_item(tree, hf_bssgp_si_psi_type, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- curr_offset++;
- /* Octet 12-n SI/PSI */
- if(type==1){
- /* If the Type field indicates that "PSI messages as specified for PBCCH (3GPP TS 44.060) follow" then the SI/PSI
- * field contains Packet System Information message instances encoded for PBCCH as specified in
- * 3GPP TS 44.060. Each Packet System Information message contains the MESSAGE_TYPE field followed by the
- * PSI message content. Each message is 22 octets long.
- */
- for (i=0; i < num_items; i++){
- proto_tree_add_text(tree, tvb, curr_offset, 22, "PSI item %u - not dissected yet",i+1);
- curr_offset+=22;
- }
- }else{
- /* If the Type field indicates that "SI messages as specified for BCCH (3GPP TS 44.018) follow" then the SI/PSI
- * field contains System Information message instances encoded for BCCH as specified in 3GPP TS 44.018. Each
- * System Information message contains the Message type octet followed by all the IEs composing the message
- * payload. Each message is 21 octets long.
- */
- void (*msg_fcn_p)(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len);
- gint ett_tree;
- int hf_idx;
- const gchar *msg_str;
- proto_item *si_item;
- proto_tree *si_tree;
-
- for (i=0; i < num_items; i++){
- oct = tvb_get_guint8(tvb,curr_offset);
- get_rr_msg_params(oct, &msg_str, &ett_tree, &hf_idx, &msg_fcn_p);
- proto_tree_add_text(tree, tvb, curr_offset, 21, "SI item %u ",i+1);
- si_item = proto_tree_add_item(tree, hf_idx, tvb, curr_offset, 1, FALSE);
- si_tree = proto_item_add_subtree(si_item, ett_tree);
- if (msg_fcn_p == NULL){
- proto_tree_add_text(si_tree, tvb, curr_offset, 21, "Unknown SI message");
- }else{
- (*msg_fcn_p)(tvb, si_tree, gpinfo, curr_offset+1, 20);
- }
- curr_offset+=21;
- }
- }
- break;
- case 2:
- /* 11.3.63.2.2 RAN-INFORMATION Application Container for the SI3 Application */
- /* Octet 3-10 Reporting Cell Identifier */
- /* Reporting Cell Identifier: The parameter is encoded as the value part of the Cell Identifier IE
- * defined in sub-clause 11.3.9, not including IEI and Length Indicator.
- */
- curr_offset = curr_offset + de_bssgp_cell_id(tvb, tree, pinfo, curr_offset, len, add_string, string_len);
- /* Octet 11-31 SI3 */
- /* SI3: contains the SYSTEM INFORMATION type 3 message encoded for BCCH as specified in 3GPP TS 44.018 ch 9.1.35
- * It contains the Message type octet followed by all the IEs composing the message payload.
- * The message is 21 octets long.
- * dtap_rr_sys_info_3(tvb, tree, curr_offset, len-7)
- */
- proto_tree_add_text(tree, tvb, curr_offset, 1, "SYSTEM INFORMATION type 3 message");
- curr_offset++;
- break;
- case 3:
- /* 11.3.63.2.3 RAN-INFORMATION Application Container for the MBMS data channel Application */
- /* Octet 3-10 Reporting Cell Identifier */
- curr_offset = curr_offset + de_bssgp_cell_id(tvb, tree, pinfo, curr_offset, len, add_string, string_len);
- /* Octet 11-n MBMS data channel report */
- proto_tree_add_text(tree, tvb, curr_offset, len-6, "MBMS data channel report - not dissected yet");
- break;
- case 4:
- /* 11.3.63.2.4 RAN-INFORMATION Application Container for the SON Transfer Application */
- /* Octet 3 Spare RAT discriminator */
- rat_type = tvb_get_guint8(tvb,curr_offset) & 0x0f;
- proto_tree_add_item(tree, hf_bssgp_rat_discriminator, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- curr_offset++;
- /* Octet 4-m Reporting Cell Identifier */
- switch(rat_type){
- case 0:
- /* If the RAT discriminator field indicates GERAN, this field is encoded as the value part of the Cell Identifier IE
- * defined in sub-clause 11.3.9, not including IEI and Length Indicator.
- */
- curr_offset = curr_offset + de_bssgp_cell_id(tvb, tree, pinfo, curr_offset, len, add_string, string_len);
- break;
- case 1:
- /* If the RAT discriminator field indicates UTRAN, this field is encoded as the Source Cell Identifier IE (UTRAN
- * Source Cell ID) as defined in 3GPP TS 25.413
- */
- new_tvb = tvb_new_subset_remaining(tvb, curr_offset);
- curr_offset = curr_offset + dissect_ranap_SourceCellID_PDU(new_tvb, gpinfo, tree);
- break;
- case 2:
- /* If the RAT discriminator field indicates E-UTRAN, this field is encoded as the E-UTRAN CGI IE as
- * defined in 3GPP TS 36.413
- */
- new_tvb = tvb_new_subset_remaining(tvb, curr_offset);
- curr_offset = curr_offset + dissect_s1ap_Global_ENB_ID_PDU(new_tvb, gpinfo, tree);
- break;
- default:
- break;
- }
-
- break;
- case 5:
- /* 11.3.63.2.5 RAN-INFORMATION Application Container for the UTRA SI Application */
- /* Octet 3-m Reporting Cell Identifier
- * Reporting Cell Identifier: This field is encoded as the Source Cell Identifier IE
- * (UTRAN Source Cell ID) as defined in 3GPP TS 25.413
- */
- new_tvb = tvb_new_subset_remaining(tvb, curr_offset);
- curr_offset = curr_offset + dissect_ranap_SourceCellID_PDU(new_tvb, gpinfo, tree);
- /* Octet (m+1)-n UTRA SI Container
- * UTRA SI Container: This field contains System Information Container valid for the reporting cell
- * encoded as defined in TS 25.331
- */
- proto_tree_add_text(tree, tvb, curr_offset, len-(curr_offset-offset), "UTRA SI Container - not dissected yet");
- break;
-
- default :
- proto_tree_add_text(tree, tvb, curr_offset, len, "Unknown RIM Application Identitys Data");
- curr_offset+=len;
- break;
- }
-
-
- return(curr_offset-offset);
-}
-/*
- * 11.3.64 Application Error Container
+ tvbuff_t *new_tvb = NULL;
+ guint32 curr_offset;
+ guint8 type, num_items, rat_type, oct;
+ int i;
+
+ curr_offset = offset;
+
+ switch(g_rim_application_identity){
+ case 1:
+ /* 11.3.63.2.1 RAN-INFORMATION Application Container for the NACC Application */
+ /* Reporting Cell Identifier */
+ curr_offset = curr_offset + de_bssgp_cell_id(tvb, tree, pinfo, curr_offset, len, add_string, string_len);
+ /* Number of SI/PSI */
+ num_items = tvb_get_guint8(tvb,curr_offset)>>1;
+ proto_tree_add_item(tree, hf_bssgp_num_si_psi, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ /* Type */
+ type = tvb_get_guint8(tvb,curr_offset)&0x01;
+ proto_tree_add_item(tree, hf_bssgp_si_psi_type, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ curr_offset++;
+ /* Octet 12-n SI/PSI */
+ if(type==1){
+ /* If the Type field indicates that "PSI messages as specified for PBCCH (3GPP TS 44.060) follow" then the SI/PSI
+ * field contains Packet System Information message instances encoded for PBCCH as specified in
+ * 3GPP TS 44.060. Each Packet System Information message contains the MESSAGE_TYPE field followed by the
+ * PSI message content. Each message is 22 octets long.
+ */
+ for (i=0; i < num_items; i++){
+ proto_tree_add_text(tree, tvb, curr_offset, 22, "PSI item %u - not dissected yet",i+1);
+ curr_offset+=22;
+ }
+ }else{
+ /* If the Type field indicates that "SI messages as specified for BCCH (3GPP TS 44.018) follow" then the SI/PSI
+ * field contains System Information message instances encoded for BCCH as specified in 3GPP TS 44.018. Each
+ * System Information message contains the Message type octet followed by all the IEs composing the message
+ * payload. Each message is 21 octets long.
+ */
+ void (*msg_fcn_p)(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len);
+ gint ett_tree;
+ int hf_idx;
+ const gchar *msg_str;
+ proto_item *si_item;
+ proto_tree *si_tree;
+
+ for (i=0; i < num_items; i++){
+ oct = tvb_get_guint8(tvb,curr_offset);
+ get_rr_msg_params(oct, &msg_str, &ett_tree, &hf_idx, &msg_fcn_p);
+ proto_tree_add_text(tree, tvb, curr_offset, 21, "SI item %u ",i+1);
+ si_item = proto_tree_add_item(tree, hf_idx, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ si_tree = proto_item_add_subtree(si_item, ett_tree);
+ if (msg_fcn_p == NULL){
+ proto_tree_add_text(si_tree, tvb, curr_offset, 21, "Unknown SI message");
+ }else{
+ (*msg_fcn_p)(tvb, si_tree, gpinfo, curr_offset+1, 20);
+ }
+ curr_offset+=21;
+ }
+ }
+ break;
+ case 2:
+ /* 11.3.63.2.2 RAN-INFORMATION Application Container for the SI3 Application */
+ /* Octet 3-10 Reporting Cell Identifier */
+ /* Reporting Cell Identifier: The parameter is encoded as the value part of the Cell Identifier IE
+ * defined in sub-clause 11.3.9, not including IEI and Length Indicator.
+ */
+ curr_offset = curr_offset + de_bssgp_cell_id(tvb, tree, pinfo, curr_offset, len, add_string, string_len);
+ /* Octet 11-31 SI3 */
+ /* SI3: contains the SYSTEM INFORMATION type 3 message encoded for BCCH as specified in 3GPP TS 44.018 ch 9.1.35
+ * It contains the Message type octet followed by all the IEs composing the message payload.
+ * The message is 21 octets long.
+ * dtap_rr_sys_info_3(tvb, tree, curr_offset, len-7)
+ */
+ proto_tree_add_text(tree, tvb, curr_offset, 1, "SYSTEM INFORMATION type 3 message");
+ curr_offset++;
+ break;
+ case 3:
+ /* 11.3.63.2.3 RAN-INFORMATION Application Container for the MBMS data channel Application */
+ /* Octet 3-10 Reporting Cell Identifier */
+ curr_offset = curr_offset + de_bssgp_cell_id(tvb, tree, pinfo, curr_offset, len, add_string, string_len);
+ /* Octet 11-n MBMS data channel report */
+ proto_tree_add_text(tree, tvb, curr_offset, len-6, "MBMS data channel report - not dissected yet");
+ break;
+ case 4:
+ /* 11.3.63.2.4 RAN-INFORMATION Application Container for the SON Transfer Application */
+ /* Octet 3 Spare RAT discriminator */
+ rat_type = tvb_get_guint8(tvb,curr_offset) & 0x0f;
+ proto_tree_add_item(tree, hf_bssgp_rat_discriminator, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ curr_offset++;
+ /* Octet 4-m Reporting Cell Identifier */
+ switch(rat_type){
+ case 0:
+ /* If the RAT discriminator field indicates GERAN, this field is encoded as the value part of the Cell Identifier IE
+ * defined in sub-clause 11.3.9, not including IEI and Length Indicator.
+ */
+ curr_offset = curr_offset + de_bssgp_cell_id(tvb, tree, pinfo, curr_offset, len, add_string, string_len);
+ break;
+ case 1:
+ /* If the RAT discriminator field indicates UTRAN, this field is encoded as the Source Cell Identifier IE (UTRAN
+ * Source Cell ID) as defined in 3GPP TS 25.413
+ */
+ new_tvb = tvb_new_subset_remaining(tvb, curr_offset);
+ curr_offset = curr_offset + dissect_ranap_SourceCellID_PDU(new_tvb, gpinfo, tree);
+ break;
+ case 2:
+ /* If the RAT discriminator field indicates E-UTRAN, this field is encoded as the E-UTRAN CGI IE as
+ * defined in 3GPP TS 36.413
+ */
+ new_tvb = tvb_new_subset_remaining(tvb, curr_offset);
+ curr_offset = curr_offset + dissect_s1ap_Global_ENB_ID_PDU(new_tvb, gpinfo, tree);
+ break;
+ default:
+ break;
+ }
+
+ break;
+ case 5:
+ /* 11.3.63.2.5 RAN-INFORMATION Application Container for the UTRA SI Application */
+ /* Octet 3-m Reporting Cell Identifier
+ * Reporting Cell Identifier: This field is encoded as the Source Cell Identifier IE
+ * (UTRAN Source Cell ID) as defined in 3GPP TS 25.413
+ */
+ new_tvb = tvb_new_subset_remaining(tvb, curr_offset);
+ curr_offset = curr_offset + dissect_ranap_SourceCellID_PDU(new_tvb, gpinfo, tree);
+ /* Octet (m+1)-n UTRA SI Container
+ * UTRA SI Container: This field contains System Information Container valid for the reporting cell
+ * encoded as defined in TS 25.331
+ */
+ proto_tree_add_text(tree, tvb, curr_offset, len-(curr_offset-offset), "UTRA SI Container - not dissected yet");
+ break;
+
+ default :
+ proto_tree_add_text(tree, tvb, curr_offset, len, "Unknown RIM Application Identitys Data");
+ curr_offset+=len;
+ break;
+ }
+
+
+ return(curr_offset-offset);
+}
+/*
+ * 11.3.64 Application Error Container
*/
static const value_string bssgp_nacc_cause_vals[] = {
{ 0, "Other unspecified error" },
@@ -1924,8 +1931,8 @@ static const value_string bssgp_nacc_cause_vals[] = {
{ 3, "SI/PSI type error" },
{ 4, "Inconsistent length of a SI/PSI message" },
{ 5, "Inconsistent set of messages" },
- { 0, NULL },
- };
+ { 0, NULL },
+};
static const value_string bssgp_s13_cause_vals[] = {
{ 0, "Other unspecified error" },
@@ -1933,8 +1940,8 @@ static const value_string bssgp_s13_cause_vals[] = {
{ 2, "Reporting Cell Identifier does not match with the Destination Cell Identifier or with the Source Cell Identifier" },
{ 3, "Inconsistent length of a SI3 message" },
{ 4, "Inconsistent set of messages" },
- { 0, NULL },
- };
+ { 0, NULL },
+};
static const value_string bssgp_mbms_data_ch_cause_vals[] = {
{ 0, "Other unspecified error" },
@@ -1942,105 +1949,105 @@ static const value_string bssgp_mbms_data_ch_cause_vals[] = {
{ 2, "Reporting Cell Identifier does not match with the Destination Cell Identifier or with the Source Cell Identifier" },
{ 3, "RAN-INFORMATION/Initial Multiple Report or RANINFORMATION/Single Report PDU exceeds the maximum supported length" },
{ 4, "Inconsistent MBMS data channel description" },
- { 0, NULL },
- };
+ { 0, NULL },
+};
static const value_string bssgp_utra_si_cause_vals[] = {
{ 0, "Other unspecified error" },
{ 1, "Syntax error in the Application Container" },
{ 2, "Inconsistent Reporting Cell Identifier" },
- { 0, NULL },
- };
+ { 0, NULL },
+};
static guint16
de_bssgp_ran_app_error_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- tvbuff_t *new_tvb = NULL;
- guint32 curr_offset;
-
- curr_offset = offset;
-
- switch(g_rim_application_identity){
- case 1:
- /*
- * 11.3.64.1 Application Error Container layout for the NACC application
- */
- /* Octet 3 NACC Cause */
- proto_tree_add_item(tree, hf_bssgp_nacc_cause, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- curr_offset++;
- /* Erroneous Application Container including IEI and LI */
- proto_tree_add_text(tree, tvb, curr_offset, len-(curr_offset-offset), "Erroneous Application Container including IEI and LI");
- break;
- case 2:
- /*
- * 11.3.64.2 Application Error Container for the SI3 application
- */
- /* Octet 3 SI3 Cause */
- proto_tree_add_item(tree, hf_bssgp_s13_cause, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- curr_offset++;
- /* Erroneous Application Container including IEI and LI */
- proto_tree_add_text(tree, tvb, curr_offset, len-(curr_offset-offset), "Erroneous Application Container including IEI and LI");
- break;
- case 3:
- /*
- * 11.3.64.3 Application Error Container for the MBMS data channel application
- */
- /* Octet 3 MBMS data channel Cause */
- proto_tree_add_item(tree, hf_bssgp_mbms_data_ch_cause, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- curr_offset++;
- /* Erroneous Application Container including IEI and LI */
- proto_tree_add_text(tree, tvb, curr_offset, len-(curr_offset-offset), "Erroneous Application Container including IEI and LI");
- break;
- case 4:
- /*
- * 11.3.64.4 Application Error Container for the SON Transfer Application
- */
- /* SON Transfer Cause: This field indicates the cause why the Application Error Container IE is sent.
- * The "SON Transfer Cause" field is encoded as the SON Transfer Cause IE as defined in 3GPP TS 36.413
- */
- new_tvb = tvb_new_subset_remaining(tvb, curr_offset);
- curr_offset = curr_offset + dissect_s1ap_SONtransferCause_PDU(new_tvb, gpinfo, tree);
- /* Erroneous Application Container including IEI and LI */
- proto_tree_add_text(tree, tvb, curr_offset, len-(curr_offset-offset), "Erroneous Application Container including IEI and LI");
- break;
- case 5:
- /* 11.3.64.5 Application Error Container for the UTRA SI Application*/
- /* Octet 3 UTRA SI Cause */
- proto_tree_add_item(tree, hf_bssgp_utra_si_cause, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- break;
- default :
- proto_tree_add_text(tree, tvb, curr_offset, len, "Unknown Application Error Container");
- curr_offset+=len;
- break;
- }
- return(len);
-}
-
-/*
- * 11.3.65 RIM PDU Indications
+ tvbuff_t *new_tvb = NULL;
+ guint32 curr_offset;
+
+ curr_offset = offset;
+
+ switch(g_rim_application_identity){
+ case 1:
+ /*
+ * 11.3.64.1 Application Error Container layout for the NACC application
+ */
+ /* Octet 3 NACC Cause */
+ proto_tree_add_item(tree, hf_bssgp_nacc_cause, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ curr_offset++;
+ /* Erroneous Application Container including IEI and LI */
+ proto_tree_add_text(tree, tvb, curr_offset, len-(curr_offset-offset), "Erroneous Application Container including IEI and LI");
+ break;
+ case 2:
+ /*
+ * 11.3.64.2 Application Error Container for the SI3 application
+ */
+ /* Octet 3 SI3 Cause */
+ proto_tree_add_item(tree, hf_bssgp_s13_cause, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ curr_offset++;
+ /* Erroneous Application Container including IEI and LI */
+ proto_tree_add_text(tree, tvb, curr_offset, len-(curr_offset-offset), "Erroneous Application Container including IEI and LI");
+ break;
+ case 3:
+ /*
+ * 11.3.64.3 Application Error Container for the MBMS data channel application
+ */
+ /* Octet 3 MBMS data channel Cause */
+ proto_tree_add_item(tree, hf_bssgp_mbms_data_ch_cause, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ curr_offset++;
+ /* Erroneous Application Container including IEI and LI */
+ proto_tree_add_text(tree, tvb, curr_offset, len-(curr_offset-offset), "Erroneous Application Container including IEI and LI");
+ break;
+ case 4:
+ /*
+ * 11.3.64.4 Application Error Container for the SON Transfer Application
+ */
+ /* SON Transfer Cause: This field indicates the cause why the Application Error Container IE is sent.
+ * The "SON Transfer Cause" field is encoded as the SON Transfer Cause IE as defined in 3GPP TS 36.413
+ */
+ new_tvb = tvb_new_subset_remaining(tvb, curr_offset);
+ curr_offset = curr_offset + dissect_s1ap_SONtransferCause_PDU(new_tvb, gpinfo, tree);
+ /* Erroneous Application Container including IEI and LI */
+ proto_tree_add_text(tree, tvb, curr_offset, len-(curr_offset-offset), "Erroneous Application Container including IEI and LI");
+ break;
+ case 5:
+ /* 11.3.64.5 Application Error Container for the UTRA SI Application*/
+ /* Octet 3 UTRA SI Cause */
+ proto_tree_add_item(tree, hf_bssgp_utra_si_cause, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ break;
+ default :
+ proto_tree_add_text(tree, tvb, curr_offset, len, "Unknown Application Error Container");
+ curr_offset+=len;
+ break;
+ }
+ return(len);
+}
+
+/*
+ * 11.3.65 RIM PDU Indications
*/
static const value_string bssgp_ran_inf_req_pdu_t_ext_c_vals[] = {
{ 0, "RAN-INFORMATION-REQUEST/Stop PDU" },
{ 1, "RAN-INFORMATION-REQUEST/Single Report PDU" },
{ 2, "RAN-INFORMATION-REQUEST/Multiple Report PDU" },
- { 3, "Reserved" },
- { 4, "Reserved" },
- { 5, "Reserved" },
- { 6, "Reserved" },
- { 7, "Reserved" },
- { 0, NULL },
+ { 3, "Reserved" },
+ { 4, "Reserved" },
+ { 5, "Reserved" },
+ { 6, "Reserved" },
+ { 7, "Reserved" },
+ { 0, NULL },
};
static const value_string bssgp_ran_inf_pdu_t_ext_c_vals[] = {
{ 0, "RAN-INFORMATION/Stop PDU" },
{ 1, "RAN-INFORMATION/Single Report PDU" },
{ 2, "RAN-INFORMATION/Initial Multiple Report PDU" },
- { 3, "RAN-INFORMATION/Multiple Report PDU" },
- { 4, "RAN-INFORMATION/End PDU" },
- { 5, "Reserved" },
- { 6, "Reserved" },
- { 7, "Reserved" },
- { 0, NULL },
+ { 3, "RAN-INFORMATION/Multiple Report PDU" },
+ { 4, "RAN-INFORMATION/End PDU" },
+ { 5, "Reserved" },
+ { 6, "Reserved" },
+ { 7, "Reserved" },
+ { 0, NULL },
};
static const true_false_string bssgp_rim_pdu_ind_ack_vals = {
@@ -2051,212 +2058,212 @@ static const true_false_string bssgp_rim_pdu_ind_ack_vals = {
static guint16
de_bssgp_rim_pdu_indications(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
-
- curr_offset = offset;
-
- switch(g_pdu_type){
- case BSSGP_PDU_RAN_INFORMATION_REQUEST:
- /* 11.3.65.1 RAN-INFORMATION-REQUEST RIM PDU Indications */
- /* Table 11.3.65.1: RAN-INFORMATION-REQUEST PDU Type Extension coding */
- proto_tree_add_item(tree, hf_bssgp_ran_inf_req_pdu_t_ext_c, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- /* The ACK field is not used and shall be considered as spare */
- curr_offset++;
- break;
- case BSSGP_PDU_RAN_INFORMATION:
- /* 11.3.65.2 RAN-INFORMATION RIM PDU Indications */
- /* Table 11.3.65.2: RAN-INFORMATION PDU Type Extension coding */
- proto_tree_add_item(tree, hf_bssgp_ran_inf_pdu_t_ext_c, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(tree, hf_bssgp_rim_pdu_ind_ack, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- curr_offset++;
- break;
- case BSSGP_PDU_RAN_INFORMATION_ERROR:
- /* 11.3.65.3 RAN-INFORMATION-APPLICATION-ERROR RIM PDU Indications */
- proto_tree_add_item(tree, hf_bssgp_rim_pdu_ind_ack, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- /* The PDU Type Extension field is not used and shall be considered as spare */
- curr_offset++;
- break;
- default:
- break;
- }
+ guint32 curr_offset;
+
+ curr_offset = offset;
+
+ switch(g_pdu_type){
+ case BSSGP_PDU_RAN_INFORMATION_REQUEST:
+ /* 11.3.65.1 RAN-INFORMATION-REQUEST RIM PDU Indications */
+ /* Table 11.3.65.1: RAN-INFORMATION-REQUEST PDU Type Extension coding */
+ proto_tree_add_item(tree, hf_bssgp_ran_inf_req_pdu_t_ext_c, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ /* The ACK field is not used and shall be considered as spare */
+ curr_offset++;
+ break;
+ case BSSGP_PDU_RAN_INFORMATION:
+ /* 11.3.65.2 RAN-INFORMATION RIM PDU Indications */
+ /* Table 11.3.65.2: RAN-INFORMATION PDU Type Extension coding */
+ proto_tree_add_item(tree, hf_bssgp_ran_inf_pdu_t_ext_c, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_bssgp_rim_pdu_ind_ack, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ curr_offset++;
+ break;
+ case BSSGP_PDU_RAN_INFORMATION_ERROR:
+ /* 11.3.65.3 RAN-INFORMATION-APPLICATION-ERROR RIM PDU Indications */
+ proto_tree_add_item(tree, hf_bssgp_rim_pdu_ind_ack, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ /* The PDU Type Extension field is not used and shall be considered as spare */
+ curr_offset++;
+ break;
+ default:
+ break;
+ }
- return(curr_offset-offset);
+ return(curr_offset-offset);
}
/*
- * 11.3.65.0 General
- * 11.3.65.1 RAN-INFORMATION-REQUEST RIM PDU Indications
- * 11.3.65.2 RAN-INFORMATION RIM PDU Indications
- * 11.3.65.3 RAN-INFORMATION-APPLICATION-ERROR RIM PDU Indications
- * 11.3.66 (void)
+ * 11.3.65.0 General
+ * 11.3.65.1 RAN-INFORMATION-REQUEST RIM PDU Indications
+ * 11.3.65.2 RAN-INFORMATION RIM PDU Indications
+ * 11.3.65.3 RAN-INFORMATION-APPLICATION-ERROR RIM PDU Indications
+ * 11.3.66 (void)
*/
/*
- * 11.3.67 RIM Protocol Version Number
+ * 11.3.67 RIM Protocol Version Number
*/
static const value_string bssgp_rim_proto_ver_no_vals[] = {
{ 0, "Reserved" },
{ 1, "Version 1" },
- { 0, NULL },
+ { 0, NULL },
};
static guint16
de_bssgp_rim_proto_ver_no(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- /* Octet 3 RIM Protocol Version Number */
- proto_tree_add_item(tree, hf_bssgp_rim_proto_ver_no, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- curr_offset++;
+ /* Octet 3 RIM Protocol Version Number */
+ proto_tree_add_item(tree, hf_bssgp_rim_proto_ver_no, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ curr_offset++;
- return(curr_offset-offset);
+ return(curr_offset-offset);
}
/*
- * 11.3.68 PFC Flow Control parameters
+ * 11.3.68 PFC Flow Control parameters
*/
static guint16
de_bssgp_pfc_flow_ctrl(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- proto_tree *pfc_tree;
- proto_item *pi, *ti2;
-
- guint32 curr_offset;
- guint8 num_pfc, i, pfc_len;
- gboolean b_pfc_included;
-
- curr_offset = offset;
-
- num_pfc = tvb_get_guint8(tvb, curr_offset);
- pi = proto_tree_add_text(tree, tvb, curr_offset, 1,
- "Number of PFCs: ");
-
- if (num_pfc < 12) {
- proto_item_append_text(pi, "%u", num_pfc);
- }else {
- proto_item_append_text(pi, "Reserved");
- return (curr_offset-offset);
- }
- curr_offset++;
- if (num_pfc == 0)
- return (curr_offset-offset);
-
- pfc_len = (len - 1) / num_pfc;
- b_pfc_included = (pfc_len == 6);
-
- for (i = 0; i < num_pfc; i++) {
- ti2 = proto_tree_add_text(tree, tvb, curr_offset, pfc_len,
- "PFC (%u)", i + 1);
- pfc_tree = proto_item_add_subtree(ti2, ett_bssgp_pfc_flow_control_parameters_pfc);
-
- /* PFI: Packet Flow Identifier.
- * Coded as the value part of the Packet Flow Identifier information element in
- * 3GPP TS 24.008, not including 3GPP TS 24.008 IEI
- */
- de_sm_pflow_id(tvb, pfc_tree, pinfo, curr_offset, 1, NULL, 0);
- curr_offset++;
-
- /* Bmax_PFC: Bucket size of the PFC. Coded like the value part of BVC Bucket Size, see sub-clause 11.3.5. */
- proto_tree_add_item(tree, hf_bssgp_bmax_pfc, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
- curr_offset += 2;
-
- /* R_PFC: Bucket Leak Rate of the PFC. Coded as the value part of Bucket Leak Rate (R), see sub-clause 11.3.4. */
- proto_tree_add_item(tree, hf_bssgp_r_pfc, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
- curr_offset += 2;
-
- if (b_pfc_included) {
- /* B_PFC: Bucket Full Ratio of the PFC. This field is only present if the Current Bucket Level (CBL) feature is
- * negotiated. Otherwise, the flow control parameters for the next PFC, if any, are provided instead. This field if coded as
- * the value part of the Bucket Full Ratio, see sub-clause 11.3.46.
- */
- proto_tree_add_item(tree, hf_bssgp_b_pfc, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- curr_offset++;
- }
- }
- return(curr_offset-offset);
-}
-/*
- * 11.3.69 Global CN-Id
+ proto_tree *pfc_tree;
+ proto_item *pi, *ti2;
+
+ guint32 curr_offset;
+ guint8 num_pfc, i, pfc_len;
+ gboolean b_pfc_included;
+
+ curr_offset = offset;
+
+ num_pfc = tvb_get_guint8(tvb, curr_offset);
+ pi = proto_tree_add_text(tree, tvb, curr_offset, 1,
+ "Number of PFCs: ");
+
+ if (num_pfc < 12) {
+ proto_item_append_text(pi, "%u", num_pfc);
+ }else {
+ proto_item_append_text(pi, "Reserved");
+ return (curr_offset-offset);
+ }
+ curr_offset++;
+ if (num_pfc == 0)
+ return (curr_offset-offset);
+
+ pfc_len = (len - 1) / num_pfc;
+ b_pfc_included = (pfc_len == 6);
+
+ for (i = 0; i < num_pfc; i++) {
+ ti2 = proto_tree_add_text(tree, tvb, curr_offset, pfc_len,
+ "PFC (%u)", i + 1);
+ pfc_tree = proto_item_add_subtree(ti2, ett_bssgp_pfc_flow_control_parameters_pfc);
+
+ /* PFI: Packet Flow Identifier.
+ * Coded as the value part of the Packet Flow Identifier information element in
+ * 3GPP TS 24.008, not including 3GPP TS 24.008 IEI
+ */
+ de_sm_pflow_id(tvb, pfc_tree, pinfo, curr_offset, 1, NULL, 0);
+ curr_offset++;
+
+ /* Bmax_PFC: Bucket size of the PFC. Coded like the value part of BVC Bucket Size, see sub-clause 11.3.5. */
+ proto_tree_add_item(tree, hf_bssgp_bmax_pfc, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
+ curr_offset += 2;
+
+ /* R_PFC: Bucket Leak Rate of the PFC. Coded as the value part of Bucket Leak Rate (R), see sub-clause 11.3.4. */
+ proto_tree_add_item(tree, hf_bssgp_r_pfc, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
+ curr_offset += 2;
+
+ if (b_pfc_included) {
+ /* B_PFC: Bucket Full Ratio of the PFC. This field is only present if the Current Bucket Level (CBL) feature is
+ * negotiated. Otherwise, the flow control parameters for the next PFC, if any, are provided instead. This field if coded as
+ * the value part of the Bucket Full Ratio, see sub-clause 11.3.46.
+ */
+ proto_tree_add_item(tree, hf_bssgp_b_pfc, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ curr_offset++;
+ }
+ }
+ return(curr_offset-offset);
+}
+/*
+ * 11.3.69 Global CN-Id
*/
/* Coded as octets 3 to 7 of the Global CN-Id IE, defined in
* 3GPP TS 29.018
*/
/*
- * 11.3.70 RIM Routing Information
+ * 11.3.70 RIM Routing Information
*/
static const value_string bssgp_ra_discriminator_vals[] = {
- { 0, "A Cell Identifier is used to identify a GERAN cell" },
- { 1, "A Global RNC-ID is used to identify a UTRAN RNC" },
- { 2, "An eNB identifier is used to identify an E-UTRAN eNodeB or HeNB" },
- { 0, NULL },
+ { 0, "A Cell Identifier is used to identify a GERAN cell" },
+ { 1, "A Global RNC-ID is used to identify a UTRAN RNC" },
+ { 2, "An eNB identifier is used to identify an E-UTRAN eNodeB or HeNB" },
+ { 0, NULL },
};
static guint16
de_bssgp_rim_routing_inf(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint8 oct;
- guint16 rnc_id;
- tvbuff_t *new_tvb = NULL;
- guint32 curr_offset;
-
- curr_offset = offset;
-
- /* This information element uniquely identifies either a cell within a
- * GERAN BSS, a UTRAN RNC or an E-UTRAN eNodeB.
- */
-
- /* RIM Routing Address discriminator */
- oct = tvb_get_guint8(tvb,curr_offset);
- proto_tree_add_item(tree, hf_bssgp_ra_discriminator, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- curr_offset++;
- switch(oct){
- case 0:
- /* RIM Routing Address discriminator = 0000:
- * The RIM Routing Address field contains a Cell Identifier
- * and is coded as the value part (octet 3 to octet 10) of the
- * Cell Identifier information element specified in sub-clause 11.3.9.
- */
- curr_offset = curr_offset + de_bssgp_cell_id(tvb, tree, pinfo, curr_offset, len, add_string, string_len);
- break;
- case 1:
- /* RIM Routing Address discriminator = 0001:
- * The RIM Routing Address field contains an RNC identifier and is coded as follows:
- * Octets 4 to 9 contain the value part (starting with octet 2) of the Routing Area Identification IE
- * defined in 3GPP TS 24.008, not including 3GPP TS 24.008 IEI
- */
- curr_offset = curr_offset + de_gmm_rai(tvb, tree, pinfo, curr_offset , 6, add_string, string_len);
- /* Octet 10 - 11 RNC-ID (or Extended RNC-ID) */
- rnc_id = tvb_get_ntohs(tvb, curr_offset);
- proto_tree_add_item(tree, hf_bssgp_rnc_id, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
- curr_offset+=2;
-
- if (add_string)
- g_snprintf(add_string, string_len, " %s, RNC-ID %u", add_string, rnc_id);
- break;
- case 2:
- /* RIM Routing Address discriminator = 0010:
- * The RIM Routing Address field contains an eNB identifier and is coded as follows:
- * Octets 4 to 8 contain the value part (starting with octet 2) of the
- * Tracking Area Identity IE defined in 3GPP TS 24.301 [37], not including 3GPP TS 24.301 IEI
- */
- curr_offset = curr_offset+ de_emm_trac_area_id(tvb, tree, pinfo, curr_offset, 5, add_string, string_len);
- /* Octets 9-n contain the Global eNB ID (see 3GPP TS 36.413 [36]) of the eNodeB. */
- new_tvb = tvb_new_subset_remaining(tvb, curr_offset);
- dissect_s1ap_Global_ENB_ID_PDU(new_tvb, gpinfo, tree);
- break;
- default:
- proto_tree_add_text(tree, tvb, curr_offset, 3, "Unknown RIM Routing Address discriminator");
- return len;
- }
-
-
- return len;
-}
-
-/*
- * 11.3.71 MBMS Session Identity
+ guint8 oct;
+ guint16 rnc_id;
+ tvbuff_t *new_tvb = NULL;
+ guint32 curr_offset;
+
+ curr_offset = offset;
+
+ /* This information element uniquely identifies either a cell within a
+ * GERAN BSS, a UTRAN RNC or an E-UTRAN eNodeB.
+ */
+
+ /* RIM Routing Address discriminator */
+ oct = tvb_get_guint8(tvb,curr_offset);
+ proto_tree_add_item(tree, hf_bssgp_ra_discriminator, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ curr_offset++;
+ switch(oct){
+ case 0:
+ /* RIM Routing Address discriminator = 0000:
+ * The RIM Routing Address field contains a Cell Identifier
+ * and is coded as the value part (octet 3 to octet 10) of the
+ * Cell Identifier information element specified in sub-clause 11.3.9.
+ */
+ curr_offset = curr_offset + de_bssgp_cell_id(tvb, tree, pinfo, curr_offset, len, add_string, string_len);
+ break;
+ case 1:
+ /* RIM Routing Address discriminator = 0001:
+ * The RIM Routing Address field contains an RNC identifier and is coded as follows:
+ * Octets 4 to 9 contain the value part (starting with octet 2) of the Routing Area Identification IE
+ * defined in 3GPP TS 24.008, not including 3GPP TS 24.008 IEI
+ */
+ curr_offset = curr_offset + de_gmm_rai(tvb, tree, pinfo, curr_offset , 6, add_string, string_len);
+ /* Octet 10 - 11 RNC-ID (or Extended RNC-ID) */
+ rnc_id = tvb_get_ntohs(tvb, curr_offset);
+ proto_tree_add_item(tree, hf_bssgp_rnc_id, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
+ curr_offset+=2;
+
+ if (add_string)
+ g_snprintf(add_string, string_len, " %s, RNC-ID %u", add_string, rnc_id);
+ break;
+ case 2:
+ /* RIM Routing Address discriminator = 0010:
+ * The RIM Routing Address field contains an eNB identifier and is coded as follows:
+ * Octets 4 to 8 contain the value part (starting with octet 2) of the
+ * Tracking Area Identity IE defined in 3GPP TS 24.301 [37], not including 3GPP TS 24.301 IEI
+ */
+ curr_offset = curr_offset+ de_emm_trac_area_id(tvb, tree, pinfo, curr_offset, 5, add_string, string_len);
+ /* Octets 9-n contain the Global eNB ID (see 3GPP TS 36.413 [36]) of the eNodeB. */
+ new_tvb = tvb_new_subset_remaining(tvb, curr_offset);
+ dissect_s1ap_Global_ENB_ID_PDU(new_tvb, gpinfo, tree);
+ break;
+ default:
+ proto_tree_add_text(tree, tvb, curr_offset, 3, "Unknown RIM Routing Address discriminator");
+ return len;
+ }
+
+
+ return len;
+}
+
+/*
+ * 11.3.71 MBMS Session Identity
*/
/* MBMS-Session-Identity AVP encoded as in 3GPP TS 29.061 [31],
* excluding AVP Header fields as defined in IETF RFC 3588 [33].
@@ -2270,35 +2277,35 @@ de_bssgp_rim_routing_inf(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_
static guint16
de_bssgp_mbms_session_id(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- /* MBMS Session Identity */
- proto_tree_add_item(tree, hf_bssgp_mbms_session_id, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- curr_offset++;
+ /* MBMS Session Identity */
+ proto_tree_add_item(tree, hf_bssgp_mbms_session_id, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ curr_offset++;
- return(curr_offset-offset);
+ return(curr_offset-offset);
}
/*
- * 11.3.72 MBMS Session Duration
+ * 11.3.72 MBMS Session Duration
*/
static guint16
de_bssgp_mbms_session_dur(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- tvbuff_t *new_tvb;
- guint32 curr_offset;
+ tvbuff_t *new_tvb;
+ guint32 curr_offset;
- curr_offset = 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);
+ /* 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);
+ return(curr_offset-offset);
}
/*
- * 11.3.73 MBMS Service Area Identity List
+ * 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]).
@@ -2307,114 +2314,114 @@ de_bssgp_mbms_session_dur(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U
static guint16
de_bssgp_mbms_sai_list(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
{
- tvbuff_t *new_tvb;
- guint32 curr_offset;
+ tvbuff_t *new_tvb;
+ guint32 curr_offset;
- curr_offset = 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);
+ /* 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);
+ return(curr_offset-offset);
}
/*
- * 11.3.74 MBMS Response
+ * 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 },
+ { 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, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
- curr_offset = 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++;
+ /* 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);
+ return(curr_offset-offset);
}
/*
- * 11.3.75 MBMS Routing Area List
+ * 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 },
+ { 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, packet_info *pinfo _U_, 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;
+ proto_item *ti;
+ proto_tree *rai_tree;
+ guint32 curr_offset;
+ guint8 num_ra_ids;
+ int i;
- curr_offset = offset;
+ 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 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);
+ /* 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, rai_tree, pinfo, curr_offset , 6, NULL, 0);
+ /* 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, rai_tree, pinfo, curr_offset , 6, NULL, 0);
- curr_offset+=8;
- }
+ curr_offset+=8;
+ }
- return(curr_offset-offset);
+ return(curr_offset-offset);
}
/*
- * 11.3.76 MBMS Session Information
+ * 11.3.76 MBMS Session Information
*/
static const true_false_string tfs_bssgp_bc_mc = {
@@ -2424,278 +2431,278 @@ static const true_false_string tfs_bssgp_bc_mc = {
static guint16
de_bssgp_mbms_session_inf(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
- curr_offset = 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++;
+ /* 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);
+ return(curr_offset-offset);
}
/*
- * 11.3.77 TMGI (Temporary Mobile Group Identity)
+ * 11.3.77 TMGI (Temporary Mobile Group Identity)
*/
/* Rest of element coded as in 3GPP TS 24.008, not including 3GPP
* TS 24.008 IEI and 3GPP TS 24.008 length indicator.
*/
/*
- * 11.3.78 MBMS Stop Cause
+ * 11.3.78 MBMS Stop Cause
*/
static const value_string bssgp_mbms_stop_cause_vals[] = {
- { 0, "MBMS Session terminated by upstream node" },
- { 1, "MBMS Session terminated by SGSN" },
-
- { 2, "Unspecified in this version of the protocol" },
- { 3, "Unspecified in this version of the protocol" },
- { 4, "Unspecified in this version of the protocol" },
- { 5, "Unspecified in this version of the protocol" },
- { 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 },
+ { 0, "MBMS Session terminated by upstream node" },
+ { 1, "MBMS Session terminated by SGSN" },
+
+ { 2, "Unspecified in this version of the protocol" },
+ { 3, "Unspecified in this version of the protocol" },
+ { 4, "Unspecified in this version of the protocol" },
+ { 5, "Unspecified in this version of the protocol" },
+ { 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_stop_cause_vals_ext = VALUE_STRING_EXT_INIT(bssgp_mbms_stop_cause_vals);
static guint16
de_bssgp_mbms_stop_cause(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- /* MBMS Session Identity */
- proto_tree_add_item(tree, hf_bssgp_mbms_stop_cause, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- curr_offset++;
+ /* MBMS Session Identity */
+ proto_tree_add_item(tree, hf_bssgp_mbms_stop_cause, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ curr_offset++;
- return(curr_offset-offset);
+ return(curr_offset-offset);
}
/*
- * 11.3.79 Source BSS to Target BSS Transparent Container
+ * 11.3.79 Source BSS to Target BSS Transparent Container
*/
/* The actual function moved to after defining the enums */
/*
- * 11.3.80 Target BSS to Source BSS Transparent Container
+ * 11.3.80 Target BSS to Source BSS Transparent Container
*/
/*
- * 11.3.81 NAS container for PS Handover
+ * 11.3.81 NAS container for PS Handover
*/
/*
- * 11.3.82 PFCs to be set-up list
+ * 11.3.82 PFCs to be set-up list
*/
static guint16
de_bssgp_pfcs_to_be_set_up_list(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- proto_tree *pfc_tree, *pft_tree, *abqp_tree, *arp_tree, *t10_tree;
- proto_item *pi, *ti2;
-
- guint32 curr_offset;
- guint8 num_pfc, i, pfc_len;
-
- curr_offset = offset;
-
- num_pfc = tvb_get_guint8(tvb, curr_offset);
- pi = proto_tree_add_text(tree, tvb, curr_offset, 1,
- "Number of PFCs: ");
-
- if (num_pfc < 12) {
- proto_item_append_text(pi, "%u", num_pfc);
- }else {
- proto_item_append_text(pi, "Reserved");
- return (len);
- }
- curr_offset++;
- if (num_pfc == 0)
- return (curr_offset-offset);
-
- pfc_len = (len - 1) / num_pfc;
-
- for (i = 0; i < num_pfc; i++) {
- ti2 = proto_tree_add_text(tree, tvb, curr_offset, pfc_len,
- "PFC (%u)", i + 1);
- pfc_tree = proto_item_add_subtree(ti2, ett_bssgp_pfcs_to_be_set_up_list);
-
- de_sm_pflow_id(tvb, pfc_tree, pinfo, curr_offset, 1, NULL, 0);
- curr_offset++;
-
- /* PFT: Packet Flow Timer. Coded as the GPRS Timer information element,
- * see sub-clause 11.3.44.
- */
- proto_tree_add_text(pfc_tree, tvb, curr_offset, 3, "Packet Flow Timer(PFT)");
- pft_tree = proto_item_add_subtree(ti2, ett_bssgp_pfcs_to_be_set_up_list_pft);
- proto_tree_add_item(pft_tree, hf_bssgp_unit_val, tvb, curr_offset, 3, ENC_BIG_ENDIAN);
- proto_tree_add_item(pft_tree, hf_bssgp_gprs_timer, tvb, curr_offset, 3, ENC_BIG_ENDIAN);
- curr_offset += 3;
-
- /* ABQP: Aggregate BSS QoS Profile.
- * Coded as the Aggregate BSS QoS Profile information element, see sub-clause 11.3.43.
- */
- proto_tree_add_text(pfc_tree, tvb, curr_offset, 3, "Aggregate BSS QoS Profile(ABQP)");
- abqp_tree = proto_item_add_subtree(ti2, ett_bssgp_pfcs_to_be_set_up_list_abqp);
- /* Unsure about length 16 */
- curr_offset = curr_offset + de_sm_qos(tvb, abqp_tree, pinfo, curr_offset, 16, NULL, 0);
-
- /* Allocation/Retention Priority: Allocation Retention Priority.
- * Coded as the Priority information element, see subclause 11.3.27.
- * This information element is optionally included.
- */
- if(pfc_len>17){
- proto_tree_add_text(pfc_tree, tvb, curr_offset, 3, "Allocation/Retention Priority");
- arp_tree = proto_item_add_subtree(ti2, ett_bssgp_pfcs_to_be_set_up_list_arp);
- curr_offset = curr_offset + be_prio(tvb, arp_tree, pinfo, curr_offset, 1, NULL, 0);
- }
- /* T10: T10.
- * Coded as the GPRS Timer information element, see sub-clause 11.3.44.
- * This information element shall be present for a PFC if the Allocation/Retention Priority
- * is present and if queuing is allowed for the PFC.
- */
- if(pfc_len>18){
- proto_tree_add_text(pfc_tree, tvb, curr_offset, 3, "T10");
- t10_tree = proto_item_add_subtree(ti2, ett_bssgp_pfcs_to_be_set_up_list_t10);
- proto_tree_add_item(t10_tree, hf_bssgp_unit_val, tvb, curr_offset, 3, ENC_BIG_ENDIAN);
- proto_tree_add_item(t10_tree, hf_bssgp_gprs_timer, tvb, curr_offset, 3, ENC_BIG_ENDIAN);
- curr_offset += 3;
- }
- }
- return(curr_offset-offset);
-}
-/*
- * 11.3.83 List of set-up PFCs
+ proto_tree *pfc_tree, *pft_tree, *abqp_tree, *arp_tree, *t10_tree;
+ proto_item *pi, *ti2;
+
+ guint32 curr_offset;
+ guint8 num_pfc, i, pfc_len;
+
+ curr_offset = offset;
+
+ num_pfc = tvb_get_guint8(tvb, curr_offset);
+ pi = proto_tree_add_text(tree, tvb, curr_offset, 1,
+ "Number of PFCs: ");
+
+ if (num_pfc < 12) {
+ proto_item_append_text(pi, "%u", num_pfc);
+ }else {
+ proto_item_append_text(pi, "Reserved");
+ return (len);
+ }
+ curr_offset++;
+ if (num_pfc == 0)
+ return (curr_offset-offset);
+
+ pfc_len = (len - 1) / num_pfc;
+
+ for (i = 0; i < num_pfc; i++) {
+ ti2 = proto_tree_add_text(tree, tvb, curr_offset, pfc_len,
+ "PFC (%u)", i + 1);
+ pfc_tree = proto_item_add_subtree(ti2, ett_bssgp_pfcs_to_be_set_up_list);
+
+ de_sm_pflow_id(tvb, pfc_tree, pinfo, curr_offset, 1, NULL, 0);
+ curr_offset++;
+
+ /* PFT: Packet Flow Timer. Coded as the GPRS Timer information element,
+ * see sub-clause 11.3.44.
+ */
+ proto_tree_add_text(pfc_tree, tvb, curr_offset, 3, "Packet Flow Timer(PFT)");
+ pft_tree = proto_item_add_subtree(ti2, ett_bssgp_pfcs_to_be_set_up_list_pft);
+ proto_tree_add_item(pft_tree, hf_bssgp_unit_val, tvb, curr_offset, 3, ENC_BIG_ENDIAN);
+ proto_tree_add_item(pft_tree, hf_bssgp_gprs_timer, tvb, curr_offset, 3, ENC_BIG_ENDIAN);
+ curr_offset += 3;
+
+ /* ABQP: Aggregate BSS QoS Profile.
+ * Coded as the Aggregate BSS QoS Profile information element, see sub-clause 11.3.43.
+ */
+ proto_tree_add_text(pfc_tree, tvb, curr_offset, 3, "Aggregate BSS QoS Profile(ABQP)");
+ abqp_tree = proto_item_add_subtree(ti2, ett_bssgp_pfcs_to_be_set_up_list_abqp);
+ /* Unsure about length 16 */
+ curr_offset = curr_offset + de_sm_qos(tvb, abqp_tree, pinfo, curr_offset, 16, NULL, 0);
+
+ /* Allocation/Retention Priority: Allocation Retention Priority.
+ * Coded as the Priority information element, see subclause 11.3.27.
+ * This information element is optionally included.
+ */
+ if(pfc_len>17){
+ proto_tree_add_text(pfc_tree, tvb, curr_offset, 3, "Allocation/Retention Priority");
+ arp_tree = proto_item_add_subtree(ti2, ett_bssgp_pfcs_to_be_set_up_list_arp);
+ curr_offset = curr_offset + be_prio(tvb, arp_tree, pinfo, curr_offset, 1, NULL, 0);
+ }
+ /* T10: T10.
+ * Coded as the GPRS Timer information element, see sub-clause 11.3.44.
+ * This information element shall be present for a PFC if the Allocation/Retention Priority
+ * is present and if queuing is allowed for the PFC.
+ */
+ if(pfc_len>18){
+ proto_tree_add_text(pfc_tree, tvb, curr_offset, 3, "T10");
+ t10_tree = proto_item_add_subtree(ti2, ett_bssgp_pfcs_to_be_set_up_list_t10);
+ proto_tree_add_item(t10_tree, hf_bssgp_unit_val, tvb, curr_offset, 3, ENC_BIG_ENDIAN);
+ proto_tree_add_item(t10_tree, hf_bssgp_gprs_timer, tvb, curr_offset, 3, ENC_BIG_ENDIAN);
+ curr_offset += 3;
+ }
+ }
+ return(curr_offset-offset);
+}
+/*
+ * 11.3.83 List of set-up PFCs
*/
static guint16
de_bssgp_list_of_setup_pfcs(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- proto_tree *pfc_tree;
- proto_item *pi, *ti2;
+ proto_tree *pfc_tree;
+ proto_item *pi, *ti2;
- guint32 curr_offset;
- guint8 num_pfc, i;
+ guint32 curr_offset;
+ guint8 num_pfc, i;
- curr_offset = offset;
+ curr_offset = offset;
- num_pfc = tvb_get_guint8(tvb, curr_offset);
- pi = proto_tree_add_text(tree, tvb, curr_offset, 1,
- "Number of PFCs: ");
+ num_pfc = tvb_get_guint8(tvb, curr_offset);
+ pi = proto_tree_add_text(tree, tvb, curr_offset, 1,
+ "Number of PFCs: ");
- if (num_pfc < 12) {
- proto_item_append_text(pi, "%u", num_pfc);
- }else {
- proto_item_append_text(pi, "Reserved");
- return (curr_offset-offset);
- }
- curr_offset++;
- if (num_pfc == 0)
- return (curr_offset-offset);
+ if (num_pfc < 12) {
+ proto_item_append_text(pi, "%u", num_pfc);
+ }else {
+ proto_item_append_text(pi, "Reserved");
+ return (curr_offset-offset);
+ }
+ curr_offset++;
+ if (num_pfc == 0)
+ return (curr_offset-offset);
- for (i = 0; i < num_pfc; i++) {
- ti2 = proto_tree_add_text(tree, tvb, curr_offset, 1,
- "PFC (%u)", i + 1);
- pfc_tree = proto_item_add_subtree(ti2, ett_bssgp_list_of_setup_pfcs);
+ for (i = 0; i < num_pfc; i++) {
+ ti2 = proto_tree_add_text(tree, tvb, curr_offset, 1,
+ "PFC (%u)", i + 1);
+ pfc_tree = proto_item_add_subtree(ti2, ett_bssgp_list_of_setup_pfcs);
- de_sm_pflow_id(tvb, pfc_tree, pinfo, curr_offset, 1, NULL, 0);
- curr_offset++;
+ de_sm_pflow_id(tvb, pfc_tree, pinfo, curr_offset, 1, NULL, 0);
+ curr_offset++;
- }
+ }
- return(curr_offset-offset);
+ return(curr_offset-offset);
}
/*
- * 11.3.84 Extended Feature Bitmap
+ * 11.3.84 Extended Feature Bitmap
*/
static guint16
de_bssgp_ext_feature_bitmap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- /* Gigabit Interface */
- proto_tree_add_item(tree, hf_bssgp_gb_if, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- /* PS Handover */
- proto_tree_add_item(tree, hf_bssgp_ps_ho, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- curr_offset++;
+ /* Gigabit Interface */
+ proto_tree_add_item(tree, hf_bssgp_gb_if, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ /* PS Handover */
+ proto_tree_add_item(tree, hf_bssgp_ps_ho, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ curr_offset++;
- return(curr_offset-offset);
+ return(curr_offset-offset);
}
/*
- * 11.3.85 Source to Target Transparent Container
+ * 11.3.85 Source to Target Transparent Container
*/
static guint16
de_bssgp_src_to_trg_transp_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- /* Octets 3-? Source to Target Transparent Container content coded as
- * specified in 3GPP TS 25.413 or 3GPP TS 36.413.
- * In inter-RAT handovers ... RANAP specification 3GPP TS 25.413, excluding RANAP tag.
- * In inter-RAT handover to E-UTRAN ... encoding is defined in 3GPP TS 36.413
- */
- proto_tree_add_item(tree, hf_bssgp_src_to_trg_transp_cont, tvb, curr_offset, len, ENC_NA);
+ /* Octets 3-? Source to Target Transparent Container content coded as
+ * specified in 3GPP TS 25.413 or 3GPP TS 36.413.
+ * In inter-RAT handovers ... RANAP specification 3GPP TS 25.413, excluding RANAP tag.
+ * In inter-RAT handover to E-UTRAN ... encoding is defined in 3GPP TS 36.413
+ */
+ proto_tree_add_item(tree, hf_bssgp_src_to_trg_transp_cont, tvb, curr_offset, len, ENC_NA);
- return(len);
+ return(len);
}
/*
- * 11.3.86 Target to Source Transparent Container
+ * 11.3.86 Target to Source Transparent Container
*/
static guint16
de_bssgp_trg_to_src_transp_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- /* Rest of element coded as either a complete Handover to UTRAN
- * Command radio interface message (as defined in 3GPP TS
- * 25.331) or a complete Radio Bearer Reconfiguration radio
- * interface message (as defined in 3GPP TS 44.118) or a complete
- * DL-DCCH-Message including a complete
- * RRCConnectionReconfiguration radio interface message (as
- * defined in 3GPP TS 36.331)
- */
- proto_tree_add_item(tree, hf_bssgp_trg_to_src_transp_cont, tvb, curr_offset, len, ENC_NA);
+ /* Rest of element coded as either a complete Handover to UTRAN
+ * Command radio interface message (as defined in 3GPP TS
+ * 25.331) or a complete Radio Bearer Reconfiguration radio
+ * interface message (as defined in 3GPP TS 44.118) or a complete
+ * DL-DCCH-Message including a complete
+ * RRCConnectionReconfiguration radio interface message (as
+ * defined in 3GPP TS 36.331)
+ */
+ proto_tree_add_item(tree, hf_bssgp_trg_to_src_transp_cont, tvb, curr_offset, len, ENC_NA);
- return(len);
+ return(len);
}
/*
- * 11.3.87 RNC Identifier
+ * 11.3.87 RNC Identifier
*/
static guint16
de_bssgp_rnc_identifier(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
- guint16 rnc_id;
+ guint32 curr_offset;
+ guint16 rnc_id;
- curr_offset = offset;
- /* Octets 3-8 Octets 3 to 8 contain the value part (starting with octet 2) of the
- * Routing Area Identification IE defined in 3GPP TS 24.008, not including 3GPP TS 24.008 IEI
- */
- curr_offset = curr_offset + de_gmm_rai(tvb, tree, pinfo, curr_offset, 6, add_string, string_len);
- /* Octet 9 - 10 RNC ID (or Extended RNC-ID or Corresponding RNC-ID) */
- rnc_id = tvb_get_ntohs(tvb, curr_offset);
- proto_tree_add_item(tree, hf_bssgp_rnc_id, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
- curr_offset+=2;
+ curr_offset = offset;
+ /* Octets 3-8 Octets 3 to 8 contain the value part (starting with octet 2) of the
+ * Routing Area Identification IE defined in 3GPP TS 24.008, not including 3GPP TS 24.008 IEI
+ */
+ curr_offset = curr_offset + de_gmm_rai(tvb, tree, pinfo, curr_offset, 6, add_string, string_len);
+ /* Octet 9 - 10 RNC ID (or Extended RNC-ID or Corresponding RNC-ID) */
+ rnc_id = tvb_get_ntohs(tvb, curr_offset);
+ proto_tree_add_item(tree, hf_bssgp_rnc_id, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
+ curr_offset+=2;
- if (add_string)
- g_snprintf(add_string, string_len, " %s, RNC-ID %u", add_string, rnc_id);
+ if (add_string)
+ g_snprintf(add_string, string_len, " %s, RNC-ID %u", add_string, rnc_id);
- return(curr_offset-offset);
+ return(curr_offset-offset);
}
/*
- * 11.3.88 Page Mode
+ * 11.3.88 Page Mode
*/
/* PAGE_MODE (2 bit field) */
@@ -2703,1078 +2710,1078 @@ static const value_string bssgp_page_mode_vals[] = {
{ 0, "Normal Paging" },
{ 1, "Extended Paging" },
{ 2, "Paging Reorganization" },
- { 3, "Same as before" },
- { 0, NULL },
- };
+ { 3, "Same as before" },
+ { 0, NULL },
+};
static guint16
de_bssgp_page_mode(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- proto_tree_add_item(tree, hf_bssgp_page_mode, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- curr_offset++;
+ proto_tree_add_item(tree, hf_bssgp_page_mode, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ curr_offset++;
- return(curr_offset-offset);
+ return(curr_offset-offset);
}
/*
- * 11.3.89 Container ID
+ * 11.3.89 Container ID
*/
static guint16
de_bssgp_container_id(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- proto_tree_add_item(tree, hf_bssgp_container_id, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- curr_offset++;
+ proto_tree_add_item(tree, hf_bssgp_container_id, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ curr_offset++;
- return(curr_offset-offset);
+ return(curr_offset-offset);
}
/*
- * 11.3.90 Global TFI
+ * 11.3.90 Global TFI
*/
static const value_string bssgp_global_tfi_vals[] = {
{ 0, "UPLINK_TFI" },
{ 1, "DOWNLINK_TFI" },
- { 0, NULL },
- };
+ { 0, NULL },
+};
static guint16
de_bssgp_global_tfi(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
- guint32 bit_offset;
- guint8 gtfi;
-
- curr_offset = offset;
-
- /* Bits 6 - 1 Global TFI coded as specified in 3GPP TS 44.060 */
- bit_offset = (curr_offset << 3) +3;
- gtfi = tvb_get_bits8(tvb,bit_offset,1);
- proto_tree_add_bits_item(tree, hf_bssgp_global_tfi, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- bit_offset++;
- /* < Global TFI IE > ::=
- * { 0 < UPLINK_TFI : bit (5) >
- * | 1 < DOWNLINK_TFI : bit (5) > } ;
- */
- if(gtfi == 0){
- /* UPLINK_TFI (5 bit field)
- * This field identifies an uplink TBF. This field is coded the same as the
- * TFI field defined in sub-clause 12.15.
- * This field is encoded as a binary number. Range 0 to 31
- */
- proto_tree_add_bits_item(tree, hf_bssgp_ul_tfi, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- }else{
- /* DOWNLINK_TFI (5 bit field)
- * This field identifies an uplink TBF. This field is coded the same as the
- * TFI field defined in sub-clause 12.15.
- * This field is encoded as a binary number. Range 0 to 31
- */
- proto_tree_add_bits_item(tree, hf_bssgp_dl_tfi, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
- }
- curr_offset++;
-
- return(curr_offset-offset);
-}
-/*
- * 11.3.91 IMEI
+ guint32 curr_offset;
+ guint32 bit_offset;
+ guint8 gtfi;
+
+ curr_offset = offset;
+
+ /* Bits 6 - 1 Global TFI coded as specified in 3GPP TS 44.060 */
+ bit_offset = (curr_offset << 3) +3;
+ gtfi = tvb_get_bits8(tvb,bit_offset,1);
+ proto_tree_add_bits_item(tree, hf_bssgp_global_tfi, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset++;
+ /* < Global TFI IE > ::=
+ * { 0 < UPLINK_TFI : bit (5) >
+ * | 1 < DOWNLINK_TFI : bit (5) > } ;
+ */
+ if(gtfi == 0){
+ /* UPLINK_TFI (5 bit field)
+ * This field identifies an uplink TBF. This field is coded the same as the
+ * TFI field defined in sub-clause 12.15.
+ * This field is encoded as a binary number. Range 0 to 31
+ */
+ proto_tree_add_bits_item(tree, hf_bssgp_ul_tfi, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ }else{
+ /* DOWNLINK_TFI (5 bit field)
+ * This field identifies an uplink TBF. This field is coded the same as the
+ * TFI field defined in sub-clause 12.15.
+ * This field is encoded as a binary number. Range 0 to 31
+ */
+ proto_tree_add_bits_item(tree, hf_bssgp_dl_tfi, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ }
+ curr_offset++;
+
+ return(curr_offset-offset);
+}
+/*
+ * 11.3.91 IMEI
*/
/* Octets 3-10 contain the IMEI coded as the value part of the Mobile
* Identity IE defined in 3GPP TS 24.008
* (NOTE 1)
*/
/*
- * 11.3.92 Time to MBMS Data Transfer
+ * 11.3.92 Time to MBMS Data Transfer
*/
static guint16
de_bssgp_time_to_MBMS_data_tran(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
- guint8 value;
+ guint32 curr_offset;
+ guint8 value;
- curr_offset = offset;
+ 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);
+ /* 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);
+ return(len);
}
/*
- * 11.3.93 MBMS Session Repetition Number
+ * 11.3.93 MBMS Session Repetition Number
*/
static guint16
de_bssgp_mbms_session_rep_no(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- proto_tree_add_item(tree, hf_bssgp_mbms_session_rep_no, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- curr_offset++;
+ proto_tree_add_item(tree, hf_bssgp_mbms_session_rep_no, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ curr_offset++;
- return(len);
+ return(len);
}
/*
- * 11.3.94 Inter RAT Handover Info
+ * 11.3.94 Inter RAT Handover Info
*/
static guint16
de_bssgp_inter_rat_ho_info(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- tvbuff_t *new_tvb;
- guint32 curr_offset;
+ tvbuff_t *new_tvb;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- new_tvb = tvb_new_subset_remaining(tvb, curr_offset);
- /*
- * Inter RAT Handover Information coded as specified in 3GPP
- * Technical Specification 25.331
- */
- dissect_rrc_InterRATHandoverInfo_PDU(new_tvb, gpinfo, tree);
+ new_tvb = tvb_new_subset_remaining(tvb, curr_offset);
+ /*
+ * Inter RAT Handover Information coded as specified in 3GPP
+ * Technical Specification 25.331
+ */
+ dissect_rrc_InterRATHandoverInfo_PDU(new_tvb, gpinfo, tree);
- return(len);
+ return(len);
}
/*
- * 11.3.95 PS Handover Command
+ * 11.3.95 PS Handover Command
*/
static guint16
de_bssgp_ps_ho_cmd(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- /* Octet 3-? Rest of element coded as a complete PS Handover Command
- * radio interface message as defined in 3GPP TS 44.060 (carrying
- * the PS Handover to A/Gb Mode Payload)
- */
- proto_tree_add_item(tree, hf_bssgp_ps_ho_cmd, tvb, curr_offset, len, ENC_NA);
+ /* Octet 3-? Rest of element coded as a complete PS Handover Command
+ * radio interface message as defined in 3GPP TS 44.060 (carrying
+ * the PS Handover to A/Gb Mode Payload)
+ */
+ proto_tree_add_item(tree, hf_bssgp_ps_ho_cmd, tvb, curr_offset, len, ENC_NA);
- return(len);
+ return(len);
}
/*
- * 11.3.95a PS Handover Indications
+ * 11.3.95a PS Handover Indications
*/
static guint16
de_bssgp_ps_ho_indications(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- /* SI/PSI */
- proto_tree_add_item(tree, hf_bssgp_sipsi, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- curr_offset++;
+ /* SI/PSI */
+ proto_tree_add_item(tree, hf_bssgp_sipsi, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ curr_offset++;
- return(curr_offset-offset);
+ return(curr_offset-offset);
}
/*
- * 11.3.95b SI/PSI Container
+ * 11.3.95b SI/PSI Container
*/
- static const value_string type_vals[] = {
+static const value_string type_vals[] = {
{ 0, "SI messages as specified for BCCH (3GPP TS 44.018) follow" },
{ 1, "PSI messages as specified for PBCCH (3GPP TS 44.060) follow" },
- { 0, NULL },
- };
+ { 0, NULL },
+};
static guint16
de_bssgp_sipsi_container(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
- guint8 oct,num, type, i;
-
- curr_offset = offset;
-
- oct = tvb_get_guint8(tvb, curr_offset);
- num = oct >>1;
- type = oct & 1;
- proto_tree_add_text(tree, tvb, curr_offset, 1,
- "Number of SI/PSI: %u",num);
-
- /* Type */
- proto_tree_add_item(tree, hf_bssgp_type, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- curr_offset++;
- if (type==0){
- /* BCCH (3GPP TS 44.018) */
- for (i = 0; i < num; i++) {
- proto_tree_add_text(tree, tvb, curr_offset, 21, "SI (%u)", i + 1);
- curr_offset+=21;
- }
- }else{
- /* PBCCH (3GPP TS 44.060) */
- for (i = 0; i < num; i++) {
- proto_tree_add_text(tree, tvb, curr_offset, 22, "PSI (%u)", i + 1);
- curr_offset+=22;
- }
- }
+ guint32 curr_offset;
+ guint8 oct,num, type, i;
+
+ curr_offset = offset;
+
+ oct = tvb_get_guint8(tvb, curr_offset);
+ num = oct >>1;
+ type = oct & 1;
+ proto_tree_add_text(tree, tvb, curr_offset, 1,
+ "Number of SI/PSI: %u",num);
+
+ /* Type */
+ proto_tree_add_item(tree, hf_bssgp_type, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ curr_offset++;
+ if (type==0){
+ /* BCCH (3GPP TS 44.018) */
+ for (i = 0; i < num; i++) {
+ proto_tree_add_text(tree, tvb, curr_offset, 21, "SI (%u)", i + 1);
+ curr_offset+=21;
+ }
+ }else{
+ /* PBCCH (3GPP TS 44.060) */
+ for (i = 0; i < num; i++) {
+ proto_tree_add_text(tree, tvb, curr_offset, 22, "PSI (%u)", i + 1);
+ curr_offset+=22;
+ }
+ }
- return(curr_offset-offset);
+ return(curr_offset-offset);
}
/*
- * 11.3.95c Active PFCs List
+ * 11.3.95c Active PFCs List
*/
static guint16
de_bssgp_active_pfcs_list(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- proto_tree *pfc_tree;
- proto_item *pi, *ti2;
+ proto_tree *pfc_tree;
+ proto_item *pi, *ti2;
- guint32 curr_offset;
- guint8 num_pfc, i;
+ guint32 curr_offset;
+ guint8 num_pfc, i;
- curr_offset = offset;
+ curr_offset = offset;
- num_pfc = tvb_get_guint8(tvb, curr_offset);
- pi = proto_tree_add_text(tree, tvb, curr_offset, 1,
- "Number of PFCs: ");
+ num_pfc = tvb_get_guint8(tvb, curr_offset);
+ pi = proto_tree_add_text(tree, tvb, curr_offset, 1,
+ "Number of PFCs: ");
- if (num_pfc < 12) {
- proto_item_append_text(pi, "%u", num_pfc);
- }else {
- proto_item_append_text(pi, "Reserved");
- return (curr_offset-offset);
- }
- curr_offset++;
- if (num_pfc == 0)
- return (curr_offset-offset);
+ if (num_pfc < 12) {
+ proto_item_append_text(pi, "%u", num_pfc);
+ }else {
+ proto_item_append_text(pi, "Reserved");
+ return (curr_offset-offset);
+ }
+ curr_offset++;
+ if (num_pfc == 0)
+ return (curr_offset-offset);
- for (i = 0; i < num_pfc; i++) {
- ti2 = proto_tree_add_text(tree, tvb, curr_offset, 1, "PFC (%u)", i + 1);
- pfc_tree = proto_item_add_subtree(ti2, ett_bssgp_pfc_flow_control_parameters_pfc);
+ for (i = 0; i < num_pfc; i++) {
+ ti2 = proto_tree_add_text(tree, tvb, curr_offset, 1, "PFC (%u)", i + 1);
+ pfc_tree = proto_item_add_subtree(ti2, ett_bssgp_pfc_flow_control_parameters_pfc);
- de_sm_pflow_id(tvb, pfc_tree, pinfo, curr_offset, 1, NULL, 0);
- curr_offset++;
+ de_sm_pflow_id(tvb, pfc_tree, pinfo, curr_offset, 1, NULL, 0);
+ curr_offset++;
- }
+ }
- return(curr_offset-offset);
+ return(curr_offset-offset);
}
/*
- * 11.3.96 Velocity Data
+ * 11.3.96 Velocity Data
*/
static guint16
de_bssgp_velocity_data(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len, gchar *add_string, int string_len)
{
- guint32 curr_offset;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- /* The rest of the information element contains an octet sequence
- * identical to that for Description of Velocity defined in 3GPP TS
- * 23.032.
- */
- curr_offset = dissect_description_of_velocity(tvb, tree, pinfo, curr_offset, len, add_string, string_len);
+ /* The rest of the information element contains an octet sequence
+ * identical to that for Description of Velocity defined in 3GPP TS
+ * 23.032.
+ */
+ curr_offset = dissect_description_of_velocity(tvb, tree, pinfo, curr_offset, len, add_string, string_len);
- return(curr_offset-offset);
+ return(curr_offset-offset);
}
/*
- * 11.3.97 DTM Handover Command
+ * 11.3.97 DTM Handover Command
*/
static guint16
de_bssgp_dtm_ho_cmd(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- /* Rest of element coded as a complete DTM Handover Command
- * radio interface message as defined in 3GPP TS 44.060 (carrying
- * the DTM Handover to A/Gb Mode Payload)
- */
- proto_tree_add_text(tree, tvb, curr_offset, len, "DTM Handover Command data");
+ /* Rest of element coded as a complete DTM Handover Command
+ * radio interface message as defined in 3GPP TS 44.060 (carrying
+ * the DTM Handover to A/Gb Mode Payload)
+ */
+ proto_tree_add_text(tree, tvb, curr_offset, len, "DTM Handover Command data");
- return(len);
+ return(len);
}
/*
- * 11.3.98 CS Indication
+ * 11.3.98 CS Indication
*/
static guint16
de_bssgp_cs_indication(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- /* CS Indication Contents
- * CS Indication Contents: This identifies a particular handover attempt for this MS. This shall be identical to the PS
- * Indication Contents value in the corresponding PS Indication IE included in the Old BSS to New BSS Information IE
- * (see 3GPP TS 48.008). The choice of the value of this field is implementation specific, with the requirement that
- * consecutive handover attempts for the same mobile station shall not have the same CS Indication Contents value.
- */
- proto_tree_add_item(tree, hf_bssgp_cs_indication, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- curr_offset++;
+ /* CS Indication Contents
+ * CS Indication Contents: This identifies a particular handover attempt for this MS. This shall be identical to the PS
+ * Indication Contents value in the corresponding PS Indication IE included in the Old BSS to New BSS Information IE
+ * (see 3GPP TS 48.008). The choice of the value of this field is implementation specific, with the requirement that
+ * consecutive handover attempts for the same mobile station shall not have the same CS Indication Contents value.
+ */
+ proto_tree_add_item(tree, hf_bssgp_cs_indication, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ curr_offset++;
- return(curr_offset-offset);
+ return(curr_offset-offset);
}
/*
- * 11.3.99 Requested GANSS Assistance Data
+ * 11.3.99 Requested GANSS Assistance Data
*/
/* Rest of element coded as the value part defined in
* 3GPP TS 49.031, not including 3GPP TS 49.031 IEI and
* 3GPP TS 49.031 octet length indicator
*/
/*
- * 11.3.100 GANSS Location Type
+ * 11.3.100 GANSS Location Type
*/
/* Rest of element coded as the value part defined in
* 3GPP TS 49.031, not including 3GPP TS 49.031 IEI and
* 3GPP TS 49.031 octet length indicator
*/
/*
- * 11.3.101 GANSS Positioning Data
+ * 11.3.101 GANSS Positioning Data
*/
/* Rest of element coded as the value part defined in
* 3GPP TS 49.031, not including 3GPP TS 49.031 IEI and
* 3GPP TS 49.031 octet length indicator
*/
/*
- * 11.3.102 Flow Control Granularity
+ * 11.3.102 Flow Control Granularity
*/
static const value_string bssgp_flow_control_gran_vals[] = {
{ 0, "100 octets or bits/s increments" },
{ 1, "1000 octets or bits/s increments" },
{ 2, "10000 octets or bits/s increments" },
- { 3, "100000 octets or bits/s increments" },
- { 0, NULL },
- };
+ { 3, "100000 octets or bits/s increments" },
+ { 0, NULL },
+};
static guint16
de_bssgp_flow_control_gran(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- /* Granularity */
- proto_tree_add_item(tree, hf_bssgp_flow_control_gran, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- curr_offset++;
+ /* Granularity */
+ proto_tree_add_item(tree, hf_bssgp_flow_control_gran, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ curr_offset++;
- return(curr_offset-offset);
+ return(curr_offset-offset);
}
/*
- * 11.3.103 eNB Identifier
+ * 11.3.103 eNB Identifier
*/
static guint16
de_bssgp_enb_id(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len _U_, gchar *add_string, int string_len)
{
- tvbuff_t *new_tvb;
- guint32 curr_offset;
+ tvbuff_t *new_tvb;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- /* Octets 3 to 7 contain the value part (starting with octet 2) of the
- * Tracking Area Identity IE defined in 3GPP TS 24.301 [37], not
- * including 3GPP TS 24.301 IEI [37]
- */
- curr_offset = curr_offset+ de_emm_trac_area_id(tvb, tree, pinfo, curr_offset, 5, add_string, string_len);
+ /* Octets 3 to 7 contain the value part (starting with octet 2) of the
+ * Tracking Area Identity IE defined in 3GPP TS 24.301 [37], not
+ * including 3GPP TS 24.301 IEI [37]
+ */
+ curr_offset = curr_offset+ de_emm_trac_area_id(tvb, tree, pinfo, curr_offset, 5, add_string, string_len);
- /* Octets 8-n contain the Global eNB ID (see 3GPP TS 36.413) of the eNodeB. */
- new_tvb = tvb_new_subset_remaining(tvb, curr_offset);
- dissect_s1ap_Global_ENB_ID_PDU(new_tvb, gpinfo, tree);
+ /* Octets 8-n contain the Global eNB ID (see 3GPP TS 36.413) of the eNodeB. */
+ new_tvb = tvb_new_subset_remaining(tvb, curr_offset);
+ dissect_s1ap_Global_ENB_ID_PDU(new_tvb, gpinfo, tree);
- return(len);
+ return(len);
}
/*
- * 11.3.104 E-UTRAN Inter RAT Handover Info
+ * 11.3.104 E-UTRAN Inter RAT Handover Info
*/
static guint16
de_bssgp_e_utran_inter_rat_ho_info(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- tvbuff_t *new_tvb;
- guint32 curr_offset;
+ tvbuff_t *new_tvb;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- new_tvb = tvb_new_subset_remaining(tvb, curr_offset);
- /*
- * Formatted and coded according to the UE-EUTRA-Capability IE
- * defined in 3GPP Technical Specification 36.331. The most
- * significant bit of the first octet of the octet string contains bit 8 of
- * the first octet of the IE.
- */
- dissect_lte_rrc_UE_EUTRA_Capability_PDU(new_tvb, gpinfo, tree);
+ new_tvb = tvb_new_subset_remaining(tvb, curr_offset);
+ /*
+ * Formatted and coded according to the UE-EUTRA-Capability IE
+ * defined in 3GPP Technical Specification 36.331. The most
+ * significant bit of the first octet of the octet string contains bit 8 of
+ * the first octet of the IE.
+ */
+ dissect_lte_rrc_UE_EUTRA_Capability_PDU(new_tvb, gpinfo, tree);
- return(len);
+ return(len);
}
/*
- * 11.3.105 Subscriber Profile ID for RAT/Frequency priority
+ * 11.3.105 Subscriber Profile ID for RAT/Frequency priority
*/
static guint16
de_bssgp_sub_prof_id_f_rat_freq_prio(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
- guint8 value;
+ guint32 curr_offset;
+ guint8 value;
- curr_offset = offset;
+ curr_offset = offset;
- /* Octet 3 contains a number in binary representation ranging from 0 to 255.
- * The Subscriber Profile ID for RAT/Frequency priority is given by
- * the indicated value +1.
- */
- value = tvb_get_guint8(tvb,curr_offset) + 1;
- proto_tree_add_uint(tree, hf_bssgp_sub_prof_id_f_rat_freq_prio, tvb, curr_offset, 1, value);
- curr_offset++;
+ /* Octet 3 contains a number in binary representation ranging from 0 to 255.
+ * The Subscriber Profile ID for RAT/Frequency priority is given by
+ * the indicated value +1.
+ */
+ value = tvb_get_guint8(tvb,curr_offset) + 1;
+ proto_tree_add_uint(tree, hf_bssgp_sub_prof_id_f_rat_freq_prio, tvb, curr_offset, 1, value);
+ curr_offset++;
- return(curr_offset-offset);
+ return(curr_offset-offset);
}
/*
- * 11.3.106 Request for Inter-RAT Handover Info
+ * 11.3.106 Request for Inter-RAT Handover Info
*/
static guint16
de_bssgp_req_for_inter_rat_ho_inf(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- /*octet 3 Spare E-UTRAN Inter RAT Handover Info Req Inter RAT Handover Info Req */
- proto_tree_add_item(tree, hf_bssgp_eutran_irat_ho_inf_req, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(tree, hf_bssgp_irat_ho_inf_req, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- curr_offset++;
+ /*octet 3 Spare E-UTRAN Inter RAT Handover Info Req Inter RAT Handover Info Req */
+ proto_tree_add_item(tree, hf_bssgp_eutran_irat_ho_inf_req, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_bssgp_irat_ho_inf_req, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ curr_offset++;
- return(curr_offset-offset);
+ return(curr_offset-offset);
}
/*
- * 11.3.107 Reliable Inter-RAT Handover Info
+ * 11.3.107 Reliable Inter-RAT Handover Info
*/
static guint16
de_bssgp_reliable_inter_rat_ho_inf(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- /* Reliable Inter RAT Handover Info Indicator */
- proto_tree_add_item(tree, hf_bssgp_rel_int_rat_ho_inf_ind, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- curr_offset++;
+ /* Reliable Inter RAT Handover Info Indicator */
+ proto_tree_add_item(tree, hf_bssgp_rel_int_rat_ho_inf_ind, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ curr_offset++;
- return(curr_offset-offset);
+ return(curr_offset-offset);
}
/*
- * 11.3.108 SON Transfer Application Identity
+ * 11.3.108 SON Transfer Application Identity
*/
static guint16
de_bssgp_son_transfer_app_id(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset _U_, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- /* SON Transfer Application Identity: This field is encoded as the SON Transfer Application Identity IE
- * as defined in 3GPP TS 36.413
- */
- dissect_s1ap_SONtransferApplicationIdentity_PDU(tvb, gpinfo, tree);
+ /* SON Transfer Application Identity: This field is encoded as the SON Transfer Application Identity IE
+ * as defined in 3GPP TS 36.413
+ */
+ dissect_s1ap_SONtransferApplicationIdentity_PDU(tvb, gpinfo, tree);
- return(len);
+ return(len);
}
/*
- * 11.3.109 CSG Identifier
+ * 11.3.109 CSG Identifier
*/
/* Cell Access Mode (bit 1 of octet 7) */
static const value_string bssgp_cell_access_mode_vals[] = {
{ 0, "CSG cell" },
{ 1, "Hybrid cell" },
- { 0, NULL },
+ { 0, NULL },
};
static guint16
de_bssgp_csg_id(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- /* Octets 3 to 6 contain the CSG Identity (CSG-ID) of the cell (defined in
- * 3GPP TS 23.003) as reported by the mobile station (see 3GPP TS
- * 44.060). Bits 4 to 8 of octet 6 are spare and set to zero.
- */
- proto_tree_add_item(tree, hf_bssgp_csg_id, tvb, curr_offset, 4, ENC_BIG_ENDIAN);
- curr_offset+=4;
- /* Cell Access Mode */
- proto_tree_add_item(tree, hf_bssgp_cell_acc_mode, tvb, curr_offset, 4, ENC_BIG_ENDIAN);
- curr_offset++;
+ /* Octets 3 to 6 contain the CSG Identity (CSG-ID) of the cell (defined in
+ * 3GPP TS 23.003) as reported by the mobile station (see 3GPP TS
+ * 44.060). Bits 4 to 8 of octet 6 are spare and set to zero.
+ */
+ proto_tree_add_item(tree, hf_bssgp_csg_id, tvb, curr_offset, 4, ENC_BIG_ENDIAN);
+ curr_offset+=4;
+ /* Cell Access Mode */
+ proto_tree_add_item(tree, hf_bssgp_cell_acc_mode, tvb, curr_offset, 4, ENC_BIG_ENDIAN);
+ curr_offset++;
- return(curr_offset-offset);
+ return(curr_offset-offset);
}
/*
- * 11.3.110 Tracking Area Code
+ * 11.3.110 Tracking Area Code
*/
/*
* Octets 3 to 5 contain the value part (starting with octet 2) of the TAC
* IE defined in 3GPP TS 24.301.
*/
/*
- * 11.3.111 Redirect Attempt Flag
- * 11.3.112 Redirection Indication
- * 11.3.113 Redirection Completed
+ * 11.3.111 Redirect Attempt Flag
+ * 11.3.112 Redirection Indication
+ * 11.3.113 Redirection Completed
*/
const value_string bssgp_elem_strings[] = {
- { 0x00, "Alignment Octets" }, /* 11.3.1 Alignment octets */
- { 0x01, "Bmax default MS" }, /* 11.3.2 Bmax default MS */
- { 0x02, "BSS Area Indication" }, /* 11.3.3 BSS Area Indication */
- { 0x03, "Bucket Leak Rate (R)" }, /* 11.3.4 Bucket Leak Rate (R) */
- { 0x04, "BVCI (BSSGP Virtual Connection Identifier)" }, /* 11.3.6 BVCI (BSSGP Virtual Connection Identifier) */
- { 0x05, "BVC Bucket size" }, /* 11.3.5 BVC Bucket Size */
- { 0x06, "BVC Measurement" }, /* 11.3.7 BVC Measurement */
- { 0x07, "Cause" }, /* 11.3.8 Cause */
- { 0x08, "Cell Identifier" }, /* 11.3.9 Cell Identifier */
- { 0x09, "Channel needed" }, /* 11.3.10 Channel needed */
- { 0x0a, "DRX Parameters" }, /* 11.3.11 DRX Parameters */
- { 0x0b, "eMLPP-Priority" }, /* 11.3.12 eMLPP-Priority */
- { 0x0c, "Flush Action" }, /* 11.3.13 Flush Action */
- { 0x0d, "IMSI" }, /* 11.3.14 IMSI */
- { 0x0e, "LLC-PDU" }, /* 11.3.15 LLC-PDU */
- { 0x0f, "LLC Frames Discarded" }, /* 11.3.16 LLC Frames Discarded */
- { 0x10, "Location Area" }, /* 11.3.17 Location Area */
- { 0x11, "Mobile Id" }, /* 11.3.20 Mobile Id */
- { 0x12, "MS Bucket Size" }, /* 11.3.21 MS Bucket Size */
- { 0x13, "MS Radio Access Capability" }, /* 11.3.22 MS Radio Access Capability GSM_A_PDU_TYPE_GM, DE_MS_RAD_ACC_CAP */
- { 0x14, "OMC Id" }, /* 11.3.23 OMC Id */
- { 0x15, "PDU In Error" }, /* 11.3.24 PDU In Error */
- { 0x16, "PDU Lifetime" }, /* 11.3.25 PDU Lifetime */
- { 0x17, "Priority" }, /* 11.3.27 Priority */
- { 0x18, "QoS Profile" }, /* 11.3.28 QoS Profile */
- { 0x19, "Radio Cause" }, /* 11.3.29 Radio Cause */
- { 0x1a, "RA-Cap-UPD-Cause" }, /* 11.3.30 RA-Cap-UPD-Cause */
- { 0x1b, "Routeing Area" }, /* 11.3.31 Routeing Area */
- { 0x1c, "R_default_MS" }, /* 11.3.32 R_default_MS */
- { 0x1d, "Suspend Reference Number" }, /* 11.3.33 Suspend Reference Number */
- { 0x1e, "Tag" }, /* 11.3.34 Tag */
- { 0x1f, "Temporary logical link Identity (TLLI)" }, /* 11.3.35 Temporary logical link Identity (TLLI) GSM_A_PDU_TYPE_RR, DE_RR_TLLI*/
- { 0x20, "Temporary Mobile Subscriber Identity (TMSI)" }, /* 11.3.36 Temporary Mobile Subscriber Identity (TMSI)GSM_A_PDU_TYPE_RR, DE_RR_TMSI_PTMSI */
- { 0x21, "Trace Reference" }, /* 11.3.37 Trace Reference */
- { 0x22, "Trace Type" }, /* 11.3.38 Trace Type */
- { 0x23, "Transaction Id" }, /* 11.3.39 Transaction Id */
- { 0x24, "Trigger Id" }, /* 11.3.40 Trigger Id */
- { 0x25, "Number of octets affected" }, /* 11.3.41 Number of octets affected */
- { 0x26, "LSA Identifier List" }, /* 11.3.18 LSA Identifier List */
- { 0x27, "LSA Information" }, /* 11.3.19 LSA Information */
- { 0x28, "Packet Flow Identifier (PFI)" }, /* 11.3.42 Packet Flow Identifier (PFI) GSM_A_PDU_TYPE_GM, DE_PACKET_FLOW_ID*/
- /* 11.3.42a (void) */
- { 0x29, "GPRS Timer" }, /* 11.3.44 GPRS Timer */
- { 0x3a, "Aggregate BSS QoS Profile" }, /* 11.3.43 Aggregate BSS QoS Profile GSM_A_PDU_TYPE_GM, DE_QOS*/
- { 0x3b, "Feature Bitmap" }, /* 11.3.45 Feature Bitmap */
- { 0x3c, "Bucket Full Ratio" }, /* 11.3.46 Bucket Full Ratio */
- { 0x3d, "Service UTRAN CCO" }, /* 11.3.47 Service UTRAN CCO */
- { 0x3e, "NSEI (Network Service Entity Identifier)" }, /* 11.3.48 NSEI (Network Service Entity Identifier) */
- { 0x00, "RRLP APDU" }, /* 11.3.49 RRLP APDU */
- /* 11.3.50 LCS QoS BSSGP_IEI_LCS_QOS, GSM_PDU_TYPE_BSSMAP_LE, DE_BMAPLE_LCSQOS*/
- /* 11.3.51 LCS Client Type BSSGP_IEI_LCS_CLIENT_TYPE, GSM_PDU_TYPE_BSSMAP_LE, DE_BMAPLE_LCS_CLIENT_TYPE*/
- /* 11.3.52 Requested GPS Assistance Data BSSGP_IEI_REQUESTED_GPS_ASSISTANCE_DATA, GSM_PDU_TYPE_BSSMAP_LE, DE_BMAPLE_REQ_GPS_ASSIST_D*/
- /* 11.3.53 Location Type 0x7c, GSM_PDU_TYPE_BSSMAP_LE, DE_BMAPLE_GANSS_LOC_TYPE*/
- /* 11.3.54 Location Estimate BSSGP_IEI_LOCATION_ESTIMATE, GSM_A_PDU_TYPE_BSSMAP, BE_LOC_EST*/
- /* 11.3.55 Positioning Data 0x7d, GSM_PDU_TYPE_BSSMAP_LE, DE_BMAPLE_POS_DATA*/
- /* 11.3.56 Deciphering Keys BSSGP_IEI_DECIPHERING_KEYS, GSM_PDU_TYPE_BSSMAP_LE, DE_BMAPLE_DECIPH_KEYS */
- /* 11.3.57 LCS Priority BSSGP_IEI_LCS_PRIORITY, GSM_A_PDU_TYPE_BSSMAP, BE_LCS_PRIO;*/
- /* 11.3.58 LCS Cause BSSGP_IEI_LCS_CAUSE, GSM_PDU_TYPE_BSSMAP_LE, DE_BMAPLE_LCS_CAUSE */
- /* 11.3.59 LCS Capability 0x49 , GSM_A_PDU_TYPE_GM, DE_PS_LCS_CAP*/
- { 0x00, "RRLP Flags" }, /* 11.3.60 RRLP Flags */
- { 0x00, "RIM Application Identity" }, /* 11.3.61 RIM Application Identity */
- { 0x00, "RIM Sequence Number" }, /* 11.3.62 RIM Sequence Number */
- /* 11.3.62a RIM Container */
- /* 11.3.62a.0 General */
- { 0x00, "RAN-INFORMATION-REQUEST RIM Container" }, /* 11.3.62a.1 RAN-INFORMATION-REQUEST RIM Container */
- { 0x00, "RAN-INFORMATION RIM Container" }, /* 11.3.62a.2 RAN-INFORMATION RIM Container */
- { 0x00, "RAN-INFORMATION-ACK RIM Container" }, /* 11.3.62a.3 RAN-INFORMATION-ACK RIM Container */
- { 0x00, "RAN-INFORMATION-ERROR RIM Container" }, /* 11.3.62a.4 RAN-INFORMATION-ERROR RIM Container */
- { 0x00, "RAN-INFORMATION-APPLICATION-ERROR RIM Container" }, /* 11.3.62a.5 RAN-INFORMATION-APPLICATION-ERROR RIM Container */
- /* 11.3.63 Application Container */
- { 0x00, "RAN-INFORMATION-REQUEST Application Container" }, /* 11.3.63.1 RAN-INFORMATION-REQUEST Application Container */
- /* 11.3.63.1.0 General */
- /* 11.3.63.1.1 RAN-INFORMATION-REQUEST Application Container for the NACC Application */
- /* 11.3.63.1.2 RAN-INFORMATION-REQUEST Application Container for the SI3 Application */
- /* 11.3.63.1.3 RAN-INFORMATION-REQUEST Application Container for the MBMS data channel Application */
- /* 11.3.63.1.4 RAN-INFORMATION-REQUEST Application Container for the SON Transfer Application */
- { 0x00, "RAN-INFORMATION Application Container Unit" }, /* 11.3.63.2 RAN-INFORMATION Application Container Unit */
- /* 11.3.63.2.0 General */
- /* 11.3.63.2.1 RAN-INFORMATION Application Container for the NACC Application */
- /* 11.3.63.2.2 RAN-INFORMATION Application Container for the SI3 Application */
- /* 11.3.63.2.3 RAN-INFORMATION Application Container for the MBMS data channel Application */
- /* 11.3.63.2.4 RAN-INFORMATION Application Container for the SON Transfer Application */
- { 0x00, "Application Error Container" }, /* 11.3.64 Application Error Container */
- /* 11.3.64.1 Application Error Container layout for the NACC application */
- /* 11.3.64.2 Application Error Container for the SI3 application */
- /* 11.3.64.3 Application Error Container for the MBMS data channel application */
- /* 11.3.64.4 Application Error Container for the SON Transfer Application */
- { 0x00, "RIM PDU Indications" }, /* 11.3.65 RIM PDU Indications */
- /* 11.3.65.0 General */
- /* 11.3.65.1 RAN-INFORMATION-REQUEST RIM PDU Indications */
- /* 11.3.65.2 RAN-INFORMATION RIM PDU Indications */
- /* 11.3.65.3 RAN-INFORMATION-APPLICATION-ERROR RIM PDU Indications */
- /* 11.3.66 (void) */
- { 0x00, "RIM Protocol Version Number" }, /* 11.3.67 RIM Protocol Version Number */
- { 0x00, "PFC Flow Control parameters" }, /* 11.3.68 PFC Flow Control parameters */
- /* 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 */
- { 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) */
- { 0x00, "MBMS Stop Cause" }, /* 11.3.78 MBMS Stop Cause */
- { 0x00, "Source BSS to Target BSS Transparent Container" }, /* 11.3.79 Source BSS to Target BSS Transparent Container */
- { 0x00, "Target BSS to Source BSS Transparent Container" }, /* 11.3.80 Target BSS to Source BSS Transparent Container */
- /* 11.3.81 NAS container for PS Handover */
- { 0x00, "PFCs to be set-up list" }, /* 11.3.82 PFCs to be set-up list */
- { 0x00, "List of set-up PFCs" }, /* 11.3.83 List of set-up PFCs */
- { 0x00, "Extended Feature Bitmap" }, /* 11.3.84 Extended Feature Bitmap */
- { 0x00, "Source to Target Transparent Container" }, /* 11.3.85 Source to Target Transparent Container */
- { 0x00, "Target to Source Transparent Container" }, /* 11.3.86 Target to Source Transparent Container */
- { 0x00, "RNC Identifier" }, /* 11.3.87 RNC Identifier */
- { 0x00, "Page Mode" }, /* 11.3.88 Page Mode */
- { 0x00, "Container ID" }, /* 11.3.89 Container ID */
- { 0x00, "Global TFI" }, /* 11.3.90 Global TFI */
- /* 11.3.91 IMEI */
- { 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 */
- { 0x00, "SI/PSI Container" }, /* 11.3.95b SI/PSI Container */
- { 0x00, "Active PFCs List" }, /* 11.3.95c Active PFCs List */
- { 0x00, "Velocity Data" }, /* 11.3.96 Velocity Data */
- { 0x00, "DTM Handover Command" }, /* 11.3.97 DTM Handover Command */
- { 0x00, "PS Handover Indications" }, /* 11.3.98 CS Indication */
- /* 11.3.99 Requested GANSS Assistance Data 0x7b, GSM_A_PDU_TYPE_BSSMAP, BE_GANSS_ASS_DTA*/
- /* 11.3.100 GANSS Location Type 0x7c, GSM_A_PDU_TYPE_BSSMAP, BE_GANSS_LOC_TYP*/
- /* 11.3.101 GANSS Positioning Data ENC_BIG_ENDIAN);*/
- { 0x00, "Flow Control Granularity" }, /* 11.3.102 Flow Control Granularity */
- { 0x00, "eNB Identifier" }, /* 11.3.103 eNB Identifier */
- { 0x00, "E-UTRAN Inter RAT Handover Info" }, /* 11.3.104 E-UTRAN Inter RAT Handover Info */
- { 0x00, "Subscriber Profile ID for RAT/Frequency priority" }, /* 11.3.105 Subscriber Profile ID for RAT/Frequency priority */
- { 0x00, "Request for Inter-RAT Handover Info" }, /* 11.3.106 Request for Inter-RAT Handover Info */
- { 0x00, "Reliable Inter-RAT Handover Info" }, /* 11.3.107 Reliable Inter-RAT Handover Info */
- { 0x00, "Reliable Inter-RAT Handover Info" }, /* 11.3.108 SON Transfer Application Identity */
- { 0x00, "CSG Identifier" }, /* 11.3.109 CSG Identifier */
+ { 0x00, "Alignment Octets" }, /* 11.3.1 Alignment octets */
+ { 0x01, "Bmax default MS" }, /* 11.3.2 Bmax default MS */
+ { 0x02, "BSS Area Indication" }, /* 11.3.3 BSS Area Indication */
+ { 0x03, "Bucket Leak Rate (R)" }, /* 11.3.4 Bucket Leak Rate (R) */
+ { 0x04, "BVCI (BSSGP Virtual Connection Identifier)" }, /* 11.3.6 BVCI (BSSGP Virtual Connection Identifier) */
+ { 0x05, "BVC Bucket size" }, /* 11.3.5 BVC Bucket Size */
+ { 0x06, "BVC Measurement" }, /* 11.3.7 BVC Measurement */
+ { 0x07, "Cause" }, /* 11.3.8 Cause */
+ { 0x08, "Cell Identifier" }, /* 11.3.9 Cell Identifier */
+ { 0x09, "Channel needed" }, /* 11.3.10 Channel needed */
+ { 0x0a, "DRX Parameters" }, /* 11.3.11 DRX Parameters */
+ { 0x0b, "eMLPP-Priority" }, /* 11.3.12 eMLPP-Priority */
+ { 0x0c, "Flush Action" }, /* 11.3.13 Flush Action */
+ { 0x0d, "IMSI" }, /* 11.3.14 IMSI */
+ { 0x0e, "LLC-PDU" }, /* 11.3.15 LLC-PDU */
+ { 0x0f, "LLC Frames Discarded" }, /* 11.3.16 LLC Frames Discarded */
+ { 0x10, "Location Area" }, /* 11.3.17 Location Area */
+ { 0x11, "Mobile Id" }, /* 11.3.20 Mobile Id */
+ { 0x12, "MS Bucket Size" }, /* 11.3.21 MS Bucket Size */
+ { 0x13, "MS Radio Access Capability" }, /* 11.3.22 MS Radio Access Capability GSM_A_PDU_TYPE_GM, DE_MS_RAD_ACC_CAP */
+ { 0x14, "OMC Id" }, /* 11.3.23 OMC Id */
+ { 0x15, "PDU In Error" }, /* 11.3.24 PDU In Error */
+ { 0x16, "PDU Lifetime" }, /* 11.3.25 PDU Lifetime */
+ { 0x17, "Priority" }, /* 11.3.27 Priority */
+ { 0x18, "QoS Profile" }, /* 11.3.28 QoS Profile */
+ { 0x19, "Radio Cause" }, /* 11.3.29 Radio Cause */
+ { 0x1a, "RA-Cap-UPD-Cause" }, /* 11.3.30 RA-Cap-UPD-Cause */
+ { 0x1b, "Routeing Area" }, /* 11.3.31 Routeing Area */
+ { 0x1c, "R_default_MS" }, /* 11.3.32 R_default_MS */
+ { 0x1d, "Suspend Reference Number" }, /* 11.3.33 Suspend Reference Number */
+ { 0x1e, "Tag" }, /* 11.3.34 Tag */
+ { 0x1f, "Temporary logical link Identity (TLLI)" }, /* 11.3.35 Temporary logical link Identity (TLLI) GSM_A_PDU_TYPE_RR, DE_RR_TLLI*/
+ { 0x20, "Temporary Mobile Subscriber Identity (TMSI)" }, /* 11.3.36 Temporary Mobile Subscriber Identity (TMSI)GSM_A_PDU_TYPE_RR, DE_RR_TMSI_PTMSI */
+ { 0x21, "Trace Reference" }, /* 11.3.37 Trace Reference */
+ { 0x22, "Trace Type" }, /* 11.3.38 Trace Type */
+ { 0x23, "Transaction Id" }, /* 11.3.39 Transaction Id */
+ { 0x24, "Trigger Id" }, /* 11.3.40 Trigger Id */
+ { 0x25, "Number of octets affected" }, /* 11.3.41 Number of octets affected */
+ { 0x26, "LSA Identifier List" }, /* 11.3.18 LSA Identifier List */
+ { 0x27, "LSA Information" }, /* 11.3.19 LSA Information */
+ { 0x28, "Packet Flow Identifier (PFI)" }, /* 11.3.42 Packet Flow Identifier (PFI) GSM_A_PDU_TYPE_GM, DE_PACKET_FLOW_ID*/
+ /* 11.3.42a (void) */
+ { 0x29, "GPRS Timer" }, /* 11.3.44 GPRS Timer */
+ { 0x3a, "Aggregate BSS QoS Profile" }, /* 11.3.43 Aggregate BSS QoS Profile GSM_A_PDU_TYPE_GM, DE_QOS*/
+ { 0x3b, "Feature Bitmap" }, /* 11.3.45 Feature Bitmap */
+ { 0x3c, "Bucket Full Ratio" }, /* 11.3.46 Bucket Full Ratio */
+ { 0x3d, "Service UTRAN CCO" }, /* 11.3.47 Service UTRAN CCO */
+ { 0x3e, "NSEI (Network Service Entity Identifier)" }, /* 11.3.48 NSEI (Network Service Entity Identifier) */
+ { 0x00, "RRLP APDU" }, /* 11.3.49 RRLP APDU */
+ /* 11.3.50 LCS QoS BSSGP_IEI_LCS_QOS, GSM_PDU_TYPE_BSSMAP_LE, DE_BMAPLE_LCSQOS*/
+ /* 11.3.51 LCS Client Type BSSGP_IEI_LCS_CLIENT_TYPE, GSM_PDU_TYPE_BSSMAP_LE, DE_BMAPLE_LCS_CLIENT_TYPE*/
+ /* 11.3.52 Requested GPS Assistance Data BSSGP_IEI_REQUESTED_GPS_ASSISTANCE_DATA, GSM_PDU_TYPE_BSSMAP_LE, DE_BMAPLE_REQ_GPS_ASSIST_D*/
+ /* 11.3.53 Location Type 0x7c, GSM_PDU_TYPE_BSSMAP_LE, DE_BMAPLE_GANSS_LOC_TYPE*/
+ /* 11.3.54 Location Estimate BSSGP_IEI_LOCATION_ESTIMATE, GSM_A_PDU_TYPE_BSSMAP, BE_LOC_EST*/
+ /* 11.3.55 Positioning Data 0x7d, GSM_PDU_TYPE_BSSMAP_LE, DE_BMAPLE_POS_DATA*/
+ /* 11.3.56 Deciphering Keys BSSGP_IEI_DECIPHERING_KEYS, GSM_PDU_TYPE_BSSMAP_LE, DE_BMAPLE_DECIPH_KEYS */
+ /* 11.3.57 LCS Priority BSSGP_IEI_LCS_PRIORITY, GSM_A_PDU_TYPE_BSSMAP, BE_LCS_PRIO;*/
+ /* 11.3.58 LCS Cause BSSGP_IEI_LCS_CAUSE, GSM_PDU_TYPE_BSSMAP_LE, DE_BMAPLE_LCS_CAUSE */
+ /* 11.3.59 LCS Capability 0x49 , GSM_A_PDU_TYPE_GM, DE_PS_LCS_CAP*/
+ { 0x00, "RRLP Flags" }, /* 11.3.60 RRLP Flags */
+ { 0x00, "RIM Application Identity" }, /* 11.3.61 RIM Application Identity */
+ { 0x00, "RIM Sequence Number" }, /* 11.3.62 RIM Sequence Number */
+ /* 11.3.62a RIM Container */
+ /* 11.3.62a.0 General */
+ { 0x00, "RAN-INFORMATION-REQUEST RIM Container" }, /* 11.3.62a.1 RAN-INFORMATION-REQUEST RIM Container */
+ { 0x00, "RAN-INFORMATION RIM Container" }, /* 11.3.62a.2 RAN-INFORMATION RIM Container */
+ { 0x00, "RAN-INFORMATION-ACK RIM Container" }, /* 11.3.62a.3 RAN-INFORMATION-ACK RIM Container */
+ { 0x00, "RAN-INFORMATION-ERROR RIM Container" }, /* 11.3.62a.4 RAN-INFORMATION-ERROR RIM Container */
+ { 0x00, "RAN-INFORMATION-APPLICATION-ERROR RIM Container" }, /* 11.3.62a.5 RAN-INFORMATION-APPLICATION-ERROR RIM Container */
+ /* 11.3.63 Application Container */
+ { 0x00, "RAN-INFORMATION-REQUEST Application Container" }, /* 11.3.63.1 RAN-INFORMATION-REQUEST Application Container */
+ /* 11.3.63.1.0 General */
+ /* 11.3.63.1.1 RAN-INFORMATION-REQUEST Application Container for the NACC Application */
+ /* 11.3.63.1.2 RAN-INFORMATION-REQUEST Application Container for the SI3 Application */
+ /* 11.3.63.1.3 RAN-INFORMATION-REQUEST Application Container for the MBMS data channel Application */
+ /* 11.3.63.1.4 RAN-INFORMATION-REQUEST Application Container for the SON Transfer Application */
+ { 0x00, "RAN-INFORMATION Application Container Unit" }, /* 11.3.63.2 RAN-INFORMATION Application Container Unit */
+ /* 11.3.63.2.0 General */
+ /* 11.3.63.2.1 RAN-INFORMATION Application Container for the NACC Application */
+ /* 11.3.63.2.2 RAN-INFORMATION Application Container for the SI3 Application */
+ /* 11.3.63.2.3 RAN-INFORMATION Application Container for the MBMS data channel Application */
+ /* 11.3.63.2.4 RAN-INFORMATION Application Container for the SON Transfer Application */
+ { 0x00, "Application Error Container" }, /* 11.3.64 Application Error Container */
+ /* 11.3.64.1 Application Error Container layout for the NACC application */
+ /* 11.3.64.2 Application Error Container for the SI3 application */
+ /* 11.3.64.3 Application Error Container for the MBMS data channel application */
+ /* 11.3.64.4 Application Error Container for the SON Transfer Application */
+ { 0x00, "RIM PDU Indications" }, /* 11.3.65 RIM PDU Indications */
+ /* 11.3.65.0 General */
+ /* 11.3.65.1 RAN-INFORMATION-REQUEST RIM PDU Indications */
+ /* 11.3.65.2 RAN-INFORMATION RIM PDU Indications */
+ /* 11.3.65.3 RAN-INFORMATION-APPLICATION-ERROR RIM PDU Indications */
+ /* 11.3.66 (void) */
+ { 0x00, "RIM Protocol Version Number" }, /* 11.3.67 RIM Protocol Version Number */
+ { 0x00, "PFC Flow Control parameters" }, /* 11.3.68 PFC Flow Control parameters */
+ /* 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 */
+ { 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) */
+ { 0x00, "MBMS Stop Cause" }, /* 11.3.78 MBMS Stop Cause */
+ { 0x00, "Source BSS to Target BSS Transparent Container" }, /* 11.3.79 Source BSS to Target BSS Transparent Container */
+ { 0x00, "Target BSS to Source BSS Transparent Container" }, /* 11.3.80 Target BSS to Source BSS Transparent Container */
+ /* 11.3.81 NAS container for PS Handover */
+ { 0x00, "PFCs to be set-up list" }, /* 11.3.82 PFCs to be set-up list */
+ { 0x00, "List of set-up PFCs" }, /* 11.3.83 List of set-up PFCs */
+ { 0x00, "Extended Feature Bitmap" }, /* 11.3.84 Extended Feature Bitmap */
+ { 0x00, "Source to Target Transparent Container" }, /* 11.3.85 Source to Target Transparent Container */
+ { 0x00, "Target to Source Transparent Container" }, /* 11.3.86 Target to Source Transparent Container */
+ { 0x00, "RNC Identifier" }, /* 11.3.87 RNC Identifier */
+ { 0x00, "Page Mode" }, /* 11.3.88 Page Mode */
+ { 0x00, "Container ID" }, /* 11.3.89 Container ID */
+ { 0x00, "Global TFI" }, /* 11.3.90 Global TFI */
+ /* 11.3.91 IMEI */
+ { 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 */
+ { 0x00, "SI/PSI Container" }, /* 11.3.95b SI/PSI Container */
+ { 0x00, "Active PFCs List" }, /* 11.3.95c Active PFCs List */
+ { 0x00, "Velocity Data" }, /* 11.3.96 Velocity Data */
+ { 0x00, "DTM Handover Command" }, /* 11.3.97 DTM Handover Command */
+ { 0x00, "PS Handover Indications" }, /* 11.3.98 CS Indication */
+ /* 11.3.99 Requested GANSS Assistance Data 0x7b, GSM_A_PDU_TYPE_BSSMAP, BE_GANSS_ASS_DTA*/
+ /* 11.3.100 GANSS Location Type 0x7c, GSM_A_PDU_TYPE_BSSMAP, BE_GANSS_LOC_TYP*/
+ /* 11.3.101 GANSS Positioning Data ENC_BIG_ENDIAN);*/
+ { 0x00, "Flow Control Granularity" }, /* 11.3.102 Flow Control Granularity */
+ { 0x00, "eNB Identifier" }, /* 11.3.103 eNB Identifier */
+ { 0x00, "E-UTRAN Inter RAT Handover Info" }, /* 11.3.104 E-UTRAN Inter RAT Handover Info */
+ { 0x00, "Subscriber Profile ID for RAT/Frequency priority" }, /* 11.3.105 Subscriber Profile ID for RAT/Frequency priority */
+ { 0x00, "Request for Inter-RAT Handover Info" }, /* 11.3.106 Request for Inter-RAT Handover Info */
+ { 0x00, "Reliable Inter-RAT Handover Info" }, /* 11.3.107 Reliable Inter-RAT Handover Info */
+ { 0x00, "Reliable Inter-RAT Handover Info" }, /* 11.3.108 SON Transfer Application Identity */
+ { 0x00, "CSG Identifier" }, /* 11.3.109 CSG Identifier */
/* 11.3.110 Tracking Area Code */
- { 0, NULL }
+ { 0, NULL }
};
-#define NUM_BSSGP_ELEM (sizeof(bssgp_elem_strings)/sizeof(value_string))
+#define NUM_BSSGP_ELEM (sizeof(bssgp_elem_strings)/sizeof(value_string))
gint ett_bssgp_elem[NUM_BSSGP_ELEM];
typedef enum
{
- DE_BSSGP_ALIGNMENT_OCTETS, /* 11.3.1 0x00 Alignment octets */
- DE_BSSGP_BMAX_DEFAULT_MS, /* 11.3.2 0x01 Bmax default MS */
- DE_BSSGP_BSS_AREA_IND, /* 11.3.3 0x02 BSS Area Indication */
- DE_BSSGP_BUCKET_LEAK_RATE, /* 11.3.4 0x03 Bucket Leak Rate (R) */
- DE_BSSGP_BVCI, /* 11.3.6 0x04 BVCI (BSSGP Virtual Connection Identifier) */
- DE_BSSGP_BVC_BUCKET_SIZE, /* 11.3.5 0x05 BVC Bucket Size */
- DE_BSSGP_BVC_MEAS, /* 11.3.7 0x06 BVC Measurement */
- DE_BSSGP_CAUSE, /* 11.3.8 0x07 Cause */
- DE_BSSGP_CELL_ID, /* 11.3.9 0x08 Cell Identifier */
- DE_BSSGP_CHLN_NEEDED, /* 11.3.10 0x09 Channel needed */
- DE_BBSGP_DRX_PARAM, /* 11.3.11 0x0a DRX Parameters GSM_A_PDU_TYPE_GM, DE_DRX_PARAM */
- DE_BBSGP_EMLPP_PRIO, /* 11.3.12 0x0b eMLPP-Priority GSM_A_PDU_TYPE_BSSMAP, BE_EMLPP_PRIO*/
- DE_BSSGP_FLUSH_ACTION, /* 11.3.13 0x0c Flush Action */
- DE_BSSGP_IMSI, /* 11.3.14 0x0d IMSI */
- DE_BSSGP_LLC_PDU, /* 11.3.15 0x0e LLC-PDU */
- DE_BSSGP_LLC_FRAMES_DISC, /* 11.3.16 0x0f LLC Frames Discarded */
- DE_BSSGP_LAI , /* 11.3.17 0x10 Location Area GSM_A_PDU_TYPE_COMMON, DE_LAI*/
- DE_BSSGP_MID, /* 11.3.20 0x11 Mobile Id GSM_A_PDU_TYPE_COMMON, DE_MID*/
- DE_BSSGP_MS_BUCKET_SIZE, /* 11.3.21 0x12 MS Bucket Size */
- DE_BSSGP_MS_RAD_ACC_CAP, /* 11.3.22 0x13 MS Radio Access Capability GSM_A_PDU_TYPE_GM, DE_MS_RAD_ACC_CAP*/
- DE_BSSGP_OMC_ID, /* 11.3.23 0x14 OMC Id */
- DE_BSSGP_PDU_IN_ERROR, /* 11.3.24 0x15 PDU In Error */
- DE_BSSGP_PDU_LIFETIME, /* 11.3.25 0x16 PDU Lifetime */
- DE_BSSP_PRIORITY, /* 11.3.27 0x17 Priority */
- DE_BSSGP_QOS_PROFILE, /* 11.3.28 0x18 QoS Profile */
- DE_BSSGP_RA_CAUSE, /* 11.3.29 0x19 Radio Cause */
- DE_BSSGP_RA_CAP_UPD_CAUSE, /* 11.3.30 0x1a RA-Cap-UPD-Cause */
- DE_BSSGP_RAI, /* 11.3.31 0x1b Routeing Area GSM_A_PDU_TYPE_GM, DE_RAI*/
- DE_BSSGP_R_DEFAULT_MS, /* 11.3.32 0x1c R_default_MS */
- DE_BBSGP_SUSPEND_REF_NO, /* 11.3.33 0x1d Suspend Reference Number */
- DE_BSSGP_TAG, /* 11.3.34 0x1e Tag */
- DE_BSSGP_TLLI, /* 11.3.35 0x1f Temporary logical link Identity (TLLI) GSM_A_PDU_TYPE_RR, DE_RR_TLLI*/
- DE_BSSGP_TMSI_PTMSI, /* 11.3.36 0x20 Temporary Mobile Subscriber Identity (TMSI) GSM_A_PDU_TYPE_RR, DE_RR_TMSI_PTMSI*/
- DE_BSSGP_TRACE_REF, /* 11.3.37 0x21 Trace Reference */
- DE_BSSGP_TRACE_TYPE, /* 11.3.38 0x22 Trace Type */
- DE_BSSGP_TRANSACTION_ID, /* 11.3.39 0x23 Transaction Id */
- DE_BSSGP_TRIGGER_ID, /* 11.3.40 0x24 Trigger Id */
- DE_BSSGP_NO_OF_OCT_AFFECTED, /* 11.3.41 0x25 Number of octets affected */
- DE_BSSGP_LSA_ID_LIST, /* 11.3.18 0x26 LSA Identifier List GSM_A_PDU_TYPE_BSSMAP, BE_LSA_ID_LIST*/
- DE_BSSGP_LSA_INFO, /* 11.3.19 0x27 LSA Information GSM_A_PDU_TYPE_BSSMAP, BE_LSA_INFO */
- DE_BSSGP_ACKET_FLOW_ID, /* 11.3.42 0x28 Packet Flow Identifier (PFI) GSM_A_PDU_TYPE_GM, DE_PACKET_FLOW_ID*/
- DE_BSSGP_GPRS_TIMER, /* 11.3.44 0x29 GPRS Timer */
- DE_BSSGP_QOS, /* 11.3.43 0x3a Aggregate BSS QoS Profile GSM_A_PDU_TYPE_GM, DE_QOS*/
- DE_BSSGP_FEATURE_BITMAP, /* 11.3.45 0x3b Feature Bitmap */
- DE_BSSGP_BUCKET_FULL_RATIO, /* 11.3.46 0x3c Bucket Full Ratio */
- DE_BSSGP_SERV_UTRAN_CCO, /* 11.3.47 0x3d Service UTRAN CCO */
- DE_BSSGP_NSEI, /* 11.3.48 0x3e NSEI (Network Service Entity Identifier) */
- DE_BSSGP_RRLP_APDU, /* 11.3.49 RRLP APDU */
- DE_BSSGP_RRLP_FLAGS, /* 11.3.60 RRLP Flags */
- DE_BSSGP_RIM_APP_ID, /* 11.3.61 RIM Application Identity */
- DE_BSSGP_RIM_SEQ_NO, /* 11.3.62 RIM Sequence Number */
- DE_BSSGP_RAN_INF_REQUEST_RIM_CONT, /* 11.3.62a.1 RAN-INFORMATION-REQUEST RIM Container */
- DE_BSSGP_RAN_INF_RIM_CONT, /* 11.3.62a.2 RAN-INFORMATION RIM Container */
- DE_BSSGP_RAN_INFORMATION_ACK_RIM_CONT, /* 11.3.62a.3 RAN-INFORMATION-ACK RIM Container */
- DE_BSSGP_RAN_INFORMATION_ERROR_RIM_CONT, /* 11.3.62a.4 RAN-INFORMATION-ERROR RIM Container */
- DE_BSSGP_RAN_INF_APP_ERROR_RIM_CONT, /* 11.3.62a.5 RAN-INFORMATION-APPLICATION-ERROR RIM Container */
- DE_BSSGP_RAN_INFORMATION_REQUEST_APP_CONT, /* 11.3.63.1 RAN-INFORMATION-REQUEST Application Container */
- DE_BSSGP_RAN_INFORMATION_APP_CONT_UNIT, /* 11.3.63.2 RAN-INFORMATION Application Container Unit */
- DE_BSSGP_RAN_APP_ERROR_CONT, /* 11.3.64 Application Error Container */
- DE_BSSGP_RIM_PDU_INDICATIONS, /* 11.3.65 RIM PDU Indications */
- DE_BSSGP_RIM_PROTO_VER_NO, /* 11.3.67 RIM Protocol Version Number */
-
- 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 */
-
- DE_BSSGP_TMGI, /* 11.3.77 TMGI (Temporary Mobile Group Identity) GSM_A_PDU_TYPE_GM, DE_TMGI*/
- DE_BSSGP_MBMS_STOP_CAUSE, /* 11.3.78 MBMS Stop Cause */
- 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 */
- DE_BSSGP_PFCS_TO_BE_SET_UP_LIST, /* 11.3.82 PFCs to be set-up list */
- DE_BSSGP_LIST_OF_SETUP_PFCS, /* 11.3.83 List of set-up PFCs */
- DE_BSSGP_EXT_FEATURE_BITMAP, /* 11.3.84 Extended Feature Bitmap */
- DE_BSSGP_SRC_TO_TRG_TRANSP_CONT, /* 11.3.85 Source to Target Transparent Container */
- DE_BSSGP_TRG_TO_SRC_TRANSP_CONT, /* 11.3.86 Target to Source Transparent Container */
- BE_BSSGP_RNC_ID, /* 11.3.87 RNC Identifier */
- 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 */
- DE_BSSGP_SIPSI_CONTAINER, /* 11.3.95b SI/PSI Container */
- DE_BSSGP_ACTIVE_PFCS_LIST, /* 11.3.95c Active PFCs List */
- DE_BSSGP_VELOCITY_DATA, /* 11.3.96 Velocity Data */
- DE_BBSGP_DTM_HO_CMD, /* 11.3.97 DTM Handover Command */
- DE_BSSGP_CS_INDICATION, /* 11.3.98 CS Indication */
- DE_BSSGP_FLOW_CONTROL_GRAN, /* 11.3.102 Flow Control Granularity */
- DE_BSSGP_ENB_ID, /* 11.3.103 eNB Identifier */
- DE_BSSGP_E_UTRAN_INTER_RAT_HO_INFO, /* 11.3.104 E-UTRAN Inter RAT Handover Info */
- DE_BSSGP_SUB_PROF_ID_F_RAT_FRQ_PRIO, /* 11.3.105 Subscriber Profile ID for RAT/Frequency priority */
- DE_BSSGP_REQ_FOR_INTER_RAT_HO_INFO, /* 11.3.106 Request for Inter-RAT Handover Info */
- DE_BSSGP_RELIABLE_INTER_RAT_HO_INF, /* 11.3.107 Reliable Inter-RAT Handover Info */
- DE_BSSGP_SON_TRANSFER_APP_ID, /* 11.3.108 SON Transfer Application Identity */
- DE_BSSGP_CSG_ID, /* 11.3.109 CSG Identifier */
- DE_BSSGP_NONE /* NONE */
+ DE_BSSGP_ALIGNMENT_OCTETS, /* 11.3.1 0x00 Alignment octets */
+ DE_BSSGP_BMAX_DEFAULT_MS, /* 11.3.2 0x01 Bmax default MS */
+ DE_BSSGP_BSS_AREA_IND, /* 11.3.3 0x02 BSS Area Indication */
+ DE_BSSGP_BUCKET_LEAK_RATE, /* 11.3.4 0x03 Bucket Leak Rate (R) */
+ DE_BSSGP_BVCI, /* 11.3.6 0x04 BVCI (BSSGP Virtual Connection Identifier) */
+ DE_BSSGP_BVC_BUCKET_SIZE, /* 11.3.5 0x05 BVC Bucket Size */
+ DE_BSSGP_BVC_MEAS, /* 11.3.7 0x06 BVC Measurement */
+ DE_BSSGP_CAUSE, /* 11.3.8 0x07 Cause */
+ DE_BSSGP_CELL_ID, /* 11.3.9 0x08 Cell Identifier */
+ DE_BSSGP_CHLN_NEEDED, /* 11.3.10 0x09 Channel needed */
+ DE_BBSGP_DRX_PARAM, /* 11.3.11 0x0a DRX Parameters GSM_A_PDU_TYPE_GM, DE_DRX_PARAM */
+ DE_BBSGP_EMLPP_PRIO, /* 11.3.12 0x0b eMLPP-Priority GSM_A_PDU_TYPE_BSSMAP, BE_EMLPP_PRIO*/
+ DE_BSSGP_FLUSH_ACTION, /* 11.3.13 0x0c Flush Action */
+ DE_BSSGP_IMSI, /* 11.3.14 0x0d IMSI */
+ DE_BSSGP_LLC_PDU, /* 11.3.15 0x0e LLC-PDU */
+ DE_BSSGP_LLC_FRAMES_DISC, /* 11.3.16 0x0f LLC Frames Discarded */
+ DE_BSSGP_LAI , /* 11.3.17 0x10 Location Area GSM_A_PDU_TYPE_COMMON, DE_LAI*/
+ DE_BSSGP_MID, /* 11.3.20 0x11 Mobile Id GSM_A_PDU_TYPE_COMMON, DE_MID*/
+ DE_BSSGP_MS_BUCKET_SIZE, /* 11.3.21 0x12 MS Bucket Size */
+ DE_BSSGP_MS_RAD_ACC_CAP, /* 11.3.22 0x13 MS Radio Access Capability GSM_A_PDU_TYPE_GM, DE_MS_RAD_ACC_CAP*/
+ DE_BSSGP_OMC_ID, /* 11.3.23 0x14 OMC Id */
+ DE_BSSGP_PDU_IN_ERROR, /* 11.3.24 0x15 PDU In Error */
+ DE_BSSGP_PDU_LIFETIME, /* 11.3.25 0x16 PDU Lifetime */
+ DE_BSSP_PRIORITY, /* 11.3.27 0x17 Priority */
+ DE_BSSGP_QOS_PROFILE, /* 11.3.28 0x18 QoS Profile */
+ DE_BSSGP_RA_CAUSE, /* 11.3.29 0x19 Radio Cause */
+ DE_BSSGP_RA_CAP_UPD_CAUSE, /* 11.3.30 0x1a RA-Cap-UPD-Cause */
+ DE_BSSGP_RAI, /* 11.3.31 0x1b Routeing Area GSM_A_PDU_TYPE_GM, DE_RAI*/
+ DE_BSSGP_R_DEFAULT_MS, /* 11.3.32 0x1c R_default_MS */
+ DE_BBSGP_SUSPEND_REF_NO, /* 11.3.33 0x1d Suspend Reference Number */
+ DE_BSSGP_TAG, /* 11.3.34 0x1e Tag */
+ DE_BSSGP_TLLI, /* 11.3.35 0x1f Temporary logical link Identity (TLLI) GSM_A_PDU_TYPE_RR, DE_RR_TLLI*/
+ DE_BSSGP_TMSI_PTMSI, /* 11.3.36 0x20 Temporary Mobile Subscriber Identity (TMSI) GSM_A_PDU_TYPE_RR, DE_RR_TMSI_PTMSI*/
+ DE_BSSGP_TRACE_REF, /* 11.3.37 0x21 Trace Reference */
+ DE_BSSGP_TRACE_TYPE, /* 11.3.38 0x22 Trace Type */
+ DE_BSSGP_TRANSACTION_ID, /* 11.3.39 0x23 Transaction Id */
+ DE_BSSGP_TRIGGER_ID, /* 11.3.40 0x24 Trigger Id */
+ DE_BSSGP_NO_OF_OCT_AFFECTED, /* 11.3.41 0x25 Number of octets affected */
+ DE_BSSGP_LSA_ID_LIST, /* 11.3.18 0x26 LSA Identifier List GSM_A_PDU_TYPE_BSSMAP, BE_LSA_ID_LIST*/
+ DE_BSSGP_LSA_INFO, /* 11.3.19 0x27 LSA Information GSM_A_PDU_TYPE_BSSMAP, BE_LSA_INFO */
+ DE_BSSGP_ACKET_FLOW_ID, /* 11.3.42 0x28 Packet Flow Identifier (PFI) GSM_A_PDU_TYPE_GM, DE_PACKET_FLOW_ID*/
+ DE_BSSGP_GPRS_TIMER, /* 11.3.44 0x29 GPRS Timer */
+ DE_BSSGP_QOS, /* 11.3.43 0x3a Aggregate BSS QoS Profile GSM_A_PDU_TYPE_GM, DE_QOS*/
+ DE_BSSGP_FEATURE_BITMAP, /* 11.3.45 0x3b Feature Bitmap */
+ DE_BSSGP_BUCKET_FULL_RATIO, /* 11.3.46 0x3c Bucket Full Ratio */
+ DE_BSSGP_SERV_UTRAN_CCO, /* 11.3.47 0x3d Service UTRAN CCO */
+ DE_BSSGP_NSEI, /* 11.3.48 0x3e NSEI (Network Service Entity Identifier) */
+ DE_BSSGP_RRLP_APDU, /* 11.3.49 RRLP APDU */
+ DE_BSSGP_RRLP_FLAGS, /* 11.3.60 RRLP Flags */
+ DE_BSSGP_RIM_APP_ID, /* 11.3.61 RIM Application Identity */
+ DE_BSSGP_RIM_SEQ_NO, /* 11.3.62 RIM Sequence Number */
+ DE_BSSGP_RAN_INF_REQUEST_RIM_CONT, /* 11.3.62a.1 RAN-INFORMATION-REQUEST RIM Container */
+ DE_BSSGP_RAN_INF_RIM_CONT, /* 11.3.62a.2 RAN-INFORMATION RIM Container */
+ DE_BSSGP_RAN_INFORMATION_ACK_RIM_CONT, /* 11.3.62a.3 RAN-INFORMATION-ACK RIM Container */
+ DE_BSSGP_RAN_INFORMATION_ERROR_RIM_CONT, /* 11.3.62a.4 RAN-INFORMATION-ERROR RIM Container */
+ DE_BSSGP_RAN_INF_APP_ERROR_RIM_CONT, /* 11.3.62a.5 RAN-INFORMATION-APPLICATION-ERROR RIM Container */
+ DE_BSSGP_RAN_INFORMATION_REQUEST_APP_CONT, /* 11.3.63.1 RAN-INFORMATION-REQUEST Application Container */
+ DE_BSSGP_RAN_INFORMATION_APP_CONT_UNIT, /* 11.3.63.2 RAN-INFORMATION Application Container Unit */
+ DE_BSSGP_RAN_APP_ERROR_CONT, /* 11.3.64 Application Error Container */
+ DE_BSSGP_RIM_PDU_INDICATIONS, /* 11.3.65 RIM PDU Indications */
+ DE_BSSGP_RIM_PROTO_VER_NO, /* 11.3.67 RIM Protocol Version Number */
+
+ 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 */
+
+ DE_BSSGP_TMGI, /* 11.3.77 TMGI (Temporary Mobile Group Identity) GSM_A_PDU_TYPE_GM, DE_TMGI*/
+ DE_BSSGP_MBMS_STOP_CAUSE, /* 11.3.78 MBMS Stop Cause */
+ 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 */
+ DE_BSSGP_PFCS_TO_BE_SET_UP_LIST, /* 11.3.82 PFCs to be set-up list */
+ DE_BSSGP_LIST_OF_SETUP_PFCS, /* 11.3.83 List of set-up PFCs */
+ DE_BSSGP_EXT_FEATURE_BITMAP, /* 11.3.84 Extended Feature Bitmap */
+ DE_BSSGP_SRC_TO_TRG_TRANSP_CONT, /* 11.3.85 Source to Target Transparent Container */
+ DE_BSSGP_TRG_TO_SRC_TRANSP_CONT, /* 11.3.86 Target to Source Transparent Container */
+ BE_BSSGP_RNC_ID, /* 11.3.87 RNC Identifier */
+ 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 */
+ DE_BSSGP_SIPSI_CONTAINER, /* 11.3.95b SI/PSI Container */
+ DE_BSSGP_ACTIVE_PFCS_LIST, /* 11.3.95c Active PFCs List */
+ DE_BSSGP_VELOCITY_DATA, /* 11.3.96 Velocity Data */
+ DE_BBSGP_DTM_HO_CMD, /* 11.3.97 DTM Handover Command */
+ DE_BSSGP_CS_INDICATION, /* 11.3.98 CS Indication */
+ DE_BSSGP_FLOW_CONTROL_GRAN, /* 11.3.102 Flow Control Granularity */
+ DE_BSSGP_ENB_ID, /* 11.3.103 eNB Identifier */
+ DE_BSSGP_E_UTRAN_INTER_RAT_HO_INFO, /* 11.3.104 E-UTRAN Inter RAT Handover Info */
+ DE_BSSGP_SUB_PROF_ID_F_RAT_FRQ_PRIO, /* 11.3.105 Subscriber Profile ID for RAT/Frequency priority */
+ DE_BSSGP_REQ_FOR_INTER_RAT_HO_INFO, /* 11.3.106 Request for Inter-RAT Handover Info */
+ DE_BSSGP_RELIABLE_INTER_RAT_HO_INF, /* 11.3.107 Reliable Inter-RAT Handover Info */
+ DE_BSSGP_SON_TRANSFER_APP_ID, /* 11.3.108 SON Transfer Application Identity */
+ DE_BSSGP_CSG_ID, /* 11.3.109 CSG Identifier */
+ DE_BSSGP_NONE /* NONE */
}
bssgp_elem_idx_t;
guint16 (*bssgp_elem_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len, gchar *add_string, int string_len) = {
- de_bssgp_aligment_octets, /* 11.3.1 0x00 Alignment octets */
- de_bssgp_bmax_default_ms, /* 11.3.2 0x01 Bmax default MS */
- de_bssgp_bss_area_ind, /* 11.3.3 0x02 BSS Area Indication */
- de_bssgp_bucket_leak_rate, /* 11.3.4 0x03 Bucket Leak Rate (R) */
- de_bssgp_bvci, /* 11.3.6 0x04 BVCI (BSSGP Virtual Connection Identifier) */
- de_bssgp_bvc_bucket_size, /* 11.3.5 0x05 BVC Bucket Size */
- de_bssgp_bvc_meas, /* 11.3.7 0x06 BVC Measurement */
- de_bssgp_cause, /* 11.3.8 0x07 Cause */
- de_bssgp_cell_id, /* 11.3.9 0x08 Cell Identifier */
- de_bssgp_chnl_needed, /* 11.3.10 0x09 Channel needed */
- NULL, /* 11.3.11 0x0a DRX Parameters */
- NULL, /* 11.3.12 0x0b eMLPP-Priority */
- de_bssgp_flush_action, /* 11.3.13 0x0c Flush Action */
- de_mid, /* 11.3.14 0x0d IMSI */
- de_bssgp_llc_pdu, /* 11.3.15 0x0e LLC-PDU */
- de_bssgp_llc_frames_disc, /* 11.3.16 0x0f LLC Frames Discarded */
- NULL, /* 11.3.17 0x10 Location Area */
- NULL, /* 11.3.20 0x11 Mobile Id */
- de_bssgp_ms_bucket_size, /* 11.3.21 0x12 MS Bucket Size */
- NULL, /* 11.3.22 0x13 MS Radio Access Capability */
- de_bssgp_omc_id, /* 11.3.23 0x14 OMC Id */
- de_bssgp_pdu_in_error, /* 11.3.24 0x15 PDU In Error */
- de_bssgp_pdu_lifetime, /* 11.3.25 0x16 PDU Lifetime */
- NULL, /* 11.3.27 0x17 Priority */
- de_bssgp_qos_profile, /* 11.3.28 0x18 QoS Profile */
- de_bssgp_ra_cause, /* 11.3.29 0x19 Radio Cause */
- de_bssgp_ra_cap_upd_cause, /* 11.3.30 0x1a RA-Cap-UPD-Cause */
- NULL, /* 11.3.31 0x1b Routeing Area */
- de_bssgp_r_default_ms, /* 11.3.32 0x1c R_default_MS */
- de_bssgp_suspend_ref_no, /* 11.3.33 0x1d Suspend Reference Number */
- de_bssgp_tag, /* 11.3.34 0x1e Tag */
- NULL, /* 11.3.35 0x1f Temporary logical link Identity (TLLI) */
- NULL, /* 11.3.36 0x20 Temporary Mobile Subscriber Identity (TMSI) */
- de_bssgp_trace_ref, /* 11.3.37 0x21 Trace Reference */
- de_bssgp_trace_type, /* 11.3.38 0x22 Trace Type */
- de_bssgp_transaction_id, /* 11.3.39 0x23 Transaction Id */
- de_bssgp_trigger_id, /* 11.3.40 0x24 Trigger Id */
- de_bssgp_no_of_oct_affected, /* 11.3.41 0x25 Number of octets affected */
- NULL, /* 11.3.18 0x26 LSA Identifier List GSM_A_PDU_TYPE_BSSMAP, BE_LSA_ID_LIST*/
- NULL, /* 11.3.19 0x27 LSA Information */
- NULL, /* 11.3.42 0x28 Packet Flow Identifier (PFI) */
- de_bssgp_gprs_timer, /* 11.3.44 0x29 GPRS Timer */
- NULL, /* 11.3.43 0x3a Aggregate BSS QoS Profile */
- de_bssgp_feature_bitmap, /* 11.3.45 0x3b Feature Bitmap */
- de_bssgp_bucket_full_ratio, /* 11.3.46 0x3c Bucket Full Ratio */
- de_bssgp_serv_utran_cco, /* 11.3.47 0x3d Service UTRAN CCO */
- de_bssgp_nsei, /* 11.3.48 0x3e NSEI (Network Service Entity Identifier) */
- de_bssgp_rrlp_apdu, /* 11.3.49 RRLP APDU */
- de_bssgp_rrlp_flags, /* 11.3.60 RRLP Flags */
- de_bssgp_rim_app_id, /* 11.3.61 RIM Application Identity */
- de_bssgp_rim_seq_no, /* 11.3.62 RIM Sequence Number */
- de_bssgp_ran_inf_request_rim_cont, /* 11.3.62a.1 RAN-INFORMATION-REQUEST RIM Container */
- de_bssgp_ran_inf_rim_cont, /* 11.3.62a.2 RAN-INFORMATION RIM Container */
- de_bssgp_ran_inf_ack_rim_cont, /* 11.3.62a.3 RAN-INFORMATION-ACK RIM Container */
- de_bssgp_ran_inf_error_rim_cont, /* 11.3.62a.4 RAN-INFORMATION-ERROR RIM Container */
- de_bssgp_ran_inf_app_error_rim_cont, /* 11.3.62a.5 RAN-INFORMATION-APPLICATION-ERROR RIM Container */
-
- de_bssgp_ran_information_request_app_cont, /* 11.3.63.1 RAN-INFORMATION-REQUEST Application Container */
- de_bssgp_ran_information_app_cont_unit, /* 11.3.63.2 RAN-INFORMATION Application Container Unit */
- de_bssgp_ran_app_error_cont, /* 11.3.64 Application Error Container */
- de_bssgp_rim_pdu_indications, /* 11.3.65 RIM PDU Indications */
- de_bssgp_rim_proto_ver_no, /* 11.3.67 RIM Protocol Version Number */
-
- 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_mbms_stop_cause, /* 11.3.78 MBMS Stop Cause */
- 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 */
- de_bssgp_pfcs_to_be_set_up_list, /* 11.3.82 PFCs to be set-up list */
- de_bssgp_list_of_setup_pfcs, /* 11.3.83 List of set-up PFCs */
- de_bssgp_ext_feature_bitmap, /* 11.3.84 Extended Feature Bitmap */
- de_bssgp_src_to_trg_transp_cont, /* 11.3.85 Source to Target Transparent Container */
- de_bssgp_trg_to_src_transp_cont, /* 11.3.86 Target to Source Transparent Container */
- de_bssgp_rnc_identifier, /* 11.3.87 RNC Identifier */
- 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 */
- de_bssgp_sipsi_container, /* 11.3.95b SI/PSI Container */
- de_bssgp_active_pfcs_list, /* 11.3.95c Active PFCs List */
- de_bssgp_velocity_data, /* 11.3.96 Velocity Data */
- de_bssgp_dtm_ho_cmd, /* 11.3.97 DTM Handover Command */
- de_bssgp_cs_indication, /* 11.3.98 CS Indication */
- de_bssgp_flow_control_gran, /* 11.3.102 Flow Control Granularity */
- de_bssgp_enb_id, /* 11.3.103 eNB Identifier */
- de_bssgp_e_utran_inter_rat_ho_info, /* 11.3.104 E-UTRAN Inter RAT Handover Info */
- de_bssgp_sub_prof_id_f_rat_freq_prio, /* 11.3.105 Subscriber Profile ID for RAT/Frequency priority */
- de_bssgp_reliable_inter_rat_ho_inf, /* 11.3.107 Reliable Inter-RAT Handover Info */
- de_bssgp_req_for_inter_rat_ho_inf, /* 11.3.106 Request for Inter-RAT Handover Info */
- de_bssgp_son_transfer_app_id, /* 11.3.108 SON Transfer Application Identity */
- de_bssgp_csg_id, /* 11.3.109 CSG Identifier */
-
- NULL, /* NONE */
+ de_bssgp_aligment_octets, /* 11.3.1 0x00 Alignment octets */
+ de_bssgp_bmax_default_ms, /* 11.3.2 0x01 Bmax default MS */
+ de_bssgp_bss_area_ind, /* 11.3.3 0x02 BSS Area Indication */
+ de_bssgp_bucket_leak_rate, /* 11.3.4 0x03 Bucket Leak Rate (R) */
+ de_bssgp_bvci, /* 11.3.6 0x04 BVCI (BSSGP Virtual Connection Identifier) */
+ de_bssgp_bvc_bucket_size, /* 11.3.5 0x05 BVC Bucket Size */
+ de_bssgp_bvc_meas, /* 11.3.7 0x06 BVC Measurement */
+ de_bssgp_cause, /* 11.3.8 0x07 Cause */
+ de_bssgp_cell_id, /* 11.3.9 0x08 Cell Identifier */
+ de_bssgp_chnl_needed, /* 11.3.10 0x09 Channel needed */
+ NULL, /* 11.3.11 0x0a DRX Parameters */
+ NULL, /* 11.3.12 0x0b eMLPP-Priority */
+ de_bssgp_flush_action, /* 11.3.13 0x0c Flush Action */
+ de_mid, /* 11.3.14 0x0d IMSI */
+ de_bssgp_llc_pdu, /* 11.3.15 0x0e LLC-PDU */
+ de_bssgp_llc_frames_disc, /* 11.3.16 0x0f LLC Frames Discarded */
+ NULL, /* 11.3.17 0x10 Location Area */
+ NULL, /* 11.3.20 0x11 Mobile Id */
+ de_bssgp_ms_bucket_size, /* 11.3.21 0x12 MS Bucket Size */
+ NULL, /* 11.3.22 0x13 MS Radio Access Capability */
+ de_bssgp_omc_id, /* 11.3.23 0x14 OMC Id */
+ de_bssgp_pdu_in_error, /* 11.3.24 0x15 PDU In Error */
+ de_bssgp_pdu_lifetime, /* 11.3.25 0x16 PDU Lifetime */
+ NULL, /* 11.3.27 0x17 Priority */
+ de_bssgp_qos_profile, /* 11.3.28 0x18 QoS Profile */
+ de_bssgp_ra_cause, /* 11.3.29 0x19 Radio Cause */
+ de_bssgp_ra_cap_upd_cause, /* 11.3.30 0x1a RA-Cap-UPD-Cause */
+ NULL, /* 11.3.31 0x1b Routeing Area */
+ de_bssgp_r_default_ms, /* 11.3.32 0x1c R_default_MS */
+ de_bssgp_suspend_ref_no, /* 11.3.33 0x1d Suspend Reference Number */
+ de_bssgp_tag, /* 11.3.34 0x1e Tag */
+ NULL, /* 11.3.35 0x1f Temporary logical link Identity (TLLI) */
+ NULL, /* 11.3.36 0x20 Temporary Mobile Subscriber Identity (TMSI) */
+ de_bssgp_trace_ref, /* 11.3.37 0x21 Trace Reference */
+ de_bssgp_trace_type, /* 11.3.38 0x22 Trace Type */
+ de_bssgp_transaction_id, /* 11.3.39 0x23 Transaction Id */
+ de_bssgp_trigger_id, /* 11.3.40 0x24 Trigger Id */
+ de_bssgp_no_of_oct_affected, /* 11.3.41 0x25 Number of octets affected */
+ NULL, /* 11.3.18 0x26 LSA Identifier List GSM_A_PDU_TYPE_BSSMAP, BE_LSA_ID_LIST*/
+ NULL, /* 11.3.19 0x27 LSA Information */
+ NULL, /* 11.3.42 0x28 Packet Flow Identifier (PFI) */
+ de_bssgp_gprs_timer, /* 11.3.44 0x29 GPRS Timer */
+ NULL, /* 11.3.43 0x3a Aggregate BSS QoS Profile */
+ de_bssgp_feature_bitmap, /* 11.3.45 0x3b Feature Bitmap */
+ de_bssgp_bucket_full_ratio, /* 11.3.46 0x3c Bucket Full Ratio */
+ de_bssgp_serv_utran_cco, /* 11.3.47 0x3d Service UTRAN CCO */
+ de_bssgp_nsei, /* 11.3.48 0x3e NSEI (Network Service Entity Identifier) */
+ de_bssgp_rrlp_apdu, /* 11.3.49 RRLP APDU */
+ de_bssgp_rrlp_flags, /* 11.3.60 RRLP Flags */
+ de_bssgp_rim_app_id, /* 11.3.61 RIM Application Identity */
+ de_bssgp_rim_seq_no, /* 11.3.62 RIM Sequence Number */
+ de_bssgp_ran_inf_request_rim_cont, /* 11.3.62a.1 RAN-INFORMATION-REQUEST RIM Container */
+ de_bssgp_ran_inf_rim_cont, /* 11.3.62a.2 RAN-INFORMATION RIM Container */
+ de_bssgp_ran_inf_ack_rim_cont, /* 11.3.62a.3 RAN-INFORMATION-ACK RIM Container */
+ de_bssgp_ran_inf_error_rim_cont, /* 11.3.62a.4 RAN-INFORMATION-ERROR RIM Container */
+ de_bssgp_ran_inf_app_error_rim_cont, /* 11.3.62a.5 RAN-INFORMATION-APPLICATION-ERROR RIM Container */
+
+ de_bssgp_ran_information_request_app_cont, /* 11.3.63.1 RAN-INFORMATION-REQUEST Application Container */
+ de_bssgp_ran_information_app_cont_unit, /* 11.3.63.2 RAN-INFORMATION Application Container Unit */
+ de_bssgp_ran_app_error_cont, /* 11.3.64 Application Error Container */
+ de_bssgp_rim_pdu_indications, /* 11.3.65 RIM PDU Indications */
+ de_bssgp_rim_proto_ver_no, /* 11.3.67 RIM Protocol Version Number */
+
+ 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_mbms_stop_cause, /* 11.3.78 MBMS Stop Cause */
+ 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 */
+ de_bssgp_pfcs_to_be_set_up_list, /* 11.3.82 PFCs to be set-up list */
+ de_bssgp_list_of_setup_pfcs, /* 11.3.83 List of set-up PFCs */
+ de_bssgp_ext_feature_bitmap, /* 11.3.84 Extended Feature Bitmap */
+ de_bssgp_src_to_trg_transp_cont, /* 11.3.85 Source to Target Transparent Container */
+ de_bssgp_trg_to_src_transp_cont, /* 11.3.86 Target to Source Transparent Container */
+ de_bssgp_rnc_identifier, /* 11.3.87 RNC Identifier */
+ 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 */
+ de_bssgp_sipsi_container, /* 11.3.95b SI/PSI Container */
+ de_bssgp_active_pfcs_list, /* 11.3.95c Active PFCs List */
+ de_bssgp_velocity_data, /* 11.3.96 Velocity Data */
+ de_bssgp_dtm_ho_cmd, /* 11.3.97 DTM Handover Command */
+ de_bssgp_cs_indication, /* 11.3.98 CS Indication */
+ de_bssgp_flow_control_gran, /* 11.3.102 Flow Control Granularity */
+ de_bssgp_enb_id, /* 11.3.103 eNB Identifier */
+ de_bssgp_e_utran_inter_rat_ho_info, /* 11.3.104 E-UTRAN Inter RAT Handover Info */
+ de_bssgp_sub_prof_id_f_rat_freq_prio, /* 11.3.105 Subscriber Profile ID for RAT/Frequency priority */
+ de_bssgp_reliable_inter_rat_ho_inf, /* 11.3.107 Reliable Inter-RAT Handover Info */
+ de_bssgp_req_for_inter_rat_ho_inf, /* 11.3.106 Request for Inter-RAT Handover Info */
+ de_bssgp_son_transfer_app_id, /* 11.3.108 SON Transfer Application Identity */
+ de_bssgp_csg_id, /* 11.3.109 CSG Identifier */
+
+ NULL, /* NONE */
};
/*
- * 11.3.62a RIM Container
- * 11.3.62a.0 General
- * 11.3.62a.1 RAN-INFORMATION-REQUEST RIM Container
+ * 11.3.62a RIM Container
+ * 11.3.62a.0 General
+ * 11.3.62a.1 RAN-INFORMATION-REQUEST RIM Container
*/
static guint16
de_bssgp_ran_inf_request_rim_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* RAN-INFORMATION-REQUEST RIM Container Contents coded as
- * defined in table 11.3.62a.1b
- */
- /* RIM Application Identity RIM Application Identity/11.3.61 M TLV 3 */
- ELEM_IN_ELEM_MAND_TELV(BSSGP_IEI_RIM_APP_ID, BSSGP_PDU_TYPE, DE_BSSGP_RIM_APP_ID, NULL);
- /* RIM Sequence Number RIM Sequence Number/11.3.62 M TLV 6 */
- ELEM_IN_ELEM_MAND_TELV(BSSGP_IEI_RIM_SEQUENCE_NUMBER, BSSGP_PDU_TYPE, DE_BSSGP_RIM_SEQ_NO, NULL);
- /* RIM PDU Indications RIM PDU Indications/11.3.65 M TLV 3 */
- ELEM_IN_ELEM_MAND_TELV(BSSGP_IEI_RIM_PDU_INDICATIONS, BSSGP_PDU_TYPE, DE_BSSGP_RIM_PDU_INDICATIONS, NULL);
- /* RIM Protocol Version Number RIM Protocol Version Number/11.3.67 O TLV 3 */
- ELEM_IN_ELEM_OPT_TELV(BSSGP_IEI_RIM_PROTOCOL_VERSION, BSSGP_PDU_TYPE, DE_BSSGP_RIM_PROTO_VER_NO, NULL);
- /* Application Container (note 1) RAN-INFORMATION-REQUEST Application Container/11.3.63.1 C TLV 4-? */
- ELEM_IN_ELEM_OPT_TELV(BSSGP_IEI_RAN_INF_REQUEST_APP_CONTAINER, BSSGP_PDU_TYPE, DE_BSSGP_RAN_INFORMATION_REQUEST_APP_CONT, NULL);
- /* SON Transfer Application Identity (note 2) SON Transfer Application Identity/11.3.108 C TLV 3-m */
- ELEM_IN_ELEM_OPT_TELV(0x84, BSSGP_PDU_TYPE, DE_BSSGP_SON_TRANSFER_APP_ID, NULL);
+ /* RAN-INFORMATION-REQUEST RIM Container Contents coded as
+ * defined in table 11.3.62a.1b
+ */
+ /* RIM Application Identity RIM Application Identity/11.3.61 M TLV 3 */
+ ELEM_IN_ELEM_MAND_TELV(BSSGP_IEI_RIM_APP_ID, BSSGP_PDU_TYPE, DE_BSSGP_RIM_APP_ID, NULL);
+ /* RIM Sequence Number RIM Sequence Number/11.3.62 M TLV 6 */
+ ELEM_IN_ELEM_MAND_TELV(BSSGP_IEI_RIM_SEQUENCE_NUMBER, BSSGP_PDU_TYPE, DE_BSSGP_RIM_SEQ_NO, NULL);
+ /* RIM PDU Indications RIM PDU Indications/11.3.65 M TLV 3 */
+ ELEM_IN_ELEM_MAND_TELV(BSSGP_IEI_RIM_PDU_INDICATIONS, BSSGP_PDU_TYPE, DE_BSSGP_RIM_PDU_INDICATIONS, NULL);
+ /* RIM Protocol Version Number RIM Protocol Version Number/11.3.67 O TLV 3 */
+ ELEM_IN_ELEM_OPT_TELV(BSSGP_IEI_RIM_PROTOCOL_VERSION, BSSGP_PDU_TYPE, DE_BSSGP_RIM_PROTO_VER_NO, NULL);
+ /* Application Container (note 1) RAN-INFORMATION-REQUEST Application Container/11.3.63.1 C TLV 4-? */
+ ELEM_IN_ELEM_OPT_TELV(BSSGP_IEI_RAN_INF_REQUEST_APP_CONTAINER, BSSGP_PDU_TYPE, DE_BSSGP_RAN_INFORMATION_REQUEST_APP_CONT, NULL);
+ /* SON Transfer Application Identity (note 2) SON Transfer Application Identity/11.3.108 C TLV 3-m */
+ ELEM_IN_ELEM_OPT_TELV(0x84, BSSGP_PDU_TYPE, DE_BSSGP_SON_TRANSFER_APP_ID, NULL);
- return(curr_offset-offset);
+ return(curr_offset-offset);
}
/*
- * 11.3.62a.2 RAN-INFORMATION RIM Container
+ * 11.3.62a.2 RAN-INFORMATION RIM Container
*/
static guint16
de_bssgp_ran_inf_rim_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* RAN-INFORMATION RIM Container Contents coded as
- * defined in table 11.3.62a.2b
- */
- /* RIM Application Identity RIM Application Identity /11.3.61 M TLV 3 */
- ELEM_IN_ELEM_MAND_TELV(BSSGP_IEI_RIM_APP_ID, BSSGP_PDU_TYPE, DE_BSSGP_RIM_APP_ID, NULL);
- /* RIM Sequence Number RIM Sequence Number /11.3.62 M TLV 6 */
- ELEM_IN_ELEM_MAND_TELV(BSSGP_IEI_RIM_SEQUENCE_NUMBER, BSSGP_PDU_TYPE, DE_BSSGP_RIM_SEQ_NO, NULL);
- /* RIM PDU Indications RIM PDU Indications /11.3.65. M TLV 3 */
- ELEM_IN_ELEM_MAND_TELV(BSSGP_IEI_RIM_PDU_INDICATIONS, BSSGP_PDU_TYPE, DE_BSSGP_RIM_PDU_INDICATIONS, NULL);
- /* RIM Protocol Version Number RIM Protocol Version Number/11.3.67 O TLV 3 */
- ELEM_IN_ELEM_OPT_TELV(BSSGP_IEI_RIM_PROTOCOL_VERSION, BSSGP_PDU_TYPE, DE_BSSGP_RIM_PROTO_VER_NO, NULL);
- /* Application Container (NOTE 1) RAN-INFORMATION Application Container /11.3.63.2 C (Note 1) TLV 4-? */
- ELEM_IN_ELEM_OPT_TELV(BSSGP_IEI_RAN_INF_APP_CONTAINER, BSSGP_PDU_TYPE, DE_BSSGP_RAN_INFORMATION_APP_CONT_UNIT, NULL);
- /* Application Error Container (NOTE 1) Application Error Container/11.3.64 C (Note 1) TLV n */
- ELEM_IN_ELEM_OPT_TELV(BSSGP_IEI_APPLICATION_ERROR_CONTAINER, BSSGP_PDU_TYPE, DE_BSSGP_RAN_APP_ERROR_CONT, NULL);
- /* SON Transfer Application Identity (note 2) SON Transfer Application Identity/11.3.108 C TLV 3-m */
- ELEM_IN_ELEM_OPT_TELV(0x84, BSSGP_PDU_TYPE, DE_BSSGP_SON_TRANSFER_APP_ID, NULL);
+ /* RAN-INFORMATION RIM Container Contents coded as
+ * defined in table 11.3.62a.2b
+ */
+ /* RIM Application Identity RIM Application Identity /11.3.61 M TLV 3 */
+ ELEM_IN_ELEM_MAND_TELV(BSSGP_IEI_RIM_APP_ID, BSSGP_PDU_TYPE, DE_BSSGP_RIM_APP_ID, NULL);
+ /* RIM Sequence Number RIM Sequence Number /11.3.62 M TLV 6 */
+ ELEM_IN_ELEM_MAND_TELV(BSSGP_IEI_RIM_SEQUENCE_NUMBER, BSSGP_PDU_TYPE, DE_BSSGP_RIM_SEQ_NO, NULL);
+ /* RIM PDU Indications RIM PDU Indications /11.3.65. M TLV 3 */
+ ELEM_IN_ELEM_MAND_TELV(BSSGP_IEI_RIM_PDU_INDICATIONS, BSSGP_PDU_TYPE, DE_BSSGP_RIM_PDU_INDICATIONS, NULL);
+ /* RIM Protocol Version Number RIM Protocol Version Number/11.3.67 O TLV 3 */
+ ELEM_IN_ELEM_OPT_TELV(BSSGP_IEI_RIM_PROTOCOL_VERSION, BSSGP_PDU_TYPE, DE_BSSGP_RIM_PROTO_VER_NO, NULL);
+ /* Application Container (NOTE 1) RAN-INFORMATION Application Container /11.3.63.2 C (Note 1) TLV 4-? */
+ ELEM_IN_ELEM_OPT_TELV(BSSGP_IEI_RAN_INF_APP_CONTAINER, BSSGP_PDU_TYPE, DE_BSSGP_RAN_INFORMATION_APP_CONT_UNIT, NULL);
+ /* Application Error Container (NOTE 1) Application Error Container/11.3.64 C (Note 1) TLV n */
+ ELEM_IN_ELEM_OPT_TELV(BSSGP_IEI_APPLICATION_ERROR_CONTAINER, BSSGP_PDU_TYPE, DE_BSSGP_RAN_APP_ERROR_CONT, NULL);
+ /* SON Transfer Application Identity (note 2) SON Transfer Application Identity/11.3.108 C TLV 3-m */
+ ELEM_IN_ELEM_OPT_TELV(0x84, BSSGP_PDU_TYPE, DE_BSSGP_SON_TRANSFER_APP_ID, NULL);
- return(curr_offset-offset);
+ return(curr_offset-offset);
}
/*
- * 11.3.62a.3 RAN-INFORMATION-ACK RIM Container
+ * 11.3.62a.3 RAN-INFORMATION-ACK RIM Container
*/
static guint16
de_bssgp_ran_inf_ack_rim_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* RAN-INFORMATION-ACK RIM Container Contents coded as
- * defined in table 11.3.62a.3b
- */
- /* RIM Application Identity RIM Application Identity /11.3.61 M TLV 3 */
- ELEM_IN_ELEM_MAND_TELV(BSSGP_IEI_RIM_APP_ID, BSSGP_PDU_TYPE, DE_BSSGP_RIM_APP_ID, NULL);
- /* RIM Sequence Number RIM Sequence Number /11.3.62 M TLV 6 */
- ELEM_IN_ELEM_MAND_TELV(BSSGP_IEI_RIM_SEQUENCE_NUMBER, BSSGP_PDU_TYPE, DE_BSSGP_RIM_SEQ_NO, NULL);
- /* RIM Protocol Version Number RIM Protocol Version Number/11.3.67 O TLV 4 */
- ELEM_IN_ELEM_OPT_TELV(BSSGP_IEI_RIM_PROTOCOL_VERSION, BSSGP_PDU_TYPE, DE_BSSGP_RIM_PROTO_VER_NO, NULL);
- /* SON Transfer Application Identity (note 1) SON Transfer Application Identity/11.3.108 C TLV 3-m */
- ELEM_IN_ELEM_OPT_TELV(0x84, BSSGP_PDU_TYPE, DE_BSSGP_SON_TRANSFER_APP_ID, NULL);
+ /* RAN-INFORMATION-ACK RIM Container Contents coded as
+ * defined in table 11.3.62a.3b
+ */
+ /* RIM Application Identity RIM Application Identity /11.3.61 M TLV 3 */
+ ELEM_IN_ELEM_MAND_TELV(BSSGP_IEI_RIM_APP_ID, BSSGP_PDU_TYPE, DE_BSSGP_RIM_APP_ID, NULL);
+ /* RIM Sequence Number RIM Sequence Number /11.3.62 M TLV 6 */
+ ELEM_IN_ELEM_MAND_TELV(BSSGP_IEI_RIM_SEQUENCE_NUMBER, BSSGP_PDU_TYPE, DE_BSSGP_RIM_SEQ_NO, NULL);
+ /* RIM Protocol Version Number RIM Protocol Version Number/11.3.67 O TLV 4 */
+ ELEM_IN_ELEM_OPT_TELV(BSSGP_IEI_RIM_PROTOCOL_VERSION, BSSGP_PDU_TYPE, DE_BSSGP_RIM_PROTO_VER_NO, NULL);
+ /* SON Transfer Application Identity (note 1) SON Transfer Application Identity/11.3.108 C TLV 3-m */
+ ELEM_IN_ELEM_OPT_TELV(0x84, BSSGP_PDU_TYPE, DE_BSSGP_SON_TRANSFER_APP_ID, NULL);
- return(curr_offset-offset);
+ return(curr_offset-offset);
}
/*
- * 11.3.62a.4 RAN-INFORMATION-ERROR RIM Container
+ * 11.3.62a.4 RAN-INFORMATION-ERROR RIM Container
*/
static guint16
de_bssgp_ran_inf_error_rim_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* RAN-INFORMATION-ERROR RIM Container Contents coded as
- * defined in table 11.3.62a.4b
- */
- /* RIM Application Identity RIM Application Identity /11.3.61 M TLV 3 */
- ELEM_IN_ELEM_MAND_TELV(BSSGP_IEI_RIM_APP_ID, BSSGP_PDU_TYPE, DE_BSSGP_RIM_APP_ID, NULL);
- /* RIM Cause Cause/11.3.8 M TLV 3 */
- ELEM_IN_ELEM_MAND_TELV(BSSGP_IEI_CAUSE,BSSGP_PDU_TYPE, DE_BSSGP_CAUSE, " - RIM");
- /* RIM Sequence Number RIM Sequence Number /11.3.62 M TLV 6 */
- ELEM_IN_ELEM_MAND_TELV(BSSGP_IEI_RIM_SEQUENCE_NUMBER, BSSGP_PDU_TYPE, DE_BSSGP_RIM_SEQ_NO, NULL);
- /* RIM Protocol Version Number RIM Protocol Version Number/11.3.67 O TLV 3 */
- ELEM_IN_ELEM_OPT_TELV(BSSGP_IEI_RIM_PROTOCOL_VERSION, BSSGP_PDU_TYPE, DE_BSSGP_RIM_PROTO_VER_NO, NULL);
- /* PDU in Error PDU in Error/11.3.24 M TLV 3-? */
- ELEM_IN_ELEM_OPT_TELV(0x15, BSSGP_PDU_TYPE, DE_BSSGP_PDU_IN_ERROR , NULL);
- /* SON Transfer Application Identity (note 1) SON Transfer Application Identity/11.3.108 C TLV 3-m */
- ELEM_IN_ELEM_OPT_TELV(0x84, BSSGP_PDU_TYPE, DE_BSSGP_SON_TRANSFER_APP_ID, NULL);
+ /* RAN-INFORMATION-ERROR RIM Container Contents coded as
+ * defined in table 11.3.62a.4b
+ */
+ /* RIM Application Identity RIM Application Identity /11.3.61 M TLV 3 */
+ ELEM_IN_ELEM_MAND_TELV(BSSGP_IEI_RIM_APP_ID, BSSGP_PDU_TYPE, DE_BSSGP_RIM_APP_ID, NULL);
+ /* RIM Cause Cause/11.3.8 M TLV 3 */
+ ELEM_IN_ELEM_MAND_TELV(BSSGP_IEI_CAUSE,BSSGP_PDU_TYPE, DE_BSSGP_CAUSE, " - RIM");
+ /* RIM Sequence Number RIM Sequence Number /11.3.62 M TLV 6 */
+ ELEM_IN_ELEM_MAND_TELV(BSSGP_IEI_RIM_SEQUENCE_NUMBER, BSSGP_PDU_TYPE, DE_BSSGP_RIM_SEQ_NO, NULL);
+ /* RIM Protocol Version Number RIM Protocol Version Number/11.3.67 O TLV 3 */
+ ELEM_IN_ELEM_OPT_TELV(BSSGP_IEI_RIM_PROTOCOL_VERSION, BSSGP_PDU_TYPE, DE_BSSGP_RIM_PROTO_VER_NO, NULL);
+ /* PDU in Error PDU in Error/11.3.24 M TLV 3-? */
+ ELEM_IN_ELEM_OPT_TELV(0x15, BSSGP_PDU_TYPE, DE_BSSGP_PDU_IN_ERROR , NULL);
+ /* SON Transfer Application Identity (note 1) SON Transfer Application Identity/11.3.108 C TLV 3-m */
+ ELEM_IN_ELEM_OPT_TELV(0x84, BSSGP_PDU_TYPE, DE_BSSGP_SON_TRANSFER_APP_ID, NULL);
- return(curr_offset-offset);
+ return(curr_offset-offset);
}
/*
- * 11.3.62a.5 RAN-INFORMATION-APPLICATION-ERROR RIM Container
+ * 11.3.62a.5 RAN-INFORMATION-APPLICATION-ERROR RIM Container
*/
static guint16
de_bssgp_ran_inf_app_error_rim_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* RRAN-INFORMATION-APPLICATION-ERROR RIM Container
- * Contents coded as defined in table 11.3.62a.5b
- */
- /* RIM Application Identity RIM Application Identity /11.3.61 M TLV 3 */
- ELEM_IN_ELEM_MAND_TELV(BSSGP_IEI_RIM_APP_ID, BSSGP_PDU_TYPE, DE_BSSGP_RIM_APP_ID, NULL);
- /* RIM Sequence Number RIM Sequence Number /11.3.62 M TLV 6 */
- ELEM_IN_ELEM_MAND_TELV(BSSGP_IEI_RIM_SEQUENCE_NUMBER, BSSGP_PDU_TYPE, DE_BSSGP_RIM_SEQ_NO, NULL);
- /* RIM PDU Indications RIM PDU Indications /11.3.65. M TLV 3 */
- ELEM_IN_ELEM_MAND_TELV(BSSGP_IEI_RIM_PDU_INDICATIONS, BSSGP_PDU_TYPE, DE_BSSGP_RIM_PDU_INDICATIONS, NULL);
- /* RIM Protocol Version Number RIM Protocol Version Number/11.3.67 O TLV 3 */
- ELEM_IN_ELEM_OPT_TELV(BSSGP_IEI_RIM_PROTOCOL_VERSION, BSSGP_PDU_TYPE, DE_BSSGP_RIM_PROTO_VER_NO, NULL);
- /* Application Error Container Application Error Container/11.3.64 M TLV n */
- ELEM_IN_ELEM_MAND_TELV(BSSGP_IEI_APPLICATION_ERROR_CONTAINER, BSSGP_PDU_TYPE, DE_BSSGP_RAN_APP_ERROR_CONT, NULL);
- /* SON Transfer Application Identity (note 1) SON Transfer Application Identity/11.3.108 C TLV 3-m */
- ELEM_IN_ELEM_OPT_TELV(0x84, BSSGP_PDU_TYPE, DE_BSSGP_SON_TRANSFER_APP_ID, NULL);
+ /* RRAN-INFORMATION-APPLICATION-ERROR RIM Container
+ * Contents coded as defined in table 11.3.62a.5b
+ */
+ /* RIM Application Identity RIM Application Identity /11.3.61 M TLV 3 */
+ ELEM_IN_ELEM_MAND_TELV(BSSGP_IEI_RIM_APP_ID, BSSGP_PDU_TYPE, DE_BSSGP_RIM_APP_ID, NULL);
+ /* RIM Sequence Number RIM Sequence Number /11.3.62 M TLV 6 */
+ ELEM_IN_ELEM_MAND_TELV(BSSGP_IEI_RIM_SEQUENCE_NUMBER, BSSGP_PDU_TYPE, DE_BSSGP_RIM_SEQ_NO, NULL);
+ /* RIM PDU Indications RIM PDU Indications /11.3.65. M TLV 3 */
+ ELEM_IN_ELEM_MAND_TELV(BSSGP_IEI_RIM_PDU_INDICATIONS, BSSGP_PDU_TYPE, DE_BSSGP_RIM_PDU_INDICATIONS, NULL);
+ /* RIM Protocol Version Number RIM Protocol Version Number/11.3.67 O TLV 3 */
+ ELEM_IN_ELEM_OPT_TELV(BSSGP_IEI_RIM_PROTOCOL_VERSION, BSSGP_PDU_TYPE, DE_BSSGP_RIM_PROTO_VER_NO, NULL);
+ /* Application Error Container Application Error Container/11.3.64 M TLV n */
+ ELEM_IN_ELEM_MAND_TELV(BSSGP_IEI_APPLICATION_ERROR_CONTAINER, BSSGP_PDU_TYPE, DE_BSSGP_RAN_APP_ERROR_CONT, NULL);
+ /* SON Transfer Application Identity (note 1) SON Transfer Application Identity/11.3.108 C TLV 3-m */
+ ELEM_IN_ELEM_OPT_TELV(0x84, BSSGP_PDU_TYPE, DE_BSSGP_SON_TRANSFER_APP_ID, NULL);
- return(curr_offset-offset);
+ return(curr_offset-offset);
}
/*
- * 11.3.79 Source BSS to Target BSS Transparent Container
+ * 11.3.79 Source BSS to Target BSS Transparent Container
*/
static guint16
de_bssgp_source_BSS_to_target_BSS_transp_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* Octet 3-? Source BSS to Target BSS Transparent Container Contents coded
- * as defined in table 11.3.79.b
- */
- /* MS Radio Access Capability MS Radio Access Capability/11.3.22 M TLV 7-? */
- ELEM_IN_ELEM_MAND_TELV(BSSGP_IEI_MS_RADIO_ACCESS_CAPABILITY, GSM_A_PDU_TYPE_GM, DE_MS_RAD_ACC_CAP , NULL);
- /* Inter RAT Handover Info Inter RAT Handover Info/11.3.94 O (note 1) TLV 3-? */
- ELEM_IN_ELEM_OPT_TELV(0x73, BSSGP_PDU_TYPE, DE_BSSGP_INTER_RAT_HO_INFO, NULL);
- /* Page Mode Page Mode/11.3.88 O (note 2, note 3) TLV 3 */
- ELEM_IN_ELEM_OPT_TELV(0x6d, BSSGP_PDU_TYPE, DE_BSSGP_PAGE_MODE, NULL);
- /* Container ID Container ID/11.3.89 O (note 2) TLV 3 */
- ELEM_IN_ELEM_OPT_TELV(0x6e, BSSGP_PDU_TYPE, DE_BSSGP_CONTAINER_ID, NULL);
- /* Global TFI Global TFI/11.3.90 O (note 2, note 3) TLV 3 */
- ELEM_IN_ELEM_OPT_TELV(0x6f, BSSGP_PDU_TYPE, DE_BSSGP_GLOBAL_TFI, NULL);
- /* PS Handover Indications PS Handover Indications/11.3.95a O TLV 3 */
- ELEM_IN_ELEM_OPT_TELV(0x75, BSSGP_PDU_TYPE, DE_BSSGP_PS_HO_INDICATIONS, NULL);
- /* CS Indication CS Indication/11.3.98 O (note 3) TLV 3 */
- ELEM_IN_ELEM_OPT_TELV(0x7a, BSSGP_PDU_TYPE, DE_BSSGP_CS_INDICATION, NULL);
- /* E-UTRAN Inter RAT Handover Info E-UTRAN Inter RAT HandoverInfo/11.3.104 O (note 1) TLV 3-? */
- ELEM_IN_ELEM_OPT_TELV(0x80, BSSGP_PDU_TYPE, DE_BSSGP_E_UTRAN_INTER_RAT_HO_INFO, NULL);
+ /* Octet 3-? Source BSS to Target BSS Transparent Container Contents coded
+ * as defined in table 11.3.79.b
+ */
+ /* MS Radio Access Capability MS Radio Access Capability/11.3.22 M TLV 7-? */
+ ELEM_IN_ELEM_MAND_TELV(BSSGP_IEI_MS_RADIO_ACCESS_CAPABILITY, GSM_A_PDU_TYPE_GM, DE_MS_RAD_ACC_CAP , NULL);
+ /* Inter RAT Handover Info Inter RAT Handover Info/11.3.94 O (note 1) TLV 3-? */
+ ELEM_IN_ELEM_OPT_TELV(0x73, BSSGP_PDU_TYPE, DE_BSSGP_INTER_RAT_HO_INFO, NULL);
+ /* Page Mode Page Mode/11.3.88 O (note 2, note 3) TLV 3 */
+ ELEM_IN_ELEM_OPT_TELV(0x6d, BSSGP_PDU_TYPE, DE_BSSGP_PAGE_MODE, NULL);
+ /* Container ID Container ID/11.3.89 O (note 2) TLV 3 */
+ ELEM_IN_ELEM_OPT_TELV(0x6e, BSSGP_PDU_TYPE, DE_BSSGP_CONTAINER_ID, NULL);
+ /* Global TFI Global TFI/11.3.90 O (note 2, note 3) TLV 3 */
+ ELEM_IN_ELEM_OPT_TELV(0x6f, BSSGP_PDU_TYPE, DE_BSSGP_GLOBAL_TFI, NULL);
+ /* PS Handover Indications PS Handover Indications/11.3.95a O TLV 3 */
+ ELEM_IN_ELEM_OPT_TELV(0x75, BSSGP_PDU_TYPE, DE_BSSGP_PS_HO_INDICATIONS, NULL);
+ /* CS Indication CS Indication/11.3.98 O (note 3) TLV 3 */
+ ELEM_IN_ELEM_OPT_TELV(0x7a, BSSGP_PDU_TYPE, DE_BSSGP_CS_INDICATION, NULL);
+ /* E-UTRAN Inter RAT Handover Info E-UTRAN Inter RAT HandoverInfo/11.3.104 O (note 1) TLV 3-? */
+ ELEM_IN_ELEM_OPT_TELV(0x80, BSSGP_PDU_TYPE, DE_BSSGP_E_UTRAN_INTER_RAT_HO_INFO, NULL);
- return(curr_offset-offset);
+ return(curr_offset-offset);
}
/*
@@ -3783,2286 +3790,2286 @@ de_bssgp_source_BSS_to_target_BSS_transp_cont(tvbuff_t *tvb, proto_tree *tree, p
static guint16
de_bssgp_target_BSS_to_source_BSS_transp_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* Octet 3-? Target BSS to Source BSS Transparent Container Contents coded
- * as defined in table 11.3.80.b
- */
+ /* Octet 3-? Target BSS to Source BSS Transparent Container Contents coded
+ * as defined in table 11.3.80.b
+ */
- /* PS Handover Command PS Handover Command/11.3.95 O (Note 2) TLV 4-? */
- ELEM_IN_ELEM_OPT_TELV(0x74, BSSGP_PDU_TYPE, DE_BSSGP_PS_HO_CMD, NULL);
- /* SI/PSI Container SI/PSI Container/11.3.95b O (Note 1) TLV 3-? */
- ELEM_IN_ELEM_OPT_TELV(0x76, BSSGP_PDU_TYPE, DE_BSSGP_SIPSI_CONTAINER, NULL);
- /* DTM Handover Command DTM Handover Command/11.3.97 O (Note 2) TLV 22-? */
- ELEM_IN_ELEM_OPT_TELV(0x79, BSSGP_PDU_TYPE, DE_BBSGP_DTM_HO_CMD, NULL);
+ /* PS Handover Command PS Handover Command/11.3.95 O (Note 2) TLV 4-? */
+ ELEM_IN_ELEM_OPT_TELV(0x74, BSSGP_PDU_TYPE, DE_BSSGP_PS_HO_CMD, NULL);
+ /* SI/PSI Container SI/PSI Container/11.3.95b O (Note 1) TLV 3-? */
+ ELEM_IN_ELEM_OPT_TELV(0x76, BSSGP_PDU_TYPE, DE_BSSGP_SIPSI_CONTAINER, NULL);
+ /* DTM Handover Command DTM Handover Command/11.3.97 O (Note 2) TLV 22-? */
+ ELEM_IN_ELEM_OPT_TELV(0x79, BSSGP_PDU_TYPE, DE_BBSGP_DTM_HO_CMD, NULL);
- return(curr_offset-offset);
+ return(curr_offset-offset);
}
/* MESSAGE FUNCTIONS */
/*
- * 10.2 PDU functional definitions and contents at RL and BSSGP SAPs
+ * 10.2 PDU functional definitions and contents at RL and BSSGP SAPs
* 10.2.1 DL-UNITDATA
*/
static void
bssgp_dl_unitdata(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
-
- curr_offset = offset;
- curr_len = len;
-
- /* This PDU is sent to the BSS to transfer an LLC-PDU across the radio interface to an MS. */
- pinfo->link_dir = P2P_DIR_DL;
-
- /* TLLI (current) TLLI/11.3.35 M V 4 */
- ELEM_MAND_V(GSM_A_PDU_TYPE_RR, DE_RR_TLLI, " - current");
- /* QoS Profile (note 1) QoS Profile/11.3.28 M V 3 */
- ELEM_MAND_V(BSSGP_PDU_TYPE, DE_BSSGP_QOS_PROFILE, NULL);
-
- /* PDU Lifetime PDU Lifetime/11.3.25 M TLV 4 */
- ELEM_MAND_TELV(0x16, BSSGP_PDU_TYPE, DE_BSSGP_PDU_LIFETIME, NULL);
- /* MS Radio Access Capability (note 2) MS Radio Access Capability/11.3.22 O TLV 7-? */
- ELEM_OPT_TELV(BSSGP_IEI_MS_RADIO_ACCESS_CAPABILITY, GSM_A_PDU_TYPE_GM, DE_MS_RAD_ACC_CAP , NULL);
- /* Priority (note 3) Priority/11.3.27 O TLV 3 */
- ELEM_OPT_TELV(0x0b, GSM_A_PDU_TYPE_BSSMAP, BE_PRIO, NULL);
- /* DRX Parameters DRX Parameters/11.3.11 O TLV 4 */
- ELEM_OPT_TELV(0x0a , GSM_A_PDU_TYPE_GM, DE_DRX_PARAM , NULL);
- /* IMSI IMSI/11.3.14 O TLV 5-10 */
- ELEM_OPT_TELV(BSSGP_IEI_IMSI, BSSGP_PDU_TYPE, DE_BSSGP_IMSI , NULL);
- /* TLLI (old) TLLI/11.3.35 O TLV 6 */
- ELEM_OPT_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , " - old");
- /* PFI PFI/11.3.42 O TLV 3 */
- ELEM_OPT_TELV( BSSGP_IEI_PFI , GSM_A_PDU_TYPE_GM, DE_PACKET_FLOW_ID , NULL);
- /* LSA Information LSA Information/11.3.19 O TLV 7-? */
- ELEM_OPT_TELV(0x27, GSM_A_PDU_TYPE_BSSMAP, BE_LSA_INFO, NULL);
- /* Service UTRAN CCO Service UTRAN CCO/11.3.47 O TLV 3 */
- ELEM_OPT_TELV(BSSGP_IEI_SERVICE_UTRAN_CCO, BSSGP_PDU_TYPE, DE_BSSGP_SERV_UTRAN_CCO, NULL);
-
- /* Subscriber Profile ID for RAT/Frequency priority (note 5)
- * Subscriber Profile ID for RAT/Frequency priority/11.3.105 O TLV 3
- */
- ELEM_OPT_TELV(0x81, BSSGP_PDU_TYPE, DE_BSSGP_SUB_PROF_ID_F_RAT_FRQ_PRIO, NULL);
- /* Alignment octets Alignment octets/11.3.1 O TLV 2-5 */
- ELEM_OPT_TELV(0x00, BSSGP_PDU_TYPE, DE_BSSGP_ALIGNMENT_OCTETS, NULL);
- /* LLC-PDU (note 4) 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);
-}
-/*
- * 10.2.2 UL-UNITDATA
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
+
+ curr_offset = offset;
+ curr_len = len;
+
+ /* This PDU is sent to the BSS to transfer an LLC-PDU across the radio interface to an MS. */
+ pinfo->link_dir = P2P_DIR_DL;
+
+ /* TLLI (current) TLLI/11.3.35 M V 4 */
+ ELEM_MAND_V(GSM_A_PDU_TYPE_RR, DE_RR_TLLI, " - current");
+ /* QoS Profile (note 1) QoS Profile/11.3.28 M V 3 */
+ ELEM_MAND_V(BSSGP_PDU_TYPE, DE_BSSGP_QOS_PROFILE, NULL);
+
+ /* PDU Lifetime PDU Lifetime/11.3.25 M TLV 4 */
+ ELEM_MAND_TELV(0x16, BSSGP_PDU_TYPE, DE_BSSGP_PDU_LIFETIME, NULL);
+ /* MS Radio Access Capability (note 2) MS Radio Access Capability/11.3.22 O TLV 7-? */
+ ELEM_OPT_TELV(BSSGP_IEI_MS_RADIO_ACCESS_CAPABILITY, GSM_A_PDU_TYPE_GM, DE_MS_RAD_ACC_CAP , NULL);
+ /* Priority (note 3) Priority/11.3.27 O TLV 3 */
+ ELEM_OPT_TELV(0x0b, GSM_A_PDU_TYPE_BSSMAP, BE_PRIO, NULL);
+ /* DRX Parameters DRX Parameters/11.3.11 O TLV 4 */
+ ELEM_OPT_TELV(0x0a , GSM_A_PDU_TYPE_GM, DE_DRX_PARAM , NULL);
+ /* IMSI IMSI/11.3.14 O TLV 5-10 */
+ ELEM_OPT_TELV(BSSGP_IEI_IMSI, BSSGP_PDU_TYPE, DE_BSSGP_IMSI , NULL);
+ /* TLLI (old) TLLI/11.3.35 O TLV 6 */
+ ELEM_OPT_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , " - old");
+ /* PFI PFI/11.3.42 O TLV 3 */
+ ELEM_OPT_TELV( BSSGP_IEI_PFI , GSM_A_PDU_TYPE_GM, DE_PACKET_FLOW_ID , NULL);
+ /* LSA Information LSA Information/11.3.19 O TLV 7-? */
+ ELEM_OPT_TELV(0x27, GSM_A_PDU_TYPE_BSSMAP, BE_LSA_INFO, NULL);
+ /* Service UTRAN CCO Service UTRAN CCO/11.3.47 O TLV 3 */
+ ELEM_OPT_TELV(BSSGP_IEI_SERVICE_UTRAN_CCO, BSSGP_PDU_TYPE, DE_BSSGP_SERV_UTRAN_CCO, NULL);
+
+ /* Subscriber Profile ID for RAT/Frequency priority (note 5)
+ * Subscriber Profile ID for RAT/Frequency priority/11.3.105 O TLV 3
+ */
+ ELEM_OPT_TELV(0x81, BSSGP_PDU_TYPE, DE_BSSGP_SUB_PROF_ID_F_RAT_FRQ_PRIO, NULL);
+ /* Alignment octets Alignment octets/11.3.1 O TLV 2-5 */
+ ELEM_OPT_TELV(0x00, BSSGP_PDU_TYPE, DE_BSSGP_ALIGNMENT_OCTETS, NULL);
+ /* LLC-PDU (note 4) 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);
+}
+/*
+ * 10.2.2 UL-UNITDATA
*/
static void
bssgp_ul_unitdata(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
-
- curr_offset = offset;
- curr_len = len;
-
- /* This PDU transfers an MS's LLC-PDU and its associated radio interface information across the Gb-interface.
- * Direction: BSS to SGSN
- */
- pinfo->link_dir = P2P_DIR_UL;
- /* TLLI TLLI/11.3.35 M V 4 */
- ELEM_MAND_V(GSM_A_PDU_TYPE_RR, DE_RR_TLLI, NULL);
- /* QoS Profile QoS Profile/11.3.28 M V 3 */
- ELEM_MAND_V(BSSGP_PDU_TYPE, DE_BSSGP_QOS_PROFILE, NULL);
- /* Cell Identifier Cell Identifier/11.3.9 M TLV 10 */
- ELEM_OPT_TELV(BSSGP_IEI_CELL_IDENTIFIER, BSSGP_PDU_TYPE, DE_BSSGP_CELL_ID , NULL);
- /* PFI PFI/11.3.42 O TLV 3 */
- ELEM_OPT_TELV(BSSGP_IEI_PFI , GSM_A_PDU_TYPE_GM, DE_PACKET_FLOW_ID , NULL);
- /* LSA Identifier List LSA Identifier List/11.3.18 O TLV 3-? */
- ELEM_OPT_TELV(0x26, GSM_A_PDU_TYPE_BSSMAP, BE_LSA_ID_LIST, NULL);
- /* Alignment octets Alignment octets/11.3.1 O TLV 2-5 */
- ELEM_OPT_TELV(0x00, BSSGP_PDU_TYPE, DE_BSSGP_ALIGNMENT_OCTETS, NULL);
- /* 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);
-}
-/*
- * 10.2.3 RA-CAPABILITY
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
+
+ curr_offset = offset;
+ curr_len = len;
+
+ /* This PDU transfers an MS's LLC-PDU and its associated radio interface information across the Gb-interface.
+ * Direction: BSS to SGSN
+ */
+ pinfo->link_dir = P2P_DIR_UL;
+ /* TLLI TLLI/11.3.35 M V 4 */
+ ELEM_MAND_V(GSM_A_PDU_TYPE_RR, DE_RR_TLLI, NULL);
+ /* QoS Profile QoS Profile/11.3.28 M V 3 */
+ ELEM_MAND_V(BSSGP_PDU_TYPE, DE_BSSGP_QOS_PROFILE, NULL);
+ /* Cell Identifier Cell Identifier/11.3.9 M TLV 10 */
+ ELEM_OPT_TELV(BSSGP_IEI_CELL_IDENTIFIER, BSSGP_PDU_TYPE, DE_BSSGP_CELL_ID , NULL);
+ /* PFI PFI/11.3.42 O TLV 3 */
+ ELEM_OPT_TELV(BSSGP_IEI_PFI , GSM_A_PDU_TYPE_GM, DE_PACKET_FLOW_ID , NULL);
+ /* LSA Identifier List LSA Identifier List/11.3.18 O TLV 3-? */
+ ELEM_OPT_TELV(0x26, GSM_A_PDU_TYPE_BSSMAP, BE_LSA_ID_LIST, NULL);
+ /* Alignment octets Alignment octets/11.3.1 O TLV 2-5 */
+ ELEM_OPT_TELV(0x00, BSSGP_PDU_TYPE, DE_BSSGP_ALIGNMENT_OCTETS, NULL);
+ /* 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);
+}
+/*
+ * 10.2.3 RA-CAPABILITY
*/
static void
bssgp_ra_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* This PDU informs the BSS of the new Radio Access Capability of an MS. */
- pinfo->link_dir = P2P_DIR_UL;
+ /* This PDU informs the BSS of the new Radio Access Capability of an MS. */
+ pinfo->link_dir = P2P_DIR_UL;
- /* TLLI TLLI/11.3.35 M TLV 6 */
- ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
- /* 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);
+ /* TLLI TLLI/11.3.35 M TLV 6 */
+ ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
+ /* 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);
}
/*
- * 10.2.4 (void)
+ * 10.2.4 (void)
*/
/*
- * 10.2.5 DL-MBMS-UNITDATA
+ * 10.2.5 DL-MBMS-UNITDATA
*/
static void
bssgp_dl_mbms_unitdata(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* This PDU is sent to the BSS to transfer an LLC-PDU across the radio interface.
- * Direction: SGSN to BSS
- */
- pinfo->link_dir = P2P_DIR_DL;
+ /* This PDU is sent to the BSS to transfer an LLC-PDU across the radio interface.
+ * Direction: SGSN to BSS
+ */
+ pinfo->link_dir = P2P_DIR_DL;
- /* PDU Lifetime PDU Lifetime/11.3.25 M TLV 4 */
- ELEM_MAND_TELV(0x16, BSSGP_PDU_TYPE, DE_BSSGP_PDU_LIFETIME, NULL);
- /* 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);
- /* Alignment octets Alignment octets/11.3.1 O TLV 2-5 */
- ELEM_OPT_TELV(0x00, BSSGP_PDU_TYPE, DE_BSSGP_ALIGNMENT_OCTETS, NULL);
- /* LLC-PDU LLC-PDU/11.3.15 M TLV 3-? */
- ELEM_MAND_TELV(0x0e, BSSGP_PDU_TYPE, DE_BSSGP_LLC_PDU, NULL);
+ /* PDU Lifetime PDU Lifetime/11.3.25 M TLV 4 */
+ ELEM_MAND_TELV(0x16, BSSGP_PDU_TYPE, DE_BSSGP_PDU_LIFETIME, NULL);
+ /* 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);
+ /* Alignment octets Alignment octets/11.3.1 O TLV 2-5 */
+ ELEM_OPT_TELV(0x00, BSSGP_PDU_TYPE, DE_BSSGP_ALIGNMENT_OCTETS, NULL);
+ /* LLC-PDU LLC-PDU/11.3.15 M TLV 3-? */
+ 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);
}
/*
- * 10.2.6 UL-MBMS-UNITDATA
+ * 10.2.6 UL-MBMS-UNITDATA
*/
static void
bssgp_ul_mbms_unitdata(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* This PDU transfers an LLC-PDU for an MBMS session across the Gb-interface.
- * Direction: BSS to SGSN */
- pinfo->link_dir = P2P_DIR_UL;
+ /* This PDU transfers an LLC-PDU for an MBMS session across the Gb-interface.
+ * Direction: BSS to SGSN */
+ pinfo->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);
- /* Alignment octets Alignment octets/11.3.1 O TLV 2-5 */
- ELEM_OPT_TELV(0x00, BSSGP_PDU_TYPE, DE_BSSGP_ALIGNMENT_OCTETS, NULL);
- /* LLC-PDU (note 1) LLC-PDU/11.3.15 M TLV 2-? */
- ELEM_MAND_TELV(0x0e, BSSGP_PDU_TYPE, DE_BSSGP_LLC_PDU, NULL);
+ /* 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);
+ /* Alignment octets Alignment octets/11.3.1 O TLV 2-5 */
+ ELEM_OPT_TELV(0x00, BSSGP_PDU_TYPE, DE_BSSGP_ALIGNMENT_OCTETS, NULL);
+ /* 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);
}
/*
- * 10.3 PDU functional definitions and contents at GMM SAP
- * 10.3.1 PAGING PS
+ * 10.3 PDU functional definitions and contents at GMM SAP
+ * 10.3.1 PAGING PS
*/
static void
bssgp_paging_ps(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
-
- curr_offset = offset;
- curr_len = len;
- /* This PDU indicates that a BSS shall initiate the packet paging procedure for an MS within a group of cells.
- * Direction: SGSN to BSS */
- pinfo->link_dir = P2P_DIR_DL;
-
- /* IMSI IMSI/11.3.14 M TLV 5 -10 */
- ELEM_MAND_TELV(BSSGP_IEI_IMSI, BSSGP_PDU_TYPE, DE_BSSGP_IMSI , NULL);
- /* DRX Parameters DRX Parameters/11.3.11 O TLV 4 */
- ELEM_OPT_TELV(0x0a , GSM_A_PDU_TYPE_GM, DE_DRX_PARAM , NULL);
- /* BVCI a) BVCI/11.3.6 C TLV 4 */
- ELEM_OPT_TELV(BSSGP_IEI_BVCI, BSSGP_PDU_TYPE, DE_BSSGP_BVCI , NULL);
- /* Location Area (note) Location Area/11.3.17 C TLV 7 */
- ELEM_OPT_TELV(0x10,GSM_A_PDU_TYPE_COMMON, DE_LAI, NULL);
- /* Routeing Area (note) Routeing Area/11.3.31 C TLV 8 */
- ELEM_OPT_TELV(0x1b,GSM_A_PDU_TYPE_GM, DE_RAI, NULL);
- /* BSS Area Indication (note) BSS Area Indication/11.3.3 C TLV 3 */
- ELEM_OPT_TELV(0x02,BSSGP_PDU_TYPE, DE_BSSGP_BSS_AREA_IND, NULL);
- /* PFI PFI/11.3.42 O TLV 3 */
- ELEM_OPT_TELV(BSSGP_IEI_PFI , GSM_A_PDU_TYPE_GM, DE_PACKET_FLOW_ID , NULL);
- /* ABQP ABQP/11.3.43 O TLV 13-? */
- ELEM_OPT_TELV(0x3a , GSM_A_PDU_TYPE_GM, DE_QOS , NULL);
- /* QoS Profile QoS Profile/11.3.28 M TLV 5 */
- ELEM_MAND_TELV(0x18,BSSGP_PDU_TYPE, DE_BSSGP_QOS_PROFILE, NULL);
- /* 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);
-}
-
-/*
- * 10.3.2 PAGING CS
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
+
+ curr_offset = offset;
+ curr_len = len;
+ /* This PDU indicates that a BSS shall initiate the packet paging procedure for an MS within a group of cells.
+ * Direction: SGSN to BSS */
+ pinfo->link_dir = P2P_DIR_DL;
+
+ /* IMSI IMSI/11.3.14 M TLV 5 -10 */
+ ELEM_MAND_TELV(BSSGP_IEI_IMSI, BSSGP_PDU_TYPE, DE_BSSGP_IMSI , NULL);
+ /* DRX Parameters DRX Parameters/11.3.11 O TLV 4 */
+ ELEM_OPT_TELV(0x0a , GSM_A_PDU_TYPE_GM, DE_DRX_PARAM , NULL);
+ /* BVCI a) BVCI/11.3.6 C TLV 4 */
+ ELEM_OPT_TELV(BSSGP_IEI_BVCI, BSSGP_PDU_TYPE, DE_BSSGP_BVCI , NULL);
+ /* Location Area (note) Location Area/11.3.17 C TLV 7 */
+ ELEM_OPT_TELV(0x10,GSM_A_PDU_TYPE_COMMON, DE_LAI, NULL);
+ /* Routeing Area (note) Routeing Area/11.3.31 C TLV 8 */
+ ELEM_OPT_TELV(0x1b,GSM_A_PDU_TYPE_GM, DE_RAI, NULL);
+ /* BSS Area Indication (note) BSS Area Indication/11.3.3 C TLV 3 */
+ ELEM_OPT_TELV(0x02,BSSGP_PDU_TYPE, DE_BSSGP_BSS_AREA_IND, NULL);
+ /* PFI PFI/11.3.42 O TLV 3 */
+ ELEM_OPT_TELV(BSSGP_IEI_PFI , GSM_A_PDU_TYPE_GM, DE_PACKET_FLOW_ID , NULL);
+ /* ABQP ABQP/11.3.43 O TLV 13-? */
+ ELEM_OPT_TELV(0x3a , GSM_A_PDU_TYPE_GM, DE_QOS , NULL);
+ /* QoS Profile QoS Profile/11.3.28 M TLV 5 */
+ ELEM_MAND_TELV(0x18,BSSGP_PDU_TYPE, DE_BSSGP_QOS_PROFILE, NULL);
+ /* 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);
+}
+
+/*
+ * 10.3.2 PAGING CS
*/
static void
bssgp_paging_cs(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
-
- curr_offset = offset;
- curr_len = len;
- /* This PDU indicates that a BSS shall initiate a circuit-switched paging procedure for an MS within a group of cells.
- * Direction: SGSN to BSS
- */
- pinfo->link_dir = P2P_DIR_DL;
- /* IMSI IMSI/11.3.14 M TLV 5 -10 */
- ELEM_MAND_TELV(BSSGP_IEI_IMSI, BSSGP_PDU_TYPE, DE_BSSGP_IMSI , NULL);
- /* DRX Parameters DRX Parameters/11.3.11 M TLV 4 */
- ELEM_MAND_TELV(0x0a , GSM_A_PDU_TYPE_GM, DE_DRX_PARAM , NULL);
- /* BVCI a) BVCI/11.3.6 C TLV 4 */
- ELEM_OPT_TELV(BSSGP_IEI_BVCI, BSSGP_PDU_TYPE, DE_BSSGP_BVCI , NULL);
- /* Location Area (note 1) Location Area/11.3.17 C TLV 7 */
- ELEM_OPT_TELV(0x10,GSM_A_PDU_TYPE_COMMON, DE_LAI, NULL);
- /* Routeing Area (note 1) Routeing Area/11.3.31 C TLV 8 */
- ELEM_OPT_TELV(0x1b,GSM_A_PDU_TYPE_GM, DE_RAI, NULL);
- /* BSS Area Indication (note 1) BSS Area Indication/11.3.3 C TLV 3 */
- ELEM_OPT_TELV(0x02,BSSGP_PDU_TYPE, DE_BSSGP_BSS_AREA_IND, NULL);
- /* TLLI TLLI/11.3.35 O TLV 6 */
- ELEM_OPT_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
- /* Channel needed (note 2) Channel needed/11.3.10 O TLV 3 */
- ELEM_OPT_TELV(0x09, BSSGP_PDU_TYPE, DE_BSSGP_CHLN_NEEDED , NULL);
- /* eMLPP-Priority (note 2) eMLPP-Priority/11.3.12 O TLV 3 */
- ELEM_OPT_TELV(0x0b, GSM_A_PDU_TYPE_BSSMAP, BE_EMLPP_PRIO, NULL);
- /* TMSI (note 2) TMSI/11.3.36 O TLV 6 */
- ELEM_OPT_TELV(BSSGP_IEI_TMSI,GSM_A_PDU_TYPE_RR, DE_RR_TMSI_PTMSI, NULL);
- /* 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);
-}
-
-/*
- * 10.3.3 RA-CAPABILITY-UPDATE
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
+
+ curr_offset = offset;
+ curr_len = len;
+ /* This PDU indicates that a BSS shall initiate a circuit-switched paging procedure for an MS within a group of cells.
+ * Direction: SGSN to BSS
+ */
+ pinfo->link_dir = P2P_DIR_DL;
+ /* IMSI IMSI/11.3.14 M TLV 5 -10 */
+ ELEM_MAND_TELV(BSSGP_IEI_IMSI, BSSGP_PDU_TYPE, DE_BSSGP_IMSI , NULL);
+ /* DRX Parameters DRX Parameters/11.3.11 M TLV 4 */
+ ELEM_MAND_TELV(0x0a , GSM_A_PDU_TYPE_GM, DE_DRX_PARAM , NULL);
+ /* BVCI a) BVCI/11.3.6 C TLV 4 */
+ ELEM_OPT_TELV(BSSGP_IEI_BVCI, BSSGP_PDU_TYPE, DE_BSSGP_BVCI , NULL);
+ /* Location Area (note 1) Location Area/11.3.17 C TLV 7 */
+ ELEM_OPT_TELV(0x10,GSM_A_PDU_TYPE_COMMON, DE_LAI, NULL);
+ /* Routeing Area (note 1) Routeing Area/11.3.31 C TLV 8 */
+ ELEM_OPT_TELV(0x1b,GSM_A_PDU_TYPE_GM, DE_RAI, NULL);
+ /* BSS Area Indication (note 1) BSS Area Indication/11.3.3 C TLV 3 */
+ ELEM_OPT_TELV(0x02,BSSGP_PDU_TYPE, DE_BSSGP_BSS_AREA_IND, NULL);
+ /* TLLI TLLI/11.3.35 O TLV 6 */
+ ELEM_OPT_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
+ /* Channel needed (note 2) Channel needed/11.3.10 O TLV 3 */
+ ELEM_OPT_TELV(0x09, BSSGP_PDU_TYPE, DE_BSSGP_CHLN_NEEDED , NULL);
+ /* eMLPP-Priority (note 2) eMLPP-Priority/11.3.12 O TLV 3 */
+ ELEM_OPT_TELV(0x0b, GSM_A_PDU_TYPE_BSSMAP, BE_EMLPP_PRIO, NULL);
+ /* TMSI (note 2) TMSI/11.3.36 O TLV 6 */
+ ELEM_OPT_TELV(BSSGP_IEI_TMSI,GSM_A_PDU_TYPE_RR, DE_RR_TMSI_PTMSI, NULL);
+ /* 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);
+}
+
+/*
+ * 10.3.3 RA-CAPABILITY-UPDATE
*/
static void
bssgp_ra_cap_upd(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
- /* This PDU requests that the SGSN send an MS's current Radio Access capability or IMSI to the BSS. */
- /* Direction: BSS to SGSN */
- pinfo->link_dir = P2P_DIR_UL;
+ curr_offset = offset;
+ curr_len = len;
+ /* This PDU requests that the SGSN send an MS's current Radio Access capability or IMSI to the BSS. */
+ /* Direction: BSS to SGSN */
+ pinfo->link_dir = P2P_DIR_UL;
- /* TLLI TLLI/11.3.35 M TLV 6 */
- ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
- /* Tag Tag/11.3.34 M TLV 3 */
- ELEM_MAND_TELV(BSSGP_IEI_TAG, BSSGP_PDU_TYPE, DE_BSSGP_TAG , NULL);
- /* IMSI (note) IMSI/11.3.14 C TLV 5 -10 */
- ELEM_OPT_TELV(BSSGP_IEI_IMSI, BSSGP_PDU_TYPE, DE_BSSGP_IMSI , NULL);
- /* RA-Cap-UPD-CAUSE RA-Cap-UPDCAUSE/11.3.30 M TLV 3 */
- ELEM_OPT_TELV(BSSGP_IEI_RA_CAP_UPD_CAUSE, BSSGP_PDU_TYPE, DE_BSSGP_RA_CAP_UPD_CAUSE , NULL);
- /* 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);
+ /* TLLI TLLI/11.3.35 M TLV 6 */
+ ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
+ /* Tag Tag/11.3.34 M TLV 3 */
+ ELEM_MAND_TELV(BSSGP_IEI_TAG, BSSGP_PDU_TYPE, DE_BSSGP_TAG , NULL);
+ /* IMSI (note) IMSI/11.3.14 C TLV 5 -10 */
+ ELEM_OPT_TELV(BSSGP_IEI_IMSI, BSSGP_PDU_TYPE, DE_BSSGP_IMSI , NULL);
+ /* RA-Cap-UPD-CAUSE RA-Cap-UPDCAUSE/11.3.30 M TLV 3 */
+ ELEM_OPT_TELV(BSSGP_IEI_RA_CAP_UPD_CAUSE, BSSGP_PDU_TYPE, DE_BSSGP_RA_CAP_UPD_CAUSE , NULL);
+ /* 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);
}
/*
- * 10.3.4 RA-CAPABILITY-UPDATE-ACK
+ * 10.3.4 RA-CAPABILITY-UPDATE-ACK
*/
static void
bssgp_ra_cap_upd_ack(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
- /* This PDU provides the BSS with an MS's current Radio Access capability and IMSI */
- /* Direction: SGSN to BSS */
- pinfo->link_dir = P2P_DIR_DL;
+ curr_offset = offset;
+ curr_len = len;
+ /* This PDU provides the BSS with an MS's current Radio Access capability and IMSI */
+ /* Direction: SGSN to BSS */
+ pinfo->link_dir = P2P_DIR_DL;
- /* TLLI TLLI/11.3.35 M TLV 6 */
- ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
- /* Tag Tag/11.3.34 M TLV 3 */
- ELEM_MAND_TELV(BSSGP_IEI_TAG, BSSGP_PDU_TYPE, DE_BSSGP_TAG , NULL);
- /* IMSI (note) IMSI/11.3.14 C TLV 5 -10 */
- ELEM_OPT_TELV(BSSGP_IEI_IMSI, BSSGP_PDU_TYPE, DE_BSSGP_IMSI , NULL);
- /* RA-Cap-UPD-CAUSE RA-Cap-UPDCAUSE/11.3.30 M TLV 3 */
- ELEM_OPT_TELV(BSSGP_IEI_RA_CAP_UPD_CAUSE, BSSGP_PDU_TYPE, DE_BSSGP_RA_CAP_UPD_CAUSE , NULL);
- /* 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);
+ /* TLLI TLLI/11.3.35 M TLV 6 */
+ ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
+ /* Tag Tag/11.3.34 M TLV 3 */
+ ELEM_MAND_TELV(BSSGP_IEI_TAG, BSSGP_PDU_TYPE, DE_BSSGP_TAG , NULL);
+ /* IMSI (note) IMSI/11.3.14 C TLV 5 -10 */
+ ELEM_OPT_TELV(BSSGP_IEI_IMSI, BSSGP_PDU_TYPE, DE_BSSGP_IMSI , NULL);
+ /* RA-Cap-UPD-CAUSE RA-Cap-UPDCAUSE/11.3.30 M TLV 3 */
+ ELEM_OPT_TELV(BSSGP_IEI_RA_CAP_UPD_CAUSE, BSSGP_PDU_TYPE, DE_BSSGP_RA_CAP_UPD_CAUSE , NULL);
+ /* 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);
}
/*
- * 10.3.5 RADIO-STATUS
+ * 10.3.5 RADIO-STATUS
*/
static void
bssgp_ra_status(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* This PDU indicates that an exception condition related to the radio interface has occurred. */
- /* BSS to SGSN */
- pinfo->link_dir = P2P_DIR_UL;
+ /* This PDU indicates that an exception condition related to the radio interface has occurred. */
+ /* BSS to SGSN */
+ pinfo->link_dir = P2P_DIR_UL;
- /* TLLI (note) TLLI/11.3.35 C TLV 6 */
- ELEM_OPT_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
- /* TMSI (note) TMSI/11.3.36 C TLV 6 */
- ELEM_OPT_TELV(BSSGP_IEI_TMSI,GSM_A_PDU_TYPE_RR, DE_RR_TMSI_PTMSI, NULL);
- /* IMSI (note) IMSI/11.3.14 C TLV 5-10 */
- ELEM_OPT_TELV(BSSGP_IEI_IMSI, BSSGP_PDU_TYPE, DE_BSSGP_IMSI , NULL);
- /* 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);
+ /* TLLI (note) TLLI/11.3.35 C TLV 6 */
+ ELEM_OPT_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
+ /* TMSI (note) TMSI/11.3.36 C TLV 6 */
+ ELEM_OPT_TELV(BSSGP_IEI_TMSI,GSM_A_PDU_TYPE_RR, DE_RR_TMSI_PTMSI, NULL);
+ /* IMSI (note) IMSI/11.3.14 C TLV 5-10 */
+ ELEM_OPT_TELV(BSSGP_IEI_IMSI, BSSGP_PDU_TYPE, DE_BSSGP_IMSI , NULL);
+ /* 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);
}
/*
- * 10.3.6 SUSPEND
+ * 10.3.6 SUSPEND
*/
static void
bssgp_suspend(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* This PDU indicates that an MS wishes to suspend its GPRS service. */
- /* Direction: BSS to SGSN */
- pinfo->link_dir = P2P_DIR_UL;
+ /* This PDU indicates that an MS wishes to suspend its GPRS service. */
+ /* Direction: BSS to SGSN */
+ pinfo->link_dir = P2P_DIR_UL;
- /* TLLI TLLI/11.3.35 M TLV 6 */
- ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
- /* Routeing Area Routeing Area/11.3.31 M TLV 8 */
- ELEM_MAND_TELV(0x1b,GSM_A_PDU_TYPE_GM, DE_RAI, NULL);
+ /* TLLI TLLI/11.3.35 M TLV 6 */
+ ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
+ /* 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);
}
/*
- * 10.3.7 SUSPEND-ACK
+ * 10.3.7 SUSPEND-ACK
*/
void
bssgp_suspend_ack(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* This PDU positively acknowledges the reception of a SUSPEND PDU for an MS. */
- /* Direction: SGSN to BSS */
- pinfo->link_dir = P2P_DIR_DL;
+ /* This PDU positively acknowledges the reception of a SUSPEND PDU for an MS. */
+ /* Direction: SGSN to BSS */
+ pinfo->link_dir = P2P_DIR_DL;
- /* TLLI TLLI/11.3.35 M TLV 6 */
- ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
- /* Routeing Area Routeing Area/11.3.31 M TLV 8 */
- ELEM_MAND_TELV(0x1b,GSM_A_PDU_TYPE_GM, DE_RAI, NULL);
- /* 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);
+ /* TLLI TLLI/11.3.35 M TLV 6 */
+ ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
+ /* Routeing Area Routeing Area/11.3.31 M TLV 8 */
+ ELEM_MAND_TELV(0x1b,GSM_A_PDU_TYPE_GM, DE_RAI, NULL);
+ /* 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);
}
/*
- * 10.3.8 SUSPEND-NACK
+ * 10.3.8 SUSPEND-NACK
*/
static void
bssgp_suspend_nack(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* This PDU negatively acknowledges the reception of a SUSPEND PDU for an MS. */
- /* Direction: SGSN to BSS */
- pinfo->link_dir = P2P_DIR_DL;
+ /* This PDU negatively acknowledges the reception of a SUSPEND PDU for an MS. */
+ /* Direction: SGSN to BSS */
+ pinfo->link_dir = P2P_DIR_DL;
- /* TLLI TLLI/11.3.35 M TLV 6 */
- ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
- /* Routeing Area Routeing Area/11.3.31 M TLV 8 */
- ELEM_MAND_TELV(0x1b,GSM_A_PDU_TYPE_GM, DE_RAI, NULL);
- /* Cause Cause/11.3.8 O TLV 3 */
- ELEM_MAND_TELV(BSSGP_IEI_CAUSE,BSSGP_PDU_TYPE, DE_BSSGP_CAUSE, NULL);
+ /* TLLI TLLI/11.3.35 M TLV 6 */
+ ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
+ /* Routeing Area Routeing Area/11.3.31 M TLV 8 */
+ ELEM_MAND_TELV(0x1b,GSM_A_PDU_TYPE_GM, DE_RAI, NULL);
+ /* 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);
}
/*
- * 10.3.9 RESUME
+ * 10.3.9 RESUME
*/
static void
bssgp_resume(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* This PDU indicates that an MS wishes to RESUME its GPRS service. */
- /* Direction: BSS to SGSN */
- pinfo->link_dir = P2P_DIR_UL;
+ /* This PDU indicates that an MS wishes to RESUME its GPRS service. */
+ /* Direction: BSS to SGSN */
+ pinfo->link_dir = P2P_DIR_UL;
- /* TLLI TLLI/11.3.35 M TLV 6 */
- ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
- /* Routeing Area Routeing Area/11.3.31 M TLV 8 */
- ELEM_MAND_TELV(0x1b,GSM_A_PDU_TYPE_GM, DE_RAI, NULL);
- /* 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);
+ /* TLLI TLLI/11.3.35 M TLV 6 */
+ ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
+ /* Routeing Area Routeing Area/11.3.31 M TLV 8 */
+ ELEM_MAND_TELV(0x1b,GSM_A_PDU_TYPE_GM, DE_RAI, NULL);
+ /* 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);
}
/*
- * 10.3.10 RESUME-ACK
+ * 10.3.10 RESUME-ACK
*/
static void
bssgp_resume_ack(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* This PDU positively acknowledges the reception of a RESUME PDU for an MS. */
- /* Direction: SGSN to BSS */
- pinfo->link_dir = P2P_DIR_DL;
+ /* This PDU positively acknowledges the reception of a RESUME PDU for an MS. */
+ /* Direction: SGSN to BSS */
+ pinfo->link_dir = P2P_DIR_DL;
- /* TLLI TLLI/11.3.35 M TLV 6 */
- ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
- /* Routeing Area Routeing Area/11.3.31 M TLV 8 */
- ELEM_MAND_TELV(0x1b,GSM_A_PDU_TYPE_GM, DE_RAI, NULL);
+ /* TLLI TLLI/11.3.35 M TLV 6 */
+ ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
+ /* 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);
}
/*
- * 10.3.11 RESUME-NACK
+ * 10.3.11 RESUME-NACK
*/
static void
bssgp_resume_nack(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* This PDU negatively acknowledges the reception of a RESUME PDU for an MS. */
- /* Direction: SGSN to BSS */
- pinfo->link_dir = P2P_DIR_DL;
+ /* This PDU negatively acknowledges the reception of a RESUME PDU for an MS. */
+ /* Direction: SGSN to BSS */
+ pinfo->link_dir = P2P_DIR_DL;
- /* TLLI TLLI/11.3.35 M TLV 6 */
- ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
- /* Routeing Area Routeing Area/11.3.31 M TLV 8 */
- ELEM_MAND_TELV(0x1b,GSM_A_PDU_TYPE_GM, DE_RAI, NULL);
- /* Cause Cause/11.3.8 O TLV 3 */
- ELEM_OPT_TELV(BSSGP_IEI_CAUSE,BSSGP_PDU_TYPE, DE_BSSGP_CAUSE, NULL);
+ /* TLLI TLLI/11.3.35 M TLV 6 */
+ ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
+ /* Routeing Area Routeing Area/11.3.31 M TLV 8 */
+ ELEM_MAND_TELV(0x1b,GSM_A_PDU_TYPE_GM, DE_RAI, NULL);
+ /* 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);
}
/*
- * 10.4 PDU functional definitions and contents at NM SAP
- * 10.4.1 FLUSH-LL
+ * 10.4 PDU functional definitions and contents at NM SAP
+ * 10.4.1 FLUSH-LL
*/
static void
bssgp_flush_ll(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* This PDU informs a BSS that an MS has moved from one cell to another. */
- /* Direction: SGSN to BSS */
- pinfo->link_dir = P2P_DIR_DL;
+ /* This PDU informs a BSS that an MS has moved from one cell to another. */
+ /* Direction: SGSN to BSS */
+ pinfo->link_dir = P2P_DIR_DL;
- /* TLLI TLLI/11.3.35 M TLV 6 */
- ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
- /* BVCI (old) BVCI/11.3.6 M TLV 4 */
- ELEM_MAND_TELV(BSSGP_IEI_BVCI, BSSGP_PDU_TYPE, DE_BSSGP_BVCI , " - Old");
- /* BVCI (new) BVCI/11.3.6 O TLV 4 */
- ELEM_OPT_TELV(BSSGP_IEI_BVCI, BSSGP_PDU_TYPE, DE_BSSGP_BVCI , " - New");
- /* NSEI (new) NSEI/11.3.48 O (note) TLV 4 */
- ELEM_OPT_TELV(0x3e, GSM_A_PDU_TYPE_RR, DE_BSSGP_NSEI , " - New");
+ /* TLLI TLLI/11.3.35 M TLV 6 */
+ ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
+ /* BVCI (old) BVCI/11.3.6 M TLV 4 */
+ ELEM_MAND_TELV(BSSGP_IEI_BVCI, BSSGP_PDU_TYPE, DE_BSSGP_BVCI , " - Old");
+ /* BVCI (new) BVCI/11.3.6 O TLV 4 */
+ ELEM_OPT_TELV(BSSGP_IEI_BVCI, BSSGP_PDU_TYPE, DE_BSSGP_BVCI , " - New");
+ /* 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);
}
/*
- * 10.4.2 FLUSH-LL-ACK
+ * 10.4.2 FLUSH-LL-ACK
*/
static void
bssgp_flush_ll_ack(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* This PDU indicates that LLC-PDU(s) buffered for an MS in the old cell
- * have been either deleted or transferred to the new cell within the routing area. */
- /* Direction: BSS to SGSN */
- pinfo->link_dir = P2P_DIR_UL;
+ /* This PDU indicates that LLC-PDU(s) buffered for an MS in the old cell
+ * have been either deleted or transferred to the new cell within the routing area. */
+ /* Direction: BSS to SGSN */
+ pinfo->link_dir = P2P_DIR_UL;
- /* TLLI TLLI/11.3.35 M TLV 6 */
- ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
- /* Flush Action Flush Action/11.3.13 M TLV 3 */
- ELEM_MAND_TELV(0x0c, BSSGP_PDU_TYPE, DE_BSSGP_FLUSH_ACTION , NULL);
- /* BVCI (new) BVCI/11.3.13 C (note 1) TLV 4 */
- ELEM_OPT_TELV(BSSGP_IEI_BVCI, BSSGP_PDU_TYPE, DE_BSSGP_BVCI , " - New");
- /* Number of octets affected Number of octets affected/11.3.41 M TLV 5 */
- ELEM_MAND_TELV(BSSGP_IEI_NUMBER_OF_OCTETS_AFFECTED, BSSGP_PDU_TYPE, DE_BSSGP_NO_OF_OCT_AFFECTED , NULL);
- /* NSEI (new) NSEI/11.3.48 C (note 2) TLV 4 */
- ELEM_OPT_TELV(0x3e, GSM_A_PDU_TYPE_RR, DE_BSSGP_NSEI , " - New");
+ /* TLLI TLLI/11.3.35 M TLV 6 */
+ ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
+ /* Flush Action Flush Action/11.3.13 M TLV 3 */
+ ELEM_MAND_TELV(0x0c, BSSGP_PDU_TYPE, DE_BSSGP_FLUSH_ACTION , NULL);
+ /* BVCI (new) BVCI/11.3.13 C (note 1) TLV 4 */
+ ELEM_OPT_TELV(BSSGP_IEI_BVCI, BSSGP_PDU_TYPE, DE_BSSGP_BVCI , " - New");
+ /* Number of octets affected Number of octets affected/11.3.41 M TLV 5 */
+ ELEM_MAND_TELV(BSSGP_IEI_NUMBER_OF_OCTETS_AFFECTED, BSSGP_PDU_TYPE, DE_BSSGP_NO_OF_OCT_AFFECTED , NULL);
+ /* NSEI (new) NSEI/11.3.48 C (note 2) 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);
}
/*
- * 10.4.3 LLC-DISCARDED
+ * 10.4.3 LLC-DISCARDED
*/
static void
bssgp_llc_discarded(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* Direction: BSS to SGSN */
- pinfo->link_dir = P2P_DIR_UL;
+ /* Direction: BSS to SGSN */
+ pinfo->link_dir = P2P_DIR_UL;
- /* TLLI TLLI/11.3.35 M TLV 6 */
- ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
- /* LLC Frames Discarded LLC Frames Discarded/11.3.16 M TLV 3 */
- ELEM_MAND_TELV(BSSGP_IEI_LLC_FRAMES_DISCARDED, BSSGP_PDU_TYPE, DE_BSSGP_LLC_FRAMES_DISC , NULL);
- /* BVCI BVCI/11.3.6 M TLV 4 */
- ELEM_MAND_TELV(BSSGP_IEI_BVCI, BSSGP_PDU_TYPE, DE_BSSGP_BVCI , NULL);
- /* Number of octets deleted Number of octets affected/11.3.41 M TLV 5 */
- ELEM_MAND_TELV(BSSGP_IEI_NUMBER_OF_OCTETS_AFFECTED, BSSGP_PDU_TYPE, DE_BSSGP_NO_OF_OCT_AFFECTED , NULL);
- /* 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);
+ /* TLLI TLLI/11.3.35 M TLV 6 */
+ ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
+ /* LLC Frames Discarded LLC Frames Discarded/11.3.16 M TLV 3 */
+ ELEM_MAND_TELV(BSSGP_IEI_LLC_FRAMES_DISCARDED, BSSGP_PDU_TYPE, DE_BSSGP_LLC_FRAMES_DISC , NULL);
+ /* BVCI BVCI/11.3.6 M TLV 4 */
+ ELEM_MAND_TELV(BSSGP_IEI_BVCI, BSSGP_PDU_TYPE, DE_BSSGP_BVCI , NULL);
+ /* Number of octets deleted Number of octets affected/11.3.41 M TLV 5 */
+ ELEM_MAND_TELV(BSSGP_IEI_NUMBER_OF_OCTETS_AFFECTED, BSSGP_PDU_TYPE, DE_BSSGP_NO_OF_OCT_AFFECTED , NULL);
+ /* 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);
}
/*
- * 10.4.4 FLOW-CONTROL-BVC
+ * 10.4.4 FLOW-CONTROL-BVC
*/
static void
bssgp_flow_control_bvc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* This PDU informs the flow control mechanism at an SGSN of the status of a
- * BVC's maximum acceptable SGSN to BSS throughput on the Gb interface.
- */
- /* Direction: BSS to SGSN */
- pinfo->link_dir = P2P_DIR_UL;
+ /* This PDU informs the flow control mechanism at an SGSN of the status of a
+ * BVC's maximum acceptable SGSN to BSS throughput on the Gb interface.
+ */
+ /* Direction: BSS to SGSN */
+ pinfo->link_dir = P2P_DIR_UL;
- /* Tag Tag/11.3.34 M TLV 3 */
- ELEM_MAND_TELV(BSSGP_IEI_TAG, BSSGP_PDU_TYPE, DE_BSSGP_TAG , NULL);
- /* BVC Bucket Size BVC Bucket Size/11.3.5 M TLV 4 */
- ELEM_MAND_TELV(0x05, BSSGP_PDU_TYPE, DE_BSSGP_BVC_BUCKET_SIZE , NULL);
- /* Bucket Leak Rate Bucket Leak Rate/11.3.4 M TLV 4 */
- ELEM_MAND_TELV(BSSGP_IEI_BUCKET_LEAK_RATE, BSSGP_PDU_TYPE, DE_BSSGP_BUCKET_LEAK_RATE , NULL);
- /* Bmax default MS Bmax default MS/11.3.2 M TLV 4 */
- ELEM_MAND_TELV(0x01, BSSGP_PDU_TYPE, DE_BSSGP_BMAX_DEFAULT_MS , NULL);
- /* R_default_MS R_default_MS/11.3.32 M TLV 4 */
- ELEM_MAND_TELV(0x1c, BSSGP_PDU_TYPE, DE_BSSGP_R_DEFAULT_MS , NULL);
- /* Bucket_Full Ratio Bucket_Full Ratio/11.3.46 C TLV 3 */
- ELEM_OPT_TELV(BSSGP_IEI_BUCKET_FULL_RATIO, BSSGP_PDU_TYPE, DE_BSSGP_BUCKET_FULL_RATIO , NULL);
- /* BVC Measurement BVC Measurement/11.3.7 O TLV 4 */
- ELEM_OPT_TELV(0x06, BSSGP_PDU_TYPE, DE_BSSGP_BVC_MEAS , NULL);
- /* 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);
+ /* Tag Tag/11.3.34 M TLV 3 */
+ ELEM_MAND_TELV(BSSGP_IEI_TAG, BSSGP_PDU_TYPE, DE_BSSGP_TAG , NULL);
+ /* BVC Bucket Size BVC Bucket Size/11.3.5 M TLV 4 */
+ ELEM_MAND_TELV(0x05, BSSGP_PDU_TYPE, DE_BSSGP_BVC_BUCKET_SIZE , NULL);
+ /* Bucket Leak Rate Bucket Leak Rate/11.3.4 M TLV 4 */
+ ELEM_MAND_TELV(BSSGP_IEI_BUCKET_LEAK_RATE, BSSGP_PDU_TYPE, DE_BSSGP_BUCKET_LEAK_RATE , NULL);
+ /* Bmax default MS Bmax default MS/11.3.2 M TLV 4 */
+ ELEM_MAND_TELV(0x01, BSSGP_PDU_TYPE, DE_BSSGP_BMAX_DEFAULT_MS , NULL);
+ /* R_default_MS R_default_MS/11.3.32 M TLV 4 */
+ ELEM_MAND_TELV(0x1c, BSSGP_PDU_TYPE, DE_BSSGP_R_DEFAULT_MS , NULL);
+ /* Bucket_Full Ratio Bucket_Full Ratio/11.3.46 C TLV 3 */
+ ELEM_OPT_TELV(BSSGP_IEI_BUCKET_FULL_RATIO, BSSGP_PDU_TYPE, DE_BSSGP_BUCKET_FULL_RATIO , NULL);
+ /* BVC Measurement BVC Measurement/11.3.7 O TLV 4 */
+ ELEM_OPT_TELV(0x06, BSSGP_PDU_TYPE, DE_BSSGP_BVC_MEAS , NULL);
+ /* 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);
}
/*
- * 10.4.5 FLOW-CONTROL-BVC-ACK
+ * 10.4.5 FLOW-CONTROL-BVC-ACK
*/
static void
bssgp_flow_control_bvc_ack(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* This PDU informs the flow control mechanism at the BSS that the SGSN has received
- * the FLOW-CONTROL-BVC PDU indicated by the Tag.
- */
+ /* This PDU informs the flow control mechanism at the BSS that the SGSN has received
+ * the FLOW-CONTROL-BVC PDU indicated by the Tag.
+ */
- /* Direction: SGSN to BSS */
- pinfo->link_dir = P2P_DIR_DL;
+ /* Direction: SGSN to BSS */
+ pinfo->link_dir = P2P_DIR_DL;
- /* Tag Tag/11.3.34 M TLV 3 */
- ELEM_MAND_TELV(BSSGP_IEI_TAG, BSSGP_PDU_TYPE, DE_BSSGP_TAG , NULL);
+ /* 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);
}
/*
- * 10.4.6 FLOW-CONTROL-MS
+ * 10.4.6 FLOW-CONTROL-MS
*/
static void
bssgp_flow_control_ms(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* This PDU informs the flow control mechanism at an SGSN of the status of an MS's
- * maximum acceptable SGSN to BSS throughput on the Gb interface.
- */
+ /* This PDU informs the flow control mechanism at an SGSN of the status of an MS's
+ * maximum acceptable SGSN to BSS throughput on the Gb interface.
+ */
- /* Direction: BSS to SGSN */
- pinfo->link_dir = P2P_DIR_UL;
+ /* Direction: BSS to SGSN */
+ pinfo->link_dir = P2P_DIR_UL;
- /* TLLI TLLI/11.3.35 M TLV 6 */
- ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
- /* Tag Tag/11.3.34 M TLV 3 */
- ELEM_MAND_TELV(BSSGP_IEI_TAG, BSSGP_PDU_TYPE, DE_BSSGP_TAG , NULL);
- /* MS Bucket Size MS Bucket Size/11.3.21 M TLV 4 */
- ELEM_MAND_TELV(BSSGP_IEI_MS_BUCKET_SIZE, BSSGP_PDU_TYPE, DE_BSSGP_MS_BUCKET_SIZE , NULL);
- /* Bucket Leak rate Bucket Leak rate/11.3.4 M TLV 4 */
- ELEM_MAND_TELV(BSSGP_IEI_BUCKET_LEAK_RATE, BSSGP_PDU_TYPE, DE_BSSGP_BUCKET_LEAK_RATE , NULL);
- /* Bucket_Full Ratio Bucket_Full Ratio/11.3.46 C TLV 3 */
- ELEM_OPT_TELV(BSSGP_IEI_BUCKET_FULL_RATIO, BSSGP_PDU_TYPE, DE_BSSGP_BUCKET_FULL_RATIO , NULL);
- /* 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);
+ /* TLLI TLLI/11.3.35 M TLV 6 */
+ ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
+ /* Tag Tag/11.3.34 M TLV 3 */
+ ELEM_MAND_TELV(BSSGP_IEI_TAG, BSSGP_PDU_TYPE, DE_BSSGP_TAG , NULL);
+ /* MS Bucket Size MS Bucket Size/11.3.21 M TLV 4 */
+ ELEM_MAND_TELV(BSSGP_IEI_MS_BUCKET_SIZE, BSSGP_PDU_TYPE, DE_BSSGP_MS_BUCKET_SIZE , NULL);
+ /* Bucket Leak rate Bucket Leak rate/11.3.4 M TLV 4 */
+ ELEM_MAND_TELV(BSSGP_IEI_BUCKET_LEAK_RATE, BSSGP_PDU_TYPE, DE_BSSGP_BUCKET_LEAK_RATE , NULL);
+ /* Bucket_Full Ratio Bucket_Full Ratio/11.3.46 C TLV 3 */
+ ELEM_OPT_TELV(BSSGP_IEI_BUCKET_FULL_RATIO, BSSGP_PDU_TYPE, DE_BSSGP_BUCKET_FULL_RATIO , NULL);
+ /* 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);
}
/*
- * 10.4.7 FLOW-CONTROL-MS-ACK
+ * 10.4.7 FLOW-CONTROL-MS-ACK
*/
static void
bssgp_flow_control_ms_ack(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* This PDU informs the flow control mechanism at the BSS that the SGSN has received
- * the FLOW-CONTROL-MS PDU indicated by the TLLI and the Tag. */
- /* Direction: SGSN to BSS */
- pinfo->link_dir = P2P_DIR_DL;
+ /* This PDU informs the flow control mechanism at the BSS that the SGSN has received
+ * the FLOW-CONTROL-MS PDU indicated by the TLLI and the Tag. */
+ /* Direction: SGSN to BSS */
+ pinfo->link_dir = P2P_DIR_DL;
- /* TLLI TLLI/11.3.35 M TLV 6 */
- ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
- /* Tag Tag/11.3.34 M TLV 3 */
- ELEM_MAND_TELV(BSSGP_IEI_TAG, BSSGP_PDU_TYPE, DE_BSSGP_TAG , NULL);
+ /* TLLI TLLI/11.3.35 M TLV 6 */
+ ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
+ /* 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);
}
/*
- * 10.4.8 BVC-BLOCK
+ * 10.4.8 BVC-BLOCK
*/
static void
bssgp_bvc_block(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* This PDU indicates that the contained BVC shall be blocked at the recipient entity. */
- /* BSS to SGSN */
- pinfo->link_dir = P2P_DIR_UL;
+ /* This PDU indicates that the contained BVC shall be blocked at the recipient entity. */
+ /* BSS to SGSN */
+ pinfo->link_dir = P2P_DIR_UL;
- /* BVCI BVCI/11.3.6 M TLV 4 */
- ELEM_MAND_TELV(BSSGP_IEI_BVCI, BSSGP_PDU_TYPE, DE_BSSGP_BVCI , NULL);
- /* Cause Cause/11.3.8 M TLV 3 */
- ELEM_MAND_TELV(BSSGP_IEI_CAUSE,BSSGP_PDU_TYPE, DE_BSSGP_CAUSE, NULL);
+ /* BVCI BVCI/11.3.6 M TLV 4 */
+ ELEM_MAND_TELV(BSSGP_IEI_BVCI, BSSGP_PDU_TYPE, DE_BSSGP_BVCI , NULL);
+ /* 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);
}
/*
- * 10.4.9 BVC-BLOCK-ACK
+ * 10.4.9 BVC-BLOCK-ACK
*/
static void
bssgp_bvc_block_ack(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* This PDU acknowledges that a BVC has been blocked. */
- /* SGSN to BSS */
- pinfo->link_dir = P2P_DIR_DL;
+ /* This PDU acknowledges that a BVC has been blocked. */
+ /* SGSN to BSS */
+ pinfo->link_dir = P2P_DIR_DL;
- /* BVCI BVCI/11.3.6 M TLV 4 */
- ELEM_MAND_TELV(BSSGP_IEI_BVCI, BSSGP_PDU_TYPE, DE_BSSGP_BVCI , NULL);
+ /* 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);
}
/*
- * 10.4.10 BVC-UNBLOCK
+ * 10.4.10 BVC-UNBLOCK
*/
static void
bssgp_bvc_un_block(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* This PDU indicates that the identified BVC shall be unblocked at the recipient entity. */
- /* Direction: BSS to SGSN */
- pinfo->link_dir = P2P_DIR_UL;
+ /* This PDU indicates that the identified BVC shall be unblocked at the recipient entity. */
+ /* Direction: BSS to SGSN */
+ pinfo->link_dir = P2P_DIR_UL;
- /* BVCI BVCI/11.3.6 M TLV 4 */
- ELEM_MAND_TELV(BSSGP_IEI_BVCI, BSSGP_PDU_TYPE, DE_BSSGP_BVCI , NULL);
+ /* 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);
}
/*
- * 10.4.11 BVC-UNBLOCK-ACK
+ * 10.4.11 BVC-UNBLOCK-ACK
*/
static void
bssgp_bvc_un_block_ack(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* This PDU acknowledges that a BVC has been unblocked. */
- /* Direction: SGSN to BSS */
- pinfo->link_dir = P2P_DIR_DL;
+ /* This PDU acknowledges that a BVC has been unblocked. */
+ /* Direction: SGSN to BSS */
+ pinfo->link_dir = P2P_DIR_DL;
- /* BVCI BVCI/11.3.6 M TLV 4 */
- ELEM_MAND_TELV(BSSGP_IEI_BVCI, BSSGP_PDU_TYPE, DE_BSSGP_BVCI , NULL);
+ /* 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);
}
/*
- * 10.4.12 BVC-RESET
+ * 10.4.12 BVC-RESET
*/
static void
bssgp_bvc_reset(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* This PDU indicates that BVC initialisation is required, e.g. because of a BVC failure. */
- /* Direction: SGSN to BSS, BSS to SGSN */
+ /* This PDU indicates that BVC initialisation is required, e.g. because of a BVC failure. */
+ /* Direction: SGSN to BSS, BSS to SGSN */
- /* BVCI BVCI/11.3.6 M TLV 4 */
- ELEM_MAND_TELV(BSSGP_IEI_BVCI, BSSGP_PDU_TYPE, DE_BSSGP_BVCI , NULL);
- /* Cause Cause/11.3.8 M TLV 3 */
- ELEM_MAND_TELV(BSSGP_IEI_CAUSE,BSSGP_PDU_TYPE, DE_BSSGP_CAUSE, NULL);
- /* Cell Identifier (note 1) C TLV 10 */
- ELEM_OPT_TELV(BSSGP_IEI_CELL_IDENTIFIER, BSSGP_PDU_TYPE, DE_BSSGP_CELL_ID , NULL);
- /* Feature bitmap (note 2) Feature bitmap/11.3.45 O TLV 3 */
- ELEM_OPT_TELV(0x3b, BSSGP_PDU_TYPE, DE_BSSGP_FEATURE_BITMAP , NULL);
- /* 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);
+ /* BVCI BVCI/11.3.6 M TLV 4 */
+ ELEM_MAND_TELV(BSSGP_IEI_BVCI, BSSGP_PDU_TYPE, DE_BSSGP_BVCI , NULL);
+ /* Cause Cause/11.3.8 M TLV 3 */
+ ELEM_MAND_TELV(BSSGP_IEI_CAUSE,BSSGP_PDU_TYPE, DE_BSSGP_CAUSE, NULL);
+ /* Cell Identifier (note 1) C TLV 10 */
+ ELEM_OPT_TELV(BSSGP_IEI_CELL_IDENTIFIER, BSSGP_PDU_TYPE, DE_BSSGP_CELL_ID , NULL);
+ /* Feature bitmap (note 2) Feature bitmap/11.3.45 O TLV 3 */
+ ELEM_OPT_TELV(0x3b, BSSGP_PDU_TYPE, DE_BSSGP_FEATURE_BITMAP , NULL);
+ /* 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);
}
/*
- * 10.4.13 BVC-RESET-ACK
+ * 10.4.13 BVC-RESET-ACK
*/
static void
bssgp_bvc_reset_ack(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* This PDU indicates that BVC initialisation has been executed */
- /* BSS to SGSN, SGSN to BSS */
+ /* This PDU indicates that BVC initialisation has been executed */
+ /* BSS to SGSN, SGSN to BSS */
- /* BVCI BVCI/11.3.6 M TLV 4 */
- ELEM_MAND_TELV(BSSGP_IEI_BVCI, BSSGP_PDU_TYPE, DE_BSSGP_BVCI , NULL);
- /* Cell Identifier (note 1) C TLV 10 */
- ELEM_OPT_TELV(BSSGP_IEI_CELL_IDENTIFIER, BSSGP_PDU_TYPE, DE_BSSGP_CELL_ID , NULL);
- /* Feature bitmap (note 2) Feature bitmap/11.3.45 O TLV 3 */
- ELEM_OPT_TELV(0x3b, BSSGP_PDU_TYPE, DE_BSSGP_FEATURE_BITMAP , NULL);
- /* 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);
+ /* BVCI BVCI/11.3.6 M TLV 4 */
+ ELEM_MAND_TELV(BSSGP_IEI_BVCI, BSSGP_PDU_TYPE, DE_BSSGP_BVCI , NULL);
+ /* Cell Identifier (note 1) C TLV 10 */
+ ELEM_OPT_TELV(BSSGP_IEI_CELL_IDENTIFIER, BSSGP_PDU_TYPE, DE_BSSGP_CELL_ID , NULL);
+ /* Feature bitmap (note 2) Feature bitmap/11.3.45 O TLV 3 */
+ ELEM_OPT_TELV(0x3b, BSSGP_PDU_TYPE, DE_BSSGP_FEATURE_BITMAP , NULL);
+ /* 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);
}
/*
- * 10.4.14 STATUS
+ * 10.4.14 STATUS
*/
static void
bssgp_status(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* This PDU indicates that an exception condition occurred. */
- /* Direction: SGSN to BSS, BSS to SGSN */
+ /* This PDU indicates that an exception condition occurred. */
+ /* Direction: SGSN to BSS, BSS to SGSN */
- /* Cause Cause/11.3.8 M TLV 3 */
- ELEM_MAND_TELV(BSSGP_IEI_CAUSE,BSSGP_PDU_TYPE, DE_BSSGP_CAUSE, NULL);
- /* BVCI BVCI/11.3.6 C TLV 4 */
- ELEM_MAND_TELV(BSSGP_IEI_BVCI, BSSGP_PDU_TYPE, DE_BSSGP_BVCI , NULL);
- /* 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);
+ /* Cause Cause/11.3.8 M TLV 3 */
+ ELEM_MAND_TELV(BSSGP_IEI_CAUSE,BSSGP_PDU_TYPE, DE_BSSGP_CAUSE, NULL);
+ /* BVCI BVCI/11.3.6 C TLV 4 */
+ ELEM_MAND_TELV(BSSGP_IEI_BVCI, BSSGP_PDU_TYPE, DE_BSSGP_BVCI , NULL);
+ /* 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);
}
/*
- * 10.4.15 SGSN-INVOKE-TRACE
+ * 10.4.15 SGSN-INVOKE-TRACE
*/
static void
bssgp_sgsn_invoke_trace(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* This PDU indicates that the BSS shall begin the production of a trace record for an MS. */
- /* Direction: SGSN to BSS */
+ /* This PDU indicates that the BSS shall begin the production of a trace record for an MS. */
+ /* Direction: SGSN to BSS */
- pinfo->link_dir = P2P_DIR_UL;
+ pinfo->link_dir = P2P_DIR_UL;
- /* Trace Type Trace Type/11.3.38 M TLV 3 */
- ELEM_MAND_TELV(0x22, BSSGP_PDU_TYPE, DE_BSSGP_BVCI , NULL);
- /* Trace Reference Trace Reference/11.3.37 M TLV 4 */
- ELEM_MAND_TELV(0x21, BSSGP_PDU_TYPE, DE_BSSGP_TRACE_REF , NULL);
- /* Trigger Id Trigger Id/11.3.40 O TLV 4-24 */
- ELEM_OPT_TELV(0x24, BSSGP_PDU_TYPE, DE_BSSGP_TRIGGER_ID , NULL);
- /* Mobile Id Mobile Id/11.3.20 O TLV 3-10 */
- ELEM_OPT_TELV(0x11,GSM_A_PDU_TYPE_COMMON, DE_MID, NULL);
- /* OMC Id OMC Id/11.3.23 O TLV 4-24 */
- ELEM_OPT_TELV(0x14,GSM_A_PDU_TYPE_COMMON, DE_BSSGP_OMC_ID, NULL);
- /* TransactionId TransactionId/11.3.39 O TLV 4 */
- ELEM_OPT_TELV(0x23, BSSGP_PDU_TYPE, DE_BSSGP_TRANSACTION_ID , NULL);
+ /* Trace Type Trace Type/11.3.38 M TLV 3 */
+ ELEM_MAND_TELV(0x22, BSSGP_PDU_TYPE, DE_BSSGP_BVCI , NULL);
+ /* Trace Reference Trace Reference/11.3.37 M TLV 4 */
+ ELEM_MAND_TELV(0x21, BSSGP_PDU_TYPE, DE_BSSGP_TRACE_REF , NULL);
+ /* Trigger Id Trigger Id/11.3.40 O TLV 4-24 */
+ ELEM_OPT_TELV(0x24, BSSGP_PDU_TYPE, DE_BSSGP_TRIGGER_ID , NULL);
+ /* Mobile Id Mobile Id/11.3.20 O TLV 3-10 */
+ ELEM_OPT_TELV(0x11,GSM_A_PDU_TYPE_COMMON, DE_MID, NULL);
+ /* OMC Id OMC Id/11.3.23 O TLV 4-24 */
+ ELEM_OPT_TELV(0x14,GSM_A_PDU_TYPE_COMMON, DE_BSSGP_OMC_ID, NULL);
+ /* 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);
}
/*
- * 10.4.16 DOWNLOAD-BSS-PFC
+ * 10.4.16 DOWNLOAD-BSS-PFC
*/
static void
bssgp_download_bss_pfc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* This PDU requests a SGSN to initiate a CREATE-BSS-PFC procedure. */
- /* Direction: BSS to SGSN */
- pinfo->link_dir = P2P_DIR_UL;
+ /* This PDU requests a SGSN to initiate a CREATE-BSS-PFC procedure. */
+ /* Direction: BSS to SGSN */
+ pinfo->link_dir = P2P_DIR_UL;
- /* TLLI TLLI/11.3.35 M TLV 6 */
- ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
- /* PFI PFI/11.3.42 M TLV 3 */
- ELEM_MAND_TELV(BSSGP_IEI_PFI , GSM_A_PDU_TYPE_GM, DE_PACKET_FLOW_ID , NULL);
+ /* TLLI TLLI/11.3.35 M TLV 6 */
+ ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
+ /* 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);
}
/*
- * 10.4.17 CREATE-BSS-PFC
+ * 10.4.17 CREATE-BSS-PFC
*/
static void
bssgp_create_bss_pfc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
-
- curr_offset = offset;
- curr_len = len;
-
- /* This PDU allows the SGSN to request that a BSS create or modify a BSS Packet Flow Context. */
- /* Direction: SGSN to BSS */
- pinfo->link_dir = P2P_DIR_DL;
-
- /* TLLI TLLI/11.3.35 M TLV 6 */
- ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
- /* IMSI IMSI/11.3.14 O (note 4) TLV 5 -10 */
- ELEM_OPT_TELV(BSSGP_IEI_IMSI, BSSGP_PDU_TYPE, DE_BSSGP_IMSI , NULL);
- /* 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");
- /* ABQP ABQP/11.3.43 M TLV 13-? */
- ELEM_MAND_TELV(0x3a , GSM_A_PDU_TYPE_GM, DE_QOS , NULL);
- /* Service UTRAN CCO Service UTRAN CCO/11.3.47 O TLV 3 */
- ELEM_OPT_TELV(BSSGP_IEI_SERVICE_UTRAN_CCO, BSSGP_PDU_TYPE, DE_BSSGP_SERV_UTRAN_CCO, NULL);
- /* MS Radio Access Capability MS Radio Access Capability/11.3.22 O (note 1) TLV 7-? */
- ELEM_OPT_TELV(BSSGP_IEI_MS_RADIO_ACCESS_CAPABILITY, GSM_A_PDU_TYPE_GM, DE_MS_RAD_ACC_CAP , NULL);
- /* 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(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-? */
- ELEM_OPT_TELV(0x80, BSSGP_PDU_TYPE, DE_BSSGP_E_UTRAN_INTER_RAT_HO_INFO, NULL);
- /* Subscriber Profile ID for RAT/Frequency priority (note 5)
- * Subscriber Profile ID for RAT/Frequency priority/11.3.105 O TLV 3
- */
- 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);
-}
-
-/*
- * 10.4.18 CREATE-BSS-PFC-ACK
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
+
+ curr_offset = offset;
+ curr_len = len;
+
+ /* This PDU allows the SGSN to request that a BSS create or modify a BSS Packet Flow Context. */
+ /* Direction: SGSN to BSS */
+ pinfo->link_dir = P2P_DIR_DL;
+
+ /* TLLI TLLI/11.3.35 M TLV 6 */
+ ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
+ /* IMSI IMSI/11.3.14 O (note 4) TLV 5 -10 */
+ ELEM_OPT_TELV(BSSGP_IEI_IMSI, BSSGP_PDU_TYPE, DE_BSSGP_IMSI , NULL);
+ /* 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");
+ /* ABQP ABQP/11.3.43 M TLV 13-? */
+ ELEM_MAND_TELV(0x3a , GSM_A_PDU_TYPE_GM, DE_QOS , NULL);
+ /* Service UTRAN CCO Service UTRAN CCO/11.3.47 O TLV 3 */
+ ELEM_OPT_TELV(BSSGP_IEI_SERVICE_UTRAN_CCO, BSSGP_PDU_TYPE, DE_BSSGP_SERV_UTRAN_CCO, NULL);
+ /* MS Radio Access Capability MS Radio Access Capability/11.3.22 O (note 1) TLV 7-? */
+ ELEM_OPT_TELV(BSSGP_IEI_MS_RADIO_ACCESS_CAPABILITY, GSM_A_PDU_TYPE_GM, DE_MS_RAD_ACC_CAP , NULL);
+ /* 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(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-? */
+ ELEM_OPT_TELV(0x80, BSSGP_PDU_TYPE, DE_BSSGP_E_UTRAN_INTER_RAT_HO_INFO, NULL);
+ /* Subscriber Profile ID for RAT/Frequency priority (note 5)
+ * Subscriber Profile ID for RAT/Frequency priority/11.3.105 O TLV 3
+ */
+ 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);
+}
+
+/*
+ * 10.4.18 CREATE-BSS-PFC-ACK
*/
static void
bssgp_create_bss_pfc_ack(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* This PDU allows the BSS to acknowledge a request from the SGSN for the creation
- * or modification of a BSS Packet Flow Context.
- */
- /* Direction: BSS to SGSN */
- pinfo->link_dir = P2P_DIR_UL;
+ /* This PDU allows the BSS to acknowledge a request from the SGSN for the creation
+ * or modification of a BSS Packet Flow Context.
+ */
+ /* Direction: BSS to SGSN */
+ pinfo->link_dir = P2P_DIR_UL;
- /* TLLI TLLI/11.3.35 M TLV 6 */
- ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
- /* PFI PFI/11.3.42 M TLV 3 */
- ELEM_MAND_TELV(BSSGP_IEI_PFI , GSM_A_PDU_TYPE_GM, DE_PACKET_FLOW_ID , NULL);
- /* ABQP ABQP/11.3.43 M TLV 13-? */
- ELEM_MAND_TELV(0x3a , GSM_A_PDU_TYPE_GM, DE_QOS , NULL);
- /* Cause Cause/11.3.8 O TLV 3 */
- ELEM_OPT_TELV(BSSGP_IEI_CAUSE,BSSGP_PDU_TYPE, DE_BSSGP_CAUSE, NULL);
+ /* TLLI TLLI/11.3.35 M TLV 6 */
+ ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
+ /* PFI PFI/11.3.42 M TLV 3 */
+ ELEM_MAND_TELV(BSSGP_IEI_PFI , GSM_A_PDU_TYPE_GM, DE_PACKET_FLOW_ID , NULL);
+ /* ABQP ABQP/11.3.43 M TLV 13-? */
+ ELEM_MAND_TELV(0x3a , GSM_A_PDU_TYPE_GM, DE_QOS , NULL);
+ /* 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);
}
/*
- * 10.4.19 CREATE-BSS-PFC-NACK
+ * 10.4.19 CREATE-BSS-PFC-NACK
*/
static void
bssgp_create_bss_pfc_nack(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* This PDU allows the BSS to Nack a request from the SGSN for the
- * creation of a BSS Packet Flow Context
- */
- /* Direction: BSS to SGSN */
- pinfo->link_dir = P2P_DIR_UL;
+ /* This PDU allows the BSS to Nack a request from the SGSN for the
+ * creation of a BSS Packet Flow Context
+ */
+ /* Direction: BSS to SGSN */
+ pinfo->link_dir = P2P_DIR_UL;
- /* TLLI TLLI/11.3.35 M TLV 6 */
- ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
- /* PFI PFI/11.3.42 M TLV 3 */
- ELEM_MAND_TELV(BSSGP_IEI_PFI , GSM_A_PDU_TYPE_GM, DE_PACKET_FLOW_ID , NULL);
- /* Cause Cause/11.3.8 M TLV 3 */
- ELEM_MAND_TELV(BSSGP_IEI_CAUSE,BSSGP_PDU_TYPE, DE_BSSGP_CAUSE, NULL);
+ /* TLLI TLLI/11.3.35 M TLV 6 */
+ ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
+ /* PFI PFI/11.3.42 M TLV 3 */
+ ELEM_MAND_TELV(BSSGP_IEI_PFI , GSM_A_PDU_TYPE_GM, DE_PACKET_FLOW_ID , NULL);
+ /* 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);
}
/*
- * 10.4.20 MODIFY-BSS-PFC
+ * 10.4.20 MODIFY-BSS-PFC
*/
static void
bssgp_modify_bss_pfc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* This PDU allows the BSS to request a modification of a BSS Packet Flow Context. */
- /* Direction: BSS to SGSN */
- pinfo->link_dir = P2P_DIR_UL;
+ /* This PDU allows the BSS to request a modification of a BSS Packet Flow Context. */
+ /* Direction: BSS to SGSN */
+ pinfo->link_dir = P2P_DIR_UL;
- /* TLLI TLLI/11.3.35 M TLV 6 */
- ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
- /* PFI PFI/11.3.42 M TLV 3 */
- ELEM_MAND_TELV(BSSGP_IEI_PFI , GSM_A_PDU_TYPE_GM, DE_PACKET_FLOW_ID , NULL);
- /* ABQP ABQP/11.3.43 M TLV 13-? */
- ELEM_MAND_TELV(0x3a , GSM_A_PDU_TYPE_GM, DE_QOS , NULL);
+ /* TLLI TLLI/11.3.35 M TLV 6 */
+ ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
+ /* PFI PFI/11.3.42 M TLV 3 */
+ ELEM_MAND_TELV(BSSGP_IEI_PFI , GSM_A_PDU_TYPE_GM, DE_PACKET_FLOW_ID , NULL);
+ /* 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);
}
/*
- * 10.4.21 MODIFY-BSS-PFC-ACK
+ * 10.4.21 MODIFY-BSS-PFC-ACK
*/
static void
bssgp_modify_bss_pfc_ack(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* This PDU allows the SGSN to acknowledge a modification to a BSS Packet Flow Context. */
- /* Direction: SGSN to BSS */
- pinfo->link_dir = P2P_DIR_DL;
+ /* This PDU allows the SGSN to acknowledge a modification to a BSS Packet Flow Context. */
+ /* Direction: SGSN to BSS */
+ pinfo->link_dir = P2P_DIR_DL;
- /* TLLI TLLI/11.3.35 M TLV 6 */
- ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
- /* 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(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);
+ /* TLLI TLLI/11.3.35 M TLV 6 */
+ ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
+ /* 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(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);
- EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
+ EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
/*
- * 10.4.22 DELETE-BSS-PFC
+ * 10.4.22 DELETE-BSS-PFC
*/
static void
bssgp_delete_bss_pfc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* This PDU allows the SGSN to request that a BSS delete a BSS Packet Flow Context. */
- /* Direction: SGSN to BSS */
- pinfo->link_dir = P2P_DIR_DL;
+ /* This PDU allows the SGSN to request that a BSS delete a BSS Packet Flow Context. */
+ /* Direction: SGSN to BSS */
+ pinfo->link_dir = P2P_DIR_DL;
- /* TLLI TLLI/11.3.35 M TLV 6 */
- ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
- /* PFI PFI/11.3.42 M TLV 3 */
- ELEM_MAND_TELV(BSSGP_IEI_PFI , GSM_A_PDU_TYPE_GM, DE_PACKET_FLOW_ID , NULL);
+ /* TLLI TLLI/11.3.35 M TLV 6 */
+ ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
+ /* 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);
}
/*
- * 10.4.23 DELETE-BSS-PFC-ACK
+ * 10.4.23 DELETE-BSS-PFC-ACK
*/
static void
bssgp_delete_bss_pfc_ack(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* This PDU allows the BSS to acknowledge a request for the deletion of a BSS Packet Flow Context. */
- /* Direction: BSS to SGSN */
- pinfo->link_dir = P2P_DIR_UL;
+ /* This PDU allows the BSS to acknowledge a request for the deletion of a BSS Packet Flow Context. */
+ /* Direction: BSS to SGSN */
+ pinfo->link_dir = P2P_DIR_UL;
- /* TLLI TLLI/11.3.35 M TLV 6 */
- ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
- /* PFI PFI/11.3.42 M TLV 3 */
- ELEM_MAND_TELV(BSSGP_IEI_PFI , GSM_A_PDU_TYPE_GM, DE_PACKET_FLOW_ID , NULL);
+ /* TLLI TLLI/11.3.35 M TLV 6 */
+ ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
+ /* 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);
}
/*
- * 10.4.24 FLOW-CONTROL-PFC
+ * 10.4.24 FLOW-CONTROL-PFC
*/
static void
bssgp_flow_cntrl_pfc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* This PDU provides the SGSN with flow control information regarding one or more PFC(s) of a given Mobile Station. */
- /* Direction: BSS to SGSN */
- pinfo->link_dir = P2P_DIR_UL;
+ /* This PDU provides the SGSN with flow control information regarding one or more PFC(s) of a given Mobile Station. */
+ /* Direction: BSS to SGSN */
+ pinfo->link_dir = P2P_DIR_UL;
- /* TLLI TLLI/11.3.35 M TLV 6 */
- ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
- /* Tag Tag/11.3.34 M TLV 3 */
- ELEM_MAND_TELV(BSSGP_IEI_TAG, BSSGP_PDU_TYPE, DE_BSSGP_TAG , NULL);
- /* MS Bucket Size MS Bucket Size/11.3.21 O TLV 4 */
- ELEM_OPT_TELV(BSSGP_IEI_MS_BUCKET_SIZE, BSSGP_PDU_TYPE, DE_BSSGP_MS_BUCKET_SIZE , NULL);
- /* Bucket Leak rate Bucket Leak rate/11.3.4 O TLV 4 */
- ELEM_OPT_TELV(0x3b, BSSGP_PDU_TYPE, DE_BSSGP_FEATURE_BITMAP , NULL);
- /* Bucket_Full Ratio Bucket_Full Ratio/11.3.46 O TLV 3 */
- ELEM_OPT_TELV(BSSGP_IEI_BUCKET_FULL_RATIO, BSSGP_PDU_TYPE, DE_BSSGP_BUCKET_FULL_RATIO , NULL);
- /* PFC flow control parameters PFC flow control parameters/11.3.68 M TLV */
- ELEM_MAND_TELV(0x52, BSSGP_PDU_TYPE, DE_BSSGP_PFC_FLOW_CTRL , NULL);
- /* 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);
+ /* TLLI TLLI/11.3.35 M TLV 6 */
+ ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
+ /* Tag Tag/11.3.34 M TLV 3 */
+ ELEM_MAND_TELV(BSSGP_IEI_TAG, BSSGP_PDU_TYPE, DE_BSSGP_TAG , NULL);
+ /* MS Bucket Size MS Bucket Size/11.3.21 O TLV 4 */
+ ELEM_OPT_TELV(BSSGP_IEI_MS_BUCKET_SIZE, BSSGP_PDU_TYPE, DE_BSSGP_MS_BUCKET_SIZE , NULL);
+ /* Bucket Leak rate Bucket Leak rate/11.3.4 O TLV 4 */
+ ELEM_OPT_TELV(0x3b, BSSGP_PDU_TYPE, DE_BSSGP_FEATURE_BITMAP , NULL);
+ /* Bucket_Full Ratio Bucket_Full Ratio/11.3.46 O TLV 3 */
+ ELEM_OPT_TELV(BSSGP_IEI_BUCKET_FULL_RATIO, BSSGP_PDU_TYPE, DE_BSSGP_BUCKET_FULL_RATIO , NULL);
+ /* PFC flow control parameters PFC flow control parameters/11.3.68 M TLV */
+ ELEM_MAND_TELV(0x52, BSSGP_PDU_TYPE, DE_BSSGP_PFC_FLOW_CTRL , NULL);
+ /* 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);
}
/*
- * 10.4.25 FLOW-CONTROL-PFC-ACK
+ * 10.4.25 FLOW-CONTROL-PFC-ACK
*/
static void
bssgp_flow_cntrl_pfc_ack(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* This PDU informs the flow control mechanism at the BSS that the SGSN has received the FLOW-CONTROL-PFC
- * PDU indicated by the TLLI and the Tag.
- */
- /* Direction: SGSN to BSS */
- pinfo->link_dir = P2P_DIR_DL;
+ /* This PDU informs the flow control mechanism at the BSS that the SGSN has received the FLOW-CONTROL-PFC
+ * PDU indicated by the TLLI and the Tag.
+ */
+ /* Direction: SGSN to BSS */
+ pinfo->link_dir = P2P_DIR_DL;
- /* TLLI TLLI/11.3.35 M TLV 6 */
- ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
- /* Tag Tag/11.3.34 M TLV 3 */
- ELEM_MAND_TELV(BSSGP_IEI_TAG, BSSGP_PDU_TYPE, DE_BSSGP_TAG , NULL);
+ /* TLLI TLLI/11.3.35 M TLV 6 */
+ ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
+ /* 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);
}
/*
- * 10.4.26 DELETE-BSS-PFC-REQ
+ * 10.4.26 DELETE-BSS-PFC-REQ
*/
static void
bssgp_delete_bss_pfc_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* This PDU allows the BSS to inform the SGSN that the BSS Packet Flow Context cannot be supported anymore */
- /* Direction: BSS to SGSN */
- pinfo->link_dir = P2P_DIR_UL;
+ /* This PDU allows the BSS to inform the SGSN that the BSS Packet Flow Context cannot be supported anymore */
+ /* Direction: BSS to SGSN */
+ pinfo->link_dir = P2P_DIR_UL;
- /* TLLI TLLI/11.3.35 M TLV 6 */
- ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
- /* PFI PFI/11.3.42 M TLV 3 */
- ELEM_MAND_TELV(BSSGP_IEI_PFI , GSM_A_PDU_TYPE_GM, DE_PACKET_FLOW_ID , NULL);
- /* Cause Cause/11.3.8 M TLV 3 */
- ELEM_MAND_TELV(BSSGP_IEI_CAUSE,BSSGP_PDU_TYPE, DE_BSSGP_CAUSE, NULL);
+ /* TLLI TLLI/11.3.35 M TLV 6 */
+ ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
+ /* PFI PFI/11.3.42 M TLV 3 */
+ ELEM_MAND_TELV(BSSGP_IEI_PFI , GSM_A_PDU_TYPE_GM, DE_PACKET_FLOW_ID , NULL);
+ /* 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);
}
/*
- * 10.4.27 PS-HANDOVER-REQUIRED
+ * 10.4.27 PS-HANDOVER-REQUIRED
*/
static void
bssgp_ps_ho_required(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
-
- curr_offset = offset;
- curr_len = len;
-
- /* This PDU initiates the allocation of resources in the target system for an MS. */
- /* Direction: BSS to SGSN */
- pinfo->link_dir = P2P_DIR_UL;
-
- /* TLLI TLLI/11.3.35 M TLV 6 */
- ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
- /* Cause Cause/11.3.8 M TLV 3 */
- ELEM_MAND_TELV(BSSGP_IEI_CAUSE,BSSGP_PDU_TYPE, DE_BSSGP_CAUSE, NULL);
- /* Source Cell Identifier Cell Identifier/11.3.9 M TLV 10 */
- ELEM_MAND_TELV(BSSGP_IEI_CELL_IDENTIFIER, BSSGP_PDU_TYPE, DE_BSSGP_CELL_ID , " - Source");
- /* Target Cell Identifier (note 2) Cell Identifier/11.3.9 C TLV 10 */
- ELEM_OPT_TELV(BSSGP_IEI_CELL_IDENTIFIER, BSSGP_PDU_TYPE, DE_BSSGP_CELL_ID , " - Target");
- /* Source BSS to Target BSS Transparent Container (note 1)
- * Source BSS to Target BSS Transparent Container/11.3.79 C TLV 10-?
- */
- ELEM_OPT_TELV(0x64,BSSGP_PDU_TYPE, DE_BSSGP_SOURCE_BSS_TO_TARGET_BSS_TRANSP_CONT, NULL);
- /* Target RNC Identifier (note 2) (note 3) RNC Identifier/11.3.87 C TLV 10 */
- ELEM_OPT_TELV(0x6c,BSSGP_PDU_TYPE, BE_BSSGP_RNC_ID, " - Target");
- /* Source to Target Transparent Container (note 1)
- * Source to Target Transparent Container/11.3.85 C TLV 3-?
- */
- ELEM_OPT_TELV(0x6a,BSSGP_PDU_TYPE, DE_BSSGP_SRC_TO_TRG_TRANSP_CONT, NULL);
- /* Active PFCs List Active PFCs List/11.3.95c M TLV 3-? */
- ELEM_OPT_TELV(0x77,BSSGP_PDU_TYPE, DE_BSSGP_ACTIVE_PFCS_LIST, NULL);
- /* Target eNB identifier (note 2) (note 3) eNB Identifier/11.3.103 C TLV 3-n */
- ELEM_OPT_TELV(0x7f,BSSGP_PDU_TYPE, DE_BSSGP_ENB_ID, " - Target");
- /* Reliable Inter RAT Handover Info (note 4)
- * 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);
- /* CSG Identifier (note 5) CSG Identifier/11.3.109 C TLV 7 */
- ELEM_OPT_TELV(0x85,BSSGP_PDU_TYPE, DE_BSSGP_CSG_ID, NULL);
- /* 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);
-}
-/*
- * 10.4.28 PS-HANDOVER-REQUIRED-ACK
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
+
+ curr_offset = offset;
+ curr_len = len;
+
+ /* This PDU initiates the allocation of resources in the target system for an MS. */
+ /* Direction: BSS to SGSN */
+ pinfo->link_dir = P2P_DIR_UL;
+
+ /* TLLI TLLI/11.3.35 M TLV 6 */
+ ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
+ /* Cause Cause/11.3.8 M TLV 3 */
+ ELEM_MAND_TELV(BSSGP_IEI_CAUSE,BSSGP_PDU_TYPE, DE_BSSGP_CAUSE, NULL);
+ /* Source Cell Identifier Cell Identifier/11.3.9 M TLV 10 */
+ ELEM_MAND_TELV(BSSGP_IEI_CELL_IDENTIFIER, BSSGP_PDU_TYPE, DE_BSSGP_CELL_ID , " - Source");
+ /* Target Cell Identifier (note 2) Cell Identifier/11.3.9 C TLV 10 */
+ ELEM_OPT_TELV(BSSGP_IEI_CELL_IDENTIFIER, BSSGP_PDU_TYPE, DE_BSSGP_CELL_ID , " - Target");
+ /* Source BSS to Target BSS Transparent Container (note 1)
+ * Source BSS to Target BSS Transparent Container/11.3.79 C TLV 10-?
+ */
+ ELEM_OPT_TELV(0x64,BSSGP_PDU_TYPE, DE_BSSGP_SOURCE_BSS_TO_TARGET_BSS_TRANSP_CONT, NULL);
+ /* Target RNC Identifier (note 2) (note 3) RNC Identifier/11.3.87 C TLV 10 */
+ ELEM_OPT_TELV(0x6c,BSSGP_PDU_TYPE, BE_BSSGP_RNC_ID, " - Target");
+ /* Source to Target Transparent Container (note 1)
+ * Source to Target Transparent Container/11.3.85 C TLV 3-?
+ */
+ ELEM_OPT_TELV(0x6a,BSSGP_PDU_TYPE, DE_BSSGP_SRC_TO_TRG_TRANSP_CONT, NULL);
+ /* Active PFCs List Active PFCs List/11.3.95c M TLV 3-? */
+ ELEM_OPT_TELV(0x77,BSSGP_PDU_TYPE, DE_BSSGP_ACTIVE_PFCS_LIST, NULL);
+ /* Target eNB identifier (note 2) (note 3) eNB Identifier/11.3.103 C TLV 3-n */
+ ELEM_OPT_TELV(0x7f,BSSGP_PDU_TYPE, DE_BSSGP_ENB_ID, " - Target");
+ /* Reliable Inter RAT Handover Info (note 4)
+ * 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);
+ /* CSG Identifier (note 5) CSG Identifier/11.3.109 C TLV 7 */
+ ELEM_OPT_TELV(0x85,BSSGP_PDU_TYPE, DE_BSSGP_CSG_ID, NULL);
+ /* 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);
+}
+/*
+ * 10.4.28 PS-HANDOVER-REQUIRED-ACK
*/
static void
bssgp_ps_ho_required_ack(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* This PDU indicates that resources have been allocated in the target system and
- * that the BSS may initiate the channel change attempt for the corresponding MS.
- */
- /* Direction: SGSN to BSS */
- pinfo->link_dir = P2P_DIR_DL;
+ /* This PDU indicates that resources have been allocated in the target system and
+ * that the BSS may initiate the channel change attempt for the corresponding MS.
+ */
+ /* Direction: SGSN to BSS */
+ pinfo->link_dir = P2P_DIR_DL;
- /* TLLI TLLI/11.3.35 M TLV 6 */
- ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
- /* List of set-up PFCs List of set-up PFCs/11.3.83 M TLV 3-?S */
- ELEM_MAND_TELV(0x68,BSSGP_PDU_TYPE, DE_BSSGP_LIST_OF_SETUP_PFCS, NULL);
- /* Target BSS to Source BSS Transparent Container (note)
- * Target BSS to Source BSS Transparent Container/11.3.80 C TLV 3-?
- */
- ELEM_MAND_TELV(0x65,BSSGP_PDU_TYPE, DE_BSSGP_TARGET_BSS_TO_SOURCE_BSS_TRANSP_CONT, NULL);
- /* Target to Source Transparent Container (note)
- * Target to Source Transparent Container/11.3.86 C TLV 3-?
- */
- ELEM_MAND_TELV(0x6b,BSSGP_PDU_TYPE, DE_BSSGP_TRG_TO_SRC_TRANSP_CONT, NULL);
+ /* TLLI TLLI/11.3.35 M TLV 6 */
+ ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
+ /* List of set-up PFCs List of set-up PFCs/11.3.83 M TLV 3-?S */
+ ELEM_MAND_TELV(0x68,BSSGP_PDU_TYPE, DE_BSSGP_LIST_OF_SETUP_PFCS, NULL);
+ /* Target BSS to Source BSS Transparent Container (note)
+ * Target BSS to Source BSS Transparent Container/11.3.80 C TLV 3-?
+ */
+ ELEM_MAND_TELV(0x65,BSSGP_PDU_TYPE, DE_BSSGP_TARGET_BSS_TO_SOURCE_BSS_TRANSP_CONT, NULL);
+ /* Target to Source Transparent Container (note)
+ * Target to Source Transparent Container/11.3.86 C TLV 3-?
+ */
+ 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);
}
/*
- * 10.4.29 PS-HANDOVER-REQUIRED-NACK
+ * 10.4.29 PS-HANDOVER-REQUIRED-NACK
*/
static void
bssgp_ps_ho_required_nack(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* This PDU informs the source BSS about failed resource allocation in the target system. */
- /* Direction: SGSN to BSS */
- pinfo->link_dir = P2P_DIR_DL;
+ /* This PDU informs the source BSS about failed resource allocation in the target system. */
+ /* Direction: SGSN to BSS */
+ pinfo->link_dir = P2P_DIR_DL;
- /* TLLI TLLI/11.3.35 M TLV 6 */
- ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
- /* Cause Cause/11.3.8 M TLV 3 */
- ELEM_MAND_TELV(BSSGP_IEI_CAUSE,BSSGP_PDU_TYPE, DE_BSSGP_CAUSE, NULL);
+ /* TLLI TLLI/11.3.35 M TLV 6 */
+ ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
+ /* 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);
}
/*
- * 10.4.30 PS-HANDOVER-REQUEST
+ * 10.4.30 PS-HANDOVER-REQUEST
*/
static void
bssgp_ps_ho_request(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
-
- curr_offset = offset;
- curr_len = len;
-
- /* This PDU initiates the allocation of resources for one or more PFCs in the target BSS for an MS. */
- /* Direction: SGSN to BSS */
- pinfo->link_dir = P2P_DIR_DL;
-
- /* TLLI TLLI/11.3.35 M TLV 6 */
- ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
- /* IMSI IMSI/11.3.14 M TLV 5-10 */
- ELEM_MAND_TELV(BSSGP_IEI_IMSI, BSSGP_PDU_TYPE, DE_BSSGP_IMSI , NULL);
- /* Cause Cause/11.3.8 M TLV 3 */
- ELEM_MAND_TELV(BSSGP_IEI_CAUSE,BSSGP_PDU_TYPE, DE_BSSGP_CAUSE, NULL);
- /* Source Cell Identifier (note 1) Cell Identifier/11.3.9 C TLV 10 */
- ELEM_OPT_TELV(BSSGP_IEI_CELL_IDENTIFIER, BSSGP_PDU_TYPE, DE_BSSGP_CELL_ID , " - Source");
- /* Source RNC Identifier (note 1) RNC Identifier/11.3.87 C TLV 10 */
- ELEM_OPT_TELV(0x6c,BSSGP_PDU_TYPE, BE_BSSGP_RNC_ID, " - Source");
- /* Target Cell Identifier Cell Identifier/11.3.9 M TLV 10 */
- ELEM_OPT_TELV(BSSGP_IEI_CELL_IDENTIFIER, BSSGP_PDU_TYPE, DE_BSSGP_CELL_ID , " - Target");
- /* Source BSS to Target BSS Transparent Container Source BSS to Target BSS Transparent Container/11.3.79 M TLV 7-? */
- ELEM_OPT_TELV(0x64,BSSGP_PDU_TYPE, DE_BSSGP_SOURCE_BSS_TO_TARGET_BSS_TRANSP_CONT, NULL);
- /* PFCs to be set-up list PFCs to be set-up list/11.3.82 M TLV 22-? */
- ELEM_OPT_TELV(0x67,BSSGP_PDU_TYPE, DE_BSSGP_PFCS_TO_BE_SET_UP_LIST, NULL);
- /* NAS container for PS Handover NAS container for PS Handover/11.3.81 O TLV 3-? */
- ELEM_OPT_TELV(0x66,GSM_A_PDU_TYPE_COMMON, DE_NAS_CONT_FOR_PS_HO, NULL);
- /* Service UTRAN CCO Service UTRAN CCO/11.3.47 O TLV 3 */
- ELEM_OPT_TELV(BSSGP_IEI_SERVICE_UTRAN_CCO, BSSGP_PDU_TYPE, DE_BSSGP_SERV_UTRAN_CCO, NULL);
- /* Subscriber Profile ID for RAT/Frequency priority (note 2) Subscriber Profile ID for RAT/Frequency priority/11.3.105 O TLV 3 */
- ELEM_OPT_TELV(0x81, BSSGP_PDU_TYPE, DE_BSSGP_SUB_PROF_ID_F_RAT_FRQ_PRIO, NULL);
- /* 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);
-}
-
-/*
- * 10.4.31 PS-HANDOVER-REQUEST-ACK
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
+
+ curr_offset = offset;
+ curr_len = len;
+
+ /* This PDU initiates the allocation of resources for one or more PFCs in the target BSS for an MS. */
+ /* Direction: SGSN to BSS */
+ pinfo->link_dir = P2P_DIR_DL;
+
+ /* TLLI TLLI/11.3.35 M TLV 6 */
+ ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
+ /* IMSI IMSI/11.3.14 M TLV 5-10 */
+ ELEM_MAND_TELV(BSSGP_IEI_IMSI, BSSGP_PDU_TYPE, DE_BSSGP_IMSI , NULL);
+ /* Cause Cause/11.3.8 M TLV 3 */
+ ELEM_MAND_TELV(BSSGP_IEI_CAUSE,BSSGP_PDU_TYPE, DE_BSSGP_CAUSE, NULL);
+ /* Source Cell Identifier (note 1) Cell Identifier/11.3.9 C TLV 10 */
+ ELEM_OPT_TELV(BSSGP_IEI_CELL_IDENTIFIER, BSSGP_PDU_TYPE, DE_BSSGP_CELL_ID , " - Source");
+ /* Source RNC Identifier (note 1) RNC Identifier/11.3.87 C TLV 10 */
+ ELEM_OPT_TELV(0x6c,BSSGP_PDU_TYPE, BE_BSSGP_RNC_ID, " - Source");
+ /* Target Cell Identifier Cell Identifier/11.3.9 M TLV 10 */
+ ELEM_OPT_TELV(BSSGP_IEI_CELL_IDENTIFIER, BSSGP_PDU_TYPE, DE_BSSGP_CELL_ID , " - Target");
+ /* Source BSS to Target BSS Transparent Container Source BSS to Target BSS Transparent Container/11.3.79 M TLV 7-? */
+ ELEM_OPT_TELV(0x64,BSSGP_PDU_TYPE, DE_BSSGP_SOURCE_BSS_TO_TARGET_BSS_TRANSP_CONT, NULL);
+ /* PFCs to be set-up list PFCs to be set-up list/11.3.82 M TLV 22-? */
+ ELEM_OPT_TELV(0x67,BSSGP_PDU_TYPE, DE_BSSGP_PFCS_TO_BE_SET_UP_LIST, NULL);
+ /* NAS container for PS Handover NAS container for PS Handover/11.3.81 O TLV 3-? */
+ ELEM_OPT_TELV(0x66,GSM_A_PDU_TYPE_COMMON, DE_NAS_CONT_FOR_PS_HO, NULL);
+ /* Service UTRAN CCO Service UTRAN CCO/11.3.47 O TLV 3 */
+ ELEM_OPT_TELV(BSSGP_IEI_SERVICE_UTRAN_CCO, BSSGP_PDU_TYPE, DE_BSSGP_SERV_UTRAN_CCO, NULL);
+ /* Subscriber Profile ID for RAT/Frequency priority (note 2) Subscriber Profile ID for RAT/Frequency priority/11.3.105 O TLV 3 */
+ ELEM_OPT_TELV(0x81, BSSGP_PDU_TYPE, DE_BSSGP_SUB_PROF_ID_F_RAT_FRQ_PRIO, NULL);
+ /* 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);
+}
+
+/*
+ * 10.4.31 PS-HANDOVER-REQUEST-ACK
*/
static void
bssgp_ps_ho_request_ack(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* This PDU acknowledges the successful allocation of resources in the target BSS. */
- /* Direction: BSS to SGSN */
- pinfo->link_dir = P2P_DIR_UL;
+ /* This PDU acknowledges the successful allocation of resources in the target BSS. */
+ /* Direction: BSS to SGSN */
+ pinfo->link_dir = P2P_DIR_UL;
- /* TLLI TLLI/11.3.35 M TLV 6 */
- ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
- /* List of set-up PFCs List of set-up PFCs/11.3.83 M TLV 3-? */
- ELEM_MAND_TELV(0x68,BSSGP_PDU_TYPE, DE_BSSGP_LIST_OF_SETUP_PFCS, NULL);
- /* 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);
+ /* TLLI TLLI/11.3.35 M TLV 6 */
+ ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
+ /* List of set-up PFCs List of set-up PFCs/11.3.83 M TLV 3-? */
+ ELEM_MAND_TELV(0x68,BSSGP_PDU_TYPE, DE_BSSGP_LIST_OF_SETUP_PFCS, NULL);
+ /* 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);
}
/*
- * 10.4.32 PS-HANDOVER-REQUEST-NACK
+ * 10.4.32 PS-HANDOVER-REQUEST-NACK
*/
static void
bssgp_ps_ho_request_nack(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* This PDU informs the SGSN about failed resource allocation in the target BSS. */
- /* BSS to SGSN */
- pinfo->link_dir = P2P_DIR_UL;
+ /* This PDU informs the SGSN about failed resource allocation in the target BSS. */
+ /* BSS to SGSN */
+ pinfo->link_dir = P2P_DIR_UL;
- /* TLLI TLLI/11.3.35 M TLV 6 */
- ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
- /* Cause Cause/11.3.8 M TLV 3 */
- ELEM_MAND_TELV(BSSGP_IEI_CAUSE,BSSGP_PDU_TYPE, DE_BSSGP_CAUSE, NULL);
+ /* TLLI TLLI/11.3.35 M TLV 6 */
+ ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
+ /* 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);
}
/*
- * 10.4.33 PS-HANDOVER-COMPLETE
+ * 10.4.33 PS-HANDOVER-COMPLETE
*/
static void
bssgp_ps_ho_complete(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* This PDU informs the SGSN about successful channel change for an MS. */
- /* BSS to SGSN */
- pinfo->link_dir = P2P_DIR_UL;
+ /* This PDU informs the SGSN about successful channel change for an MS. */
+ /* BSS to SGSN */
+ pinfo->link_dir = P2P_DIR_UL;
- /* TLLI TLLI/11.3.35 M TLV 6 */
- ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
- /* IMSI IMSI/11.3.14 M TLV 5-10 */
- ELEM_MAND_TELV(BSSGP_IEI_IMSI, BSSGP_PDU_TYPE, DE_BSSGP_IMSI , NULL);
- /* Target Cell Identifier (note 1) Cell Identifier/11.3.9 O TLV 10 */
- ELEM_OPT_TELV(BSSGP_IEI_CELL_IDENTIFIER, BSSGP_PDU_TYPE, DE_BSSGP_CELL_ID , " - Target");
- /* 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);
+ /* TLLI TLLI/11.3.35 M TLV 6 */
+ ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
+ /* IMSI IMSI/11.3.14 M TLV 5-10 */
+ ELEM_MAND_TELV(BSSGP_IEI_IMSI, BSSGP_PDU_TYPE, DE_BSSGP_IMSI , NULL);
+ /* Target Cell Identifier (note 1) Cell Identifier/11.3.9 O TLV 10 */
+ ELEM_OPT_TELV(BSSGP_IEI_CELL_IDENTIFIER, BSSGP_PDU_TYPE, DE_BSSGP_CELL_ID , " - Target");
+ /* 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);
}
/*
- * 10.4.34 PS-HANDOVER-CANCEL
+ * 10.4.34 PS-HANDOVER-CANCEL
*/
static void
bssgp_ps_ho_cancel(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* This PDU cancels the handover for an MS. */
- /* BSS to SGSN */
- pinfo->link_dir = P2P_DIR_UL;
+ /* This PDU cancels the handover for an MS. */
+ /* BSS to SGSN */
+ pinfo->link_dir = P2P_DIR_UL;
- /* TLLI TLLI/11.3.35 M TLV 6 */
- ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
- /* Cause Cause/11.3.8 M TLV 3 */
- ELEM_IN_ELEM_MAND_TELV(BSSGP_IEI_CAUSE,BSSGP_PDU_TYPE, DE_BSSGP_CAUSE, NULL);
- /* Source Cell Identifier Cell Identifier/11.3.9 M TLV 10 */
- ELEM_OPT_TELV(BSSGP_IEI_CELL_IDENTIFIER, BSSGP_PDU_TYPE, DE_BSSGP_CELL_ID , " - Source");
- /* Target Cell Identifier (note 1) Cell Identifier/11.3.9 O TLV 10 */
- ELEM_OPT_TELV(BSSGP_IEI_CELL_IDENTIFIER, BSSGP_PDU_TYPE, DE_BSSGP_CELL_ID , " - Target");
- /* Target RNC Identifier (note 1) (note 2) RNC Identifier/11.3.87 C TLV 10 */
- ELEM_OPT_TELV(0x6c,BSSGP_PDU_TYPE, BE_BSSGP_RNC_ID, " - Target");
- /* 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");
+ /* TLLI TLLI/11.3.35 M TLV 6 */
+ ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
+ /* Cause Cause/11.3.8 M TLV 3 */
+ ELEM_IN_ELEM_MAND_TELV(BSSGP_IEI_CAUSE,BSSGP_PDU_TYPE, DE_BSSGP_CAUSE, NULL);
+ /* Source Cell Identifier Cell Identifier/11.3.9 M TLV 10 */
+ ELEM_OPT_TELV(BSSGP_IEI_CELL_IDENTIFIER, BSSGP_PDU_TYPE, DE_BSSGP_CELL_ID , " - Source");
+ /* Target Cell Identifier (note 1) Cell Identifier/11.3.9 O TLV 10 */
+ ELEM_OPT_TELV(BSSGP_IEI_CELL_IDENTIFIER, BSSGP_PDU_TYPE, DE_BSSGP_CELL_ID , " - Target");
+ /* Target RNC Identifier (note 1) (note 2) RNC Identifier/11.3.87 C TLV 10 */
+ ELEM_OPT_TELV(0x6c,BSSGP_PDU_TYPE, BE_BSSGP_RNC_ID, " - Target");
+ /* 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);
}
/*
- * 10.4.35 PS-HANDOVER-COMPLETE-ACK
+ * 10.4.35 PS-HANDOVER-COMPLETE-ACK
*/
static void
bssgp_ps_ho_complete_ack(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* This PDU provides to the BSS the Inter RAT Handover Info IE or
- * E-UTRAN Inter RAT Handover Info IE or both. It is sent only if
- * requested by the BSS and it shall contain at least one of the
- * inter-RAT capabilities.
- */
+ /* This PDU provides to the BSS the Inter RAT Handover Info IE or
+ * E-UTRAN Inter RAT Handover Info IE or both. It is sent only if
+ * requested by the BSS and it shall contain at least one of the
+ * inter-RAT capabilities.
+ */
- /* SGSN to BSS */
- pinfo->link_dir = P2P_DIR_DL;
+ /* SGSN to BSS */
+ pinfo->link_dir = P2P_DIR_DL;
- /* TLLI TLLI/11.3.35 M TLV 6 */
- ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
- /* Inter RAT Handover Info Inter RAT Handover Info/11.3.94 C (note 1) 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 C (note 1) TLV 3-? */
- ELEM_OPT_TELV(0x80, BSSGP_PDU_TYPE, DE_BSSGP_E_UTRAN_INTER_RAT_HO_INFO, NULL);
+ /* TLLI TLLI/11.3.35 M TLV 6 */
+ ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
+ /* Inter RAT Handover Info Inter RAT Handover Info/11.3.94 C (note 1) 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 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);
}
/*
- * 10.5 PDU functional definitions and contents at LCS SAP
- * 10.5.1 PERFORM-LOCATION-REQUEST
+ * 10.5 PDU functional definitions and contents at LCS SAP
+ * 10.5.1 PERFORM-LOCATION-REQUEST
*/
static void
bssgp_perform_loc_request(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
-
- curr_offset = offset;
- curr_len = len;
-
- /* This PDU informs the SGSN about failed resource allocation in the target BSS. */
- /* BSS to SGSN */
- pinfo->link_dir = P2P_DIR_UL;
-
- /* TLLI TLLI/11.3.35 M TLV 6 */
- ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
- /* IMSI IMSI/11.3.14 M TLV 5-10 */
- ELEM_MAND_TELV(BSSGP_IEI_IMSI, BSSGP_PDU_TYPE, DE_BSSGP_IMSI , NULL);
- /* DRX Parameters (note 1) DRX Parameters/11.3.11 O TLV 4 */
- ELEM_OPT_TELV(0x86, NAS_PDU_TYPE_EMM, DE_EMM_TRAC_AREA_ID, NULL);
- /* BVCI (PCU-PTP) BVCI/11.3.6 M TLV 4 */
- ELEM_MAND_TELV(BSSGP_IEI_BVCI, BSSGP_PDU_TYPE, DE_BSSGP_BVCI , " - (PCU-PTP)");
- /* NSEI (PCU-PTP) NSEI/11.3.48 M TLV 4-? */
- ELEM_OPT_TELV(0x3e, GSM_A_PDU_TYPE_RR, DE_BSSGP_NSEI , " - (PCU-PTP)");
- /* Location Type Location Type/11.3.53 M TLV 3-? */
- ELEM_OPT_TELV(0x7c, GSM_PDU_TYPE_BSSMAP_LE, DE_BMAPLE_GANSS_LOC_TYPE, NULL);
- /* Cell Identifier Cell Identifier/11.3.9 M TLV 10 */
- ELEM_OPT_TELV(BSSGP_IEI_CELL_IDENTIFIER, BSSGP_PDU_TYPE, DE_BSSGP_CELL_ID , NULL);
- /* LCS Capability (note 2) LCS Capability/11.3.59 O TLV 3-? */
- ELEM_OPT_TELV( BSSGP_IEI_LCS_CAPABILITY , GSM_A_PDU_TYPE_GM, DE_PS_LCS_CAP , NULL);
- /* LCS Priority LCS Priority/11.3.57 O TLV 3-? */
- ELEM_OPT_TELV(BSSGP_IEI_LCS_PRIORITY, GSM_A_PDU_TYPE_BSSMAP, BE_LCS_PRIO, NULL);
- /* LCS QoS LCS QoS/11.3.50 O TLV 3-? */
- ELEM_OPT_TELV(BSSGP_IEI_LCS_QOS, GSM_PDU_TYPE_BSSMAP_LE, DE_BMAPLE_LCSQOS, NULL);
- /* LCS Client Type (note 3) LCS Client Type/11.3.51 C TLV 3-? */
- ELEM_OPT_TELV(BSSGP_IEI_LCS_CLIENT_TYPE, GSM_PDU_TYPE_BSSMAP_LE, DE_BMAPLE_LCS_CLIENT_TYPE, NULL);
- /* Requested GPS Assistance Data (note 4) Requested GPS Assistance Data/11.3.52 O TLV 3-? */
- ELEM_OPT_TELV(BSSGP_IEI_REQUESTED_GPS_ASSISTANCE_DATA, GSM_PDU_TYPE_BSSMAP_LE, DE_BMAPLE_REQ_GPS_ASSIST_D, NULL);
- /* IMEI (note 5) IMEI/11.3.91 O TLV 10 */
- ELEM_OPT_TELV(0x70,GSM_A_PDU_TYPE_COMMON, DE_MID, NULL);
- /* GANSS Location Type GANSS Location Type / 11.3.100 C TLV 3 */
- ELEM_OPT_TELV(0x7c, GSM_A_PDU_TYPE_BSSMAP, BE_GANSS_LOC_TYP, NULL);
- /* 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);
-}
-
-/*
- * 10.5.2 PERFORM-LOCATION-RESPONSE
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
+
+ curr_offset = offset;
+ curr_len = len;
+
+ /* This PDU informs the SGSN about failed resource allocation in the target BSS. */
+ /* BSS to SGSN */
+ pinfo->link_dir = P2P_DIR_UL;
+
+ /* TLLI TLLI/11.3.35 M TLV 6 */
+ ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
+ /* IMSI IMSI/11.3.14 M TLV 5-10 */
+ ELEM_MAND_TELV(BSSGP_IEI_IMSI, BSSGP_PDU_TYPE, DE_BSSGP_IMSI , NULL);
+ /* DRX Parameters (note 1) DRX Parameters/11.3.11 O TLV 4 */
+ ELEM_OPT_TELV(0x86, NAS_PDU_TYPE_EMM, DE_EMM_TRAC_AREA_ID, NULL);
+ /* BVCI (PCU-PTP) BVCI/11.3.6 M TLV 4 */
+ ELEM_MAND_TELV(BSSGP_IEI_BVCI, BSSGP_PDU_TYPE, DE_BSSGP_BVCI , " - (PCU-PTP)");
+ /* NSEI (PCU-PTP) NSEI/11.3.48 M TLV 4-? */
+ ELEM_OPT_TELV(0x3e, GSM_A_PDU_TYPE_RR, DE_BSSGP_NSEI , " - (PCU-PTP)");
+ /* Location Type Location Type/11.3.53 M TLV 3-? */
+ ELEM_OPT_TELV(0x7c, GSM_PDU_TYPE_BSSMAP_LE, DE_BMAPLE_GANSS_LOC_TYPE, NULL);
+ /* Cell Identifier Cell Identifier/11.3.9 M TLV 10 */
+ ELEM_OPT_TELV(BSSGP_IEI_CELL_IDENTIFIER, BSSGP_PDU_TYPE, DE_BSSGP_CELL_ID , NULL);
+ /* LCS Capability (note 2) LCS Capability/11.3.59 O TLV 3-? */
+ ELEM_OPT_TELV( BSSGP_IEI_LCS_CAPABILITY , GSM_A_PDU_TYPE_GM, DE_PS_LCS_CAP , NULL);
+ /* LCS Priority LCS Priority/11.3.57 O TLV 3-? */
+ ELEM_OPT_TELV(BSSGP_IEI_LCS_PRIORITY, GSM_A_PDU_TYPE_BSSMAP, BE_LCS_PRIO, NULL);
+ /* LCS QoS LCS QoS/11.3.50 O TLV 3-? */
+ ELEM_OPT_TELV(BSSGP_IEI_LCS_QOS, GSM_PDU_TYPE_BSSMAP_LE, DE_BMAPLE_LCSQOS, NULL);
+ /* LCS Client Type (note 3) LCS Client Type/11.3.51 C TLV 3-? */
+ ELEM_OPT_TELV(BSSGP_IEI_LCS_CLIENT_TYPE, GSM_PDU_TYPE_BSSMAP_LE, DE_BMAPLE_LCS_CLIENT_TYPE, NULL);
+ /* Requested GPS Assistance Data (note 4) Requested GPS Assistance Data/11.3.52 O TLV 3-? */
+ ELEM_OPT_TELV(BSSGP_IEI_REQUESTED_GPS_ASSISTANCE_DATA, GSM_PDU_TYPE_BSSMAP_LE, DE_BMAPLE_REQ_GPS_ASSIST_D, NULL);
+ /* IMEI (note 5) IMEI/11.3.91 O TLV 10 */
+ ELEM_OPT_TELV(0x70,GSM_A_PDU_TYPE_COMMON, DE_MID, NULL);
+ /* GANSS Location Type GANSS Location Type / 11.3.100 C TLV 3 */
+ ELEM_OPT_TELV(0x7c, GSM_A_PDU_TYPE_BSSMAP, BE_GANSS_LOC_TYP, NULL);
+ /* 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);
+}
+
+/*
+ * 10.5.2 PERFORM-LOCATION-RESPONSE
*/
static void
bssgp_perform_loc_response(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /*This PDU allows the BSS to respond to the SGSN after the completion of the location procedure. */
- /* Direction: BSS to SGSN */
- pinfo->link_dir = P2P_DIR_UL;
+ /*This PDU allows the BSS to respond to the SGSN after the completion of the location procedure. */
+ /* Direction: BSS to SGSN */
+ pinfo->link_dir = P2P_DIR_UL;
- /* TLLI TLLI/11.3.35 M TLV 6 */
- ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
- /* BVCI (PCU-PTP) BVCI/11.3.6 M TLV 4 */
- ELEM_MAND_TELV(BSSGP_IEI_BVCI, BSSGP_PDU_TYPE, DE_BSSGP_BVCI , " - (PCU-PTP)");
- /* Location Estimate (note 1) Location Estimate/11.3.54 C TLV 3-? */
- ELEM_OPT_TELV(BSSGP_IEI_LOCATION_ESTIMATE, GSM_A_PDU_TYPE_BSSMAP, BE_LOC_EST, NULL);
- /* Positioning Data Positioning Data/11.3.55 O TLV 3-? */
- ELEM_OPT_TELV(0x7d, GSM_PDU_TYPE_BSSMAP_LE, DE_BMAPLE_POS_DATA, NULL);
- /* Deciphering Keys (note 2) Deciphering Keys/11.3.56 C TLV 3-? */
- ELEM_OPT_TELV(BSSGP_IEI_DECIPHERING_KEYS, GSM_PDU_TYPE_BSSMAP_LE, DE_BMAPLE_DECIPH_KEYS, NULL);
- /* LCS Cause (note 3) 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);
- /* Velocity Data Velocity Data/11.3.96 O TLV 3-? */
- ELEM_MAND_TELV(0x78, BSSGP_PDU_TYPE, DE_BSSGP_VELOCITY_DATA , NULL);
- /* 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);
+ /* TLLI TLLI/11.3.35 M TLV 6 */
+ ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
+ /* BVCI (PCU-PTP) BVCI/11.3.6 M TLV 4 */
+ ELEM_MAND_TELV(BSSGP_IEI_BVCI, BSSGP_PDU_TYPE, DE_BSSGP_BVCI , " - (PCU-PTP)");
+ /* Location Estimate (note 1) Location Estimate/11.3.54 C TLV 3-? */
+ ELEM_OPT_TELV(BSSGP_IEI_LOCATION_ESTIMATE, GSM_A_PDU_TYPE_BSSMAP, BE_LOC_EST, NULL);
+ /* Positioning Data Positioning Data/11.3.55 O TLV 3-? */
+ ELEM_OPT_TELV(0x7d, GSM_PDU_TYPE_BSSMAP_LE, DE_BMAPLE_POS_DATA, NULL);
+ /* Deciphering Keys (note 2) Deciphering Keys/11.3.56 C TLV 3-? */
+ ELEM_OPT_TELV(BSSGP_IEI_DECIPHERING_KEYS, GSM_PDU_TYPE_BSSMAP_LE, DE_BMAPLE_DECIPH_KEYS, NULL);
+ /* LCS Cause (note 3) 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);
+ /* Velocity Data Velocity Data/11.3.96 O TLV 3-? */
+ ELEM_MAND_TELV(0x78, BSSGP_PDU_TYPE, DE_BSSGP_VELOCITY_DATA , NULL);
+ /* 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);
}
/*
- * 10.5.3 PERFORM-LOCATION-ABORT
+ * 10.5.3 PERFORM-LOCATION-ABORT
*/
static void
bssgp_perform_loc_response_abort(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /*This PDU allows the SGSN to request the BSS to ABORT the LCS procedure */
- /* Direction: SGSN to BSS */
- pinfo->link_dir = P2P_DIR_DL;
+ /*This PDU allows the SGSN to request the BSS to ABORT the LCS procedure */
+ /* Direction: SGSN to BSS */
+ pinfo->link_dir = P2P_DIR_DL;
- /* TLLI TLLI/11.3.35 M TLV 6 */
- ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
- /* BVCI (PCU-PTP) BVCI/11.3.6 M TLV 4 */
- ELEM_MAND_TELV(BSSGP_IEI_BVCI, BSSGP_PDU_TYPE, DE_BSSGP_BVCI , " - (PCU-PTP)");
- /* 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);
+ /* TLLI TLLI/11.3.35 M TLV 6 */
+ ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
+ /* BVCI (PCU-PTP) BVCI/11.3.6 M TLV 4 */
+ ELEM_MAND_TELV(BSSGP_IEI_BVCI, BSSGP_PDU_TYPE, DE_BSSGP_BVCI , " - (PCU-PTP)");
+ /* 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);
}
/*
- * 10.5.4 POSITION-COMMAND
+ * 10.5.4 POSITION-COMMAND
*/
static void
bssgp_pos_cmd(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* This PDU allows the BSS to request the SGSN to perform the position command procedure. */
- /* Direction: BSS to SGSN */
- pinfo->link_dir = P2P_DIR_UL;
+ /* This PDU allows the BSS to request the SGSN to perform the position command procedure. */
+ /* Direction: BSS to SGSN */
+ pinfo->link_dir = P2P_DIR_UL;
- /* TLLI TLLI/11.3.35 M TLV 6 */
- ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
- /* BVCI (PCU-PTP) BVCI/11.3.6 M TLV 4 */
- ELEM_MAND_TELV(BSSGP_IEI_BVCI, BSSGP_PDU_TYPE, DE_BSSGP_BVCI , " - (PCU-PTP)");
- /* RRLP Flags RRLP Flags/11.3.60 M TLV 3 */
- ELEM_MAND_TELV(BSSGP_IEI_RRLP_FLAGS, BSSGP_PDU_TYPE, DE_BSSGP_RRLP_FLAGS , NULL);
- /* 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);
+ /* TLLI TLLI/11.3.35 M TLV 6 */
+ ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
+ /* BVCI (PCU-PTP) BVCI/11.3.6 M TLV 4 */
+ ELEM_MAND_TELV(BSSGP_IEI_BVCI, BSSGP_PDU_TYPE, DE_BSSGP_BVCI , " - (PCU-PTP)");
+ /* RRLP Flags RRLP Flags/11.3.60 M TLV 3 */
+ ELEM_MAND_TELV(BSSGP_IEI_RRLP_FLAGS, BSSGP_PDU_TYPE, DE_BSSGP_RRLP_FLAGS , NULL);
+ /* 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);
}
/*
- * 10.5.5 POSITION-RESPONSE
+ * 10.5.5 POSITION-RESPONSE
*/
static void
bssgp_pos_resp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* This PDU allows the SGSN to respond to the position command request procedure. */
- /* Direction: SGSN to BSS */
- pinfo->link_dir = P2P_DIR_DL;
+ /* This PDU allows the SGSN to respond to the position command request procedure. */
+ /* Direction: SGSN to BSS */
+ pinfo->link_dir = P2P_DIR_DL;
- /* TLLI TLLI/11.3.35 M TLV 6 */
- ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
- /* BVCI (PCU-PTP) BVCI/11.3.6 M TLV 4 */
- ELEM_MAND_TELV(BSSGP_IEI_BVCI, BSSGP_PDU_TYPE, DE_BSSGP_BVCI , " - (PCU-PTP)");
- /* RRLP Flags a) RRLP Flags/11.3.60 C TLV 3 */
- ELEM_OPT_TELV(BSSGP_IEI_RRLP_FLAGS, BSSGP_PDU_TYPE, DE_BSSGP_RRLP_FLAGS , NULL);
- /* RRLP APDU a) RRLP APDU/11.3.49 C TLV 3-? */
- ELEM_OPT_TELV(BSSGP_IEI_RRLP_APDU, BSSGP_PDU_TYPE, DE_BSSGP_RRLP_APDU , NULL);
- /* 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);
+ /* TLLI TLLI/11.3.35 M TLV 6 */
+ ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
+ /* BVCI (PCU-PTP) BVCI/11.3.6 M TLV 4 */
+ ELEM_MAND_TELV(BSSGP_IEI_BVCI, BSSGP_PDU_TYPE, DE_BSSGP_BVCI , " - (PCU-PTP)");
+ /* RRLP Flags a) RRLP Flags/11.3.60 C TLV 3 */
+ ELEM_OPT_TELV(BSSGP_IEI_RRLP_FLAGS, BSSGP_PDU_TYPE, DE_BSSGP_RRLP_FLAGS , NULL);
+ /* RRLP APDU a) RRLP APDU/11.3.49 C TLV 3-? */
+ ELEM_OPT_TELV(BSSGP_IEI_RRLP_APDU, BSSGP_PDU_TYPE, DE_BSSGP_RRLP_APDU , NULL);
+ /* 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);
}
/*
- * 10.6 PDU functional definitions and contents at RIM SAP
- * 10.6.1 RAN-INFORMATION-REQUEST
+ * 10.6 PDU functional definitions and contents at RIM SAP
+ * 10.6.1 RAN-INFORMATION-REQUEST
*/
static void
bssgp_ran_inf_request(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* The RAN-INFORMATION-REQUEST PDU allows a controlling BSS to request information from another BSS. */
- /* Direction: BSS to SGSN - SGSN to BSS */
+ /* The RAN-INFORMATION-REQUEST PDU allows a controlling BSS to request information from another BSS. */
+ /* Direction: BSS to SGSN - SGSN to BSS */
- /* Destination Cell Identifier RIM Routing Information/11.3.70 M TLV 3-? */
- ELEM_MAND_TELV(BSSGP_IEI_RIM_ROUTING_INFORMATION, BSSGP_PDU_TYPE, DE_BSSGP_RIM_ROUTING_INF , " - Destination Cell Identifier");
- /* Source Cell Identifier RIM Routing Information/11.3.70 M TLV 3-? */
- ELEM_MAND_TELV(BSSGP_IEI_RIM_ROUTING_INFORMATION, BSSGP_PDU_TYPE, DE_BSSGP_RIM_ROUTING_INF , " - Source Cell Identifier");
- /* 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);
+ /* Destination Cell Identifier RIM Routing Information/11.3.70 M TLV 3-? */
+ ELEM_MAND_TELV(BSSGP_IEI_RIM_ROUTING_INFORMATION, BSSGP_PDU_TYPE, DE_BSSGP_RIM_ROUTING_INF , " - Destination Cell Identifier");
+ /* Source Cell Identifier RIM Routing Information/11.3.70 M TLV 3-? */
+ ELEM_MAND_TELV(BSSGP_IEI_RIM_ROUTING_INFORMATION, BSSGP_PDU_TYPE, DE_BSSGP_RIM_ROUTING_INF , " - Source Cell Identifier");
+ /* 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);
}
/*
- * 10.6.2 RAN-INFORMATION
+ * 10.6.2 RAN-INFORMATION
*/
static void
bssgp_ran_inf(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* The RAN-INFORMATION PDU allows a serving BSS to send information to a controlling BSS. */
- /* Direction: BSS to SGSN SGSN to BSS */
+ /* The RAN-INFORMATION PDU allows a serving BSS to send information to a controlling BSS. */
+ /* Direction: BSS to SGSN SGSN to BSS */
- /* Destination Cell Identifier RIM Routing Information/11.3.70 M TLV 3-? */
- ELEM_MAND_TELV(BSSGP_IEI_RIM_ROUTING_INFORMATION, BSSGP_PDU_TYPE, DE_BSSGP_RIM_ROUTING_INF , " - Destination Cell Identifier");
- /* Source Cell Identifier RIM Routing Information/11.3.70 M TLV 3-? */
- ELEM_MAND_TELV(BSSGP_IEI_RIM_ROUTING_INFORMATION, BSSGP_PDU_TYPE, DE_BSSGP_RIM_ROUTING_INF , " - Source Cell Identifier");
- /* RIM Container RAN-INFORMATION RIM Container/11.3.62a.2 M TLV 3-? */
- ELEM_MAND_TELV(BSSGP_IEI_RAN_INF_RIM_CONTAINER, BSSGP_PDU_TYPE, DE_BSSGP_RAN_INF_RIM_CONT , " - Source Cell Identifier");
+ /* Destination Cell Identifier RIM Routing Information/11.3.70 M TLV 3-? */
+ ELEM_MAND_TELV(BSSGP_IEI_RIM_ROUTING_INFORMATION, BSSGP_PDU_TYPE, DE_BSSGP_RIM_ROUTING_INF , " - Destination Cell Identifier");
+ /* Source Cell Identifier RIM Routing Information/11.3.70 M TLV 3-? */
+ ELEM_MAND_TELV(BSSGP_IEI_RIM_ROUTING_INFORMATION, BSSGP_PDU_TYPE, DE_BSSGP_RIM_ROUTING_INF , " - Source Cell Identifier");
+ /* RIM Container RAN-INFORMATION RIM Container/11.3.62a.2 M TLV 3-? */
+ 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);
}
/*
- * 10.6.3 RAN-INFORMATION-ACK
+ * 10.6.3 RAN-INFORMATION-ACK
*/
static void
bssgp_ran_inf_request_ack(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* The RAN-INFORMATION-ACK PDU allows a controlling BSS to acknowledge the reception of a RANINFORMATION
+ /* The RAN-INFORMATION-ACK PDU allows a controlling BSS to acknowledge the reception of a RANINFORMATION
* PDU and a serving BSS to acknowledge the reception of a RAN-INFORMATION-APPLICATIONERROR PDU.
- */
+ */
- /* Direction: BSS to SGSN SGSN to BSS */
+ /* Direction: BSS to SGSN SGSN to BSS */
- /* Destination Cell Identifier RIM Routing Information/11.3.70 M TLV 3-? */
- ELEM_MAND_TELV(BSSGP_IEI_RIM_ROUTING_INFORMATION, BSSGP_PDU_TYPE, DE_BSSGP_RIM_ROUTING_INF , " - Destination Cell Identifier");
- /* Source Cell Identifier RIM Routing Information/11.3.70 M TLV 3-? */
- ELEM_MAND_TELV(BSSGP_IEI_RIM_ROUTING_INFORMATION, BSSGP_PDU_TYPE, DE_BSSGP_RIM_ROUTING_INF , " - Source Cell Identifier");
- /* 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);
+ /* Destination Cell Identifier RIM Routing Information/11.3.70 M TLV 3-? */
+ ELEM_MAND_TELV(BSSGP_IEI_RIM_ROUTING_INFORMATION, BSSGP_PDU_TYPE, DE_BSSGP_RIM_ROUTING_INF , " - Destination Cell Identifier");
+ /* Source Cell Identifier RIM Routing Information/11.3.70 M TLV 3-? */
+ ELEM_MAND_TELV(BSSGP_IEI_RIM_ROUTING_INFORMATION, BSSGP_PDU_TYPE, DE_BSSGP_RIM_ROUTING_INF , " - Source Cell Identifier");
+ /* 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);
}
/*
- * 10.6.4 RAN-INFORMATION-ERROR
+ * 10.6.4 RAN-INFORMATION-ERROR
*/
static void
bssgp_ran_inf_err(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* The RAN-INFORMATION-ERROR PDU allows a BSS to send an error PDU back to an originating BSS as a response
- * to a RAN-INFORMATION, a RAN-INFORMATION-REQUEST, a RAN-INFORMATION-ACK or a RANINFORMATION-APPLICATION-ERROR PDU.
- */
+ /* The RAN-INFORMATION-ERROR PDU allows a BSS to send an error PDU back to an originating BSS as a response
+ * to a RAN-INFORMATION, a RAN-INFORMATION-REQUEST, a RAN-INFORMATION-ACK or a RANINFORMATION-APPLICATION-ERROR PDU.
+ */
- /* Direction: BSS to SGSN SGSN to BSS */
+ /* Direction: BSS to SGSN SGSN to BSS */
- /* Destination Cell Identifier RIM Routing Information/11.3.70 M TLV 3-? */
- ELEM_MAND_TELV(BSSGP_IEI_RIM_ROUTING_INFORMATION, BSSGP_PDU_TYPE, DE_BSSGP_RIM_ROUTING_INF , " - Destination Cell Identifier");
- /* Source Cell Identifier RIM Routing Information/11.3.70 M TLV 3-? */
- ELEM_MAND_TELV(BSSGP_IEI_RIM_ROUTING_INFORMATION, BSSGP_PDU_TYPE, DE_BSSGP_RIM_ROUTING_INF , " - Source Cell Identifier");
- /* 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);
+ /* Destination Cell Identifier RIM Routing Information/11.3.70 M TLV 3-? */
+ ELEM_MAND_TELV(BSSGP_IEI_RIM_ROUTING_INFORMATION, BSSGP_PDU_TYPE, DE_BSSGP_RIM_ROUTING_INF , " - Destination Cell Identifier");
+ /* Source Cell Identifier RIM Routing Information/11.3.70 M TLV 3-? */
+ ELEM_MAND_TELV(BSSGP_IEI_RIM_ROUTING_INFORMATION, BSSGP_PDU_TYPE, DE_BSSGP_RIM_ROUTING_INF , " - Source Cell Identifier");
+ /* 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);
}
/*
- * 10.6.5 RAN-INFORMATION-APPLICATION-ERROR
+ * 10.6.5 RAN-INFORMATION-APPLICATION-ERROR
*/
static void
bssgp_ran_inf_app_err(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* The RAN-INFORMATION-APPLICATION-ERROR PDU allows a controlling BSS to inform the serving BSS about
- * erroneous application information in a previously received RAN-INFORMATION PDU.
- */
+ /* The RAN-INFORMATION-APPLICATION-ERROR PDU allows a controlling BSS to inform the serving BSS about
+ * erroneous application information in a previously received RAN-INFORMATION PDU.
+ */
- /* Direction: BSS to SGSN SGSN to BSS */
+ /* Direction: BSS to SGSN SGSN to BSS */
- /* Destination Cell Identifier RIM Routing Information/11.3.70 M TLV 3-? */
- ELEM_MAND_TELV(BSSGP_IEI_RIM_ROUTING_INFORMATION, BSSGP_PDU_TYPE, DE_BSSGP_RIM_ROUTING_INF , " - Destination Cell Identifier");
- /* Source Cell Identifier RIM Routing Information/11.3.70 M TLV 3-? */
- ELEM_MAND_TELV(BSSGP_IEI_RIM_ROUTING_INFORMATION, BSSGP_PDU_TYPE, DE_BSSGP_RIM_ROUTING_INF , " - Source Cell Identifier");
- /* 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);
+ /* Destination Cell Identifier RIM Routing Information/11.3.70 M TLV 3-? */
+ ELEM_MAND_TELV(BSSGP_IEI_RIM_ROUTING_INFORMATION, BSSGP_PDU_TYPE, DE_BSSGP_RIM_ROUTING_INF , " - Destination Cell Identifier");
+ /* Source Cell Identifier RIM Routing Information/11.3.70 M TLV 3-? */
+ ELEM_MAND_TELV(BSSGP_IEI_RIM_ROUTING_INFORMATION, BSSGP_PDU_TYPE, DE_BSSGP_RIM_ROUTING_INF , " - Source Cell Identifier");
+ /* 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);
}
/*
- * 10.7 PDU functional definitions and contents at MBMS SAP
- * 10.7.1 MBMS-SESSION-START-REQUEST
+ * 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, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* This PDU allows a SGSN to request BSS to start an MBMS session. */
+ /* This PDU allows a SGSN to request BSS to start an MBMS session. */
- /* Direction: SGSN to BSS */
- pinfo->link_dir = P2P_DIR_DL;
+ /* Direction: SGSN to BSS */
+ pinfo->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);
+ /* 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, pinfo);
+ EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
/*
- * 10.7.2 MBMS-SESSION-START-RESPONSE
+ * 10.7.2 MBMS-SESSION-START-RESPONSE
*/
static void
bssgp_mbms_session_start_resp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = 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.
- */
+ /* 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 */
- pinfo->link_dir = P2P_DIR_UL;
+ /* Direction: BSS to SGSN */
+ pinfo->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);
+ /* 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, pinfo);
+ EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
/*
- * 10.7.3 MBMS-SESSION-STOP-REQUEST
+ * 10.7.3 MBMS-SESSION-STOP-REQUEST
*/
static void
bssgp_mbms_session_stop_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* This PDU allows a SGSN to request BSS to stop an MBMS session. */
+ /* This PDU allows a SGSN to request BSS to stop an MBMS session. */
- /* Direction: SGSN to BSS */
- pinfo->link_dir = P2P_DIR_DL;
+ /* Direction: SGSN to BSS */
+ pinfo->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);
- /* 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);
+ /* 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 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);
}
/*
- * 10.7.4 MBMS-SESSION-STOP-RESPONSE
+ * 10.7.4 MBMS-SESSION-STOP-RESPONSE
*/
static void
bssgp_mbms_session_stop_resp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* This PDU allows a BSS to acknowledge to SGSN that it will stop an MBMS session. */
+ /* This PDU allows a BSS to acknowledge to SGSN that it will stop an MBMS session. */
- /* Direction: BSS to SGSN */
- pinfo->link_dir = P2P_DIR_UL;
+ /* Direction: BSS to SGSN */
+ pinfo->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);
+ /* 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, pinfo);
+ EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
/*
- * 10.7.5 MBMS-SESSION-UPDATE-REQUEST
+ * 10.7.5 MBMS-SESSION-UPDATE-REQUEST
*/
static void
bssgp_mbms_session_update_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
-
- curr_offset = offset;
- curr_len = len;
-
- /* This PDU allows an SGSN to request BSS to update the MBMS service area list
- * of an ongoing MBMS broadcast service session.
- */
-
- /* Direction: BSS to SGSN */
- pinfo->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);
- /* 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, pinfo);
-}
-/*
- * 10.7.6 MBMS-SESSION-UPDATE-RESPONSE
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
+
+ curr_offset = offset;
+ curr_len = len;
+
+ /* This PDU allows an SGSN to request BSS to update the MBMS service area list
+ * of an ongoing MBMS broadcast service session.
+ */
+
+ /* Direction: BSS to SGSN */
+ pinfo->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);
+ /* 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, pinfo);
+}
+/*
+ * 10.7.6 MBMS-SESSION-UPDATE-RESPONSE
*/
static void
bssgp_mbms_session_uptate_resp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* This PDU allows a BSS to acknowledge to SGSN that it will update the MBMS service area list of an ongoing MBMS
- * broadcast service session or to indicate to SGSN why the MBMS Service Context cannot be created or is released by the BSS.
- */
+ /* This PDU allows a BSS to acknowledge to SGSN that it will update the MBMS service area list of an ongoing MBMS
+ * broadcast service session or to indicate to SGSN why the MBMS Service Context cannot be created or is released by the BSS.
+ */
- /* Direction: BSS to SGSN */
- pinfo->link_dir = P2P_DIR_UL;
+ /* Direction: BSS to SGSN */
+ pinfo->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);
+ /* 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, pinfo);
+ EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
static const value_string bssgp_msg_strings[] = {
-/* 0x00 */ { BSSGP_PDU_DL_UNITDATA, "DL-UNITDATA" }, /* 10.2.1 DL-UNITDATA */
-/* 0x01 */ { BSSGP_PDU_UL_UNITDATA, "UL-UNITDATA" }, /* 10.2.2 UL-UNITDATA */
-/* 0x02 */ { BSSGP_PDU_RA_CAPABILITY, "RA-CAPABILITY" }, /* 10.2.3 RA-CAPABILITY */
-/* NOTE 1: This value was allocated in an earlier version of the protocol and shall not be used */
-/* 0x03 */ { BSSGP_PDU_PTM_UNITDATA, "Reserved" }, /* 10.2.4 (void) */
-/* 0x04 */ { BSSGP_PDU_DL_MBMS_UNITDATA, "DL-MBMS-UNITDATA" }, /* 10.2.5 DL-MBMS-UNITDATA */
-/* 0x05 */ { BSSGP_PDU_UL_MBMS_UNITDATA, "UL-MBMS-UNITDATA" }, /* 10.2.6 UL-MBMS-UNITDATA */
-/* 0x06 */ { BSSGP_PDU_PAGING_PS, "PAGING-PS" }, /* 10.3.1 PAGING PS */
-/* 0x07 */ { BSSGP_PDU_PAGING_CS, "PAGING-CS" }, /* 10.3.2 PAGING CS */
-/* 0x08 */ { BSSGP_PDU_RA_CAPABILITY_UPDATE, "RA-CAPABILITY-UPDATE" }, /* 10.3.3 RA-CAPABILITY-UPDATE */
-/* 0x09 */ { BSSGP_PDU_RA_CAPABILITY_UPDATE_ACK, "RA-CAPABILITY-UPDATE-ACK" }, /* 10.3.4 RA-CAPABILITY-UPDATE-ACK */
-/* 0x0a */ { BSSGP_PDU_RADIO_STATUS, "RADIO-STATUS" }, /* 10.3.5 RADIO-STATUS */
-/* 0x0b */ { BSSGP_PDU_SUSPEND, "SUSPEND" }, /* 10.3.6 SUSPEND */
-/* 0x0c */ { BSSGP_PDU_SUSPEND_ACK, "SUSPEND-ACK" }, /* 10.3.7 SUSPEND-ACK */
-/* 0x0d */ { BSSGP_PDU_SUSPEND_NACK, "SUSPEND-NACK" }, /* 10.3.8 SUSPEND-NACK */
-/* 0x0e */ { BSSGP_PDU_RESUME, "RESUME" }, /* 10.3.9 RESUME */
-/* 0x0f */ { BSSGP_PDU_RESUME_ACK, "RESUME-ACK" }, /* 10.3.10 RESUME-ACK */
-/* 0x10 */ { BSSGP_PDU_RESUME_NACK, "RESUME-NACK" }, /* 10.3.11 RESUME-NACK */
- /* 0x11 to 0x1f Reserved */
-/* 0x11 */ { BSSGP_PDU_RESERVED_0X11, "Reserved" }, /* */
-/* 0x12 */ { BSSGP_PDU_RESERVED_0X12, "Reserved" }, /* */
-/* 0x13 */ { BSSGP_PDU_RESERVED_0X13, "Reserved" }, /* */
-/* 0x14 */ { BSSGP_PDU_RESERVED_0X14, "Reserved" }, /* */
-/* 0x15 */ { BSSGP_PDU_RESERVED_0X15, "Reserved" }, /* */
-/* 0x16 */ { BSSGP_PDU_RESERVED_0X16, "Reserved" }, /* */
-/* 0x17 */ { BSSGP_PDU_RESERVED_0X17, "Reserved" }, /* */
-/* 0x18 */ { BSSGP_PDU_RESERVED_0X18, "Reserved" }, /* */
-/* 0x19 */ { BSSGP_PDU_RESERVED_0X19, "Reserved" }, /* */
-/* 0x1a */ { BSSGP_PDU_RESERVED_0X1A, "Reserved" }, /* */
-/* 0x1b */ { BSSGP_PDU_RESERVED_0X1B, "Reserved" }, /* */
-/* 0x1c */ { BSSGP_PDU_RESERVED_0X1C, "Reserved" }, /* */
-/* 0x1d */ { BSSGP_PDU_RESERVED_0X1D, "Reserved" }, /* */
-/* 0x1e */ { BSSGP_PDU_RESERVED_0X1E, "Reserved" }, /* */
-/* 0x1f */ { BSSGP_PDU_RESERVED_0X1F, "Reserved" }, /* */
-
-/* 0x20 */ { BSSGP_PDU_BVC_BLOCK, "BVC-BLOCK" }, /* 10.4.8 BVC-BLOCK */
-/* 0x21 */ { BSSGP_PDU_BVC_BLOCK_ACK, "BVC-BLOCK-ACK" }, /* 10.4.9 BVC-BLOCK-ACK */
-/* 0x22 */ { BSSGP_PDU_BVC_RESET, "BVC-RESET" }, /* 10.4.12 BVC-RESET */
-/* 0x23 */ { BSSGP_PDU_BVC_RESET_ACK, "BVC-RESET-ACK" }, /* 10.4.13 BVC-RESET-ACK */
-/* 0x24 */ { BSSGP_PDU_BVC_UNBLOCK, "UNBLOCK" }, /* 10.4.10 BVC-UNBLOCK */
-/* 0x25 */ { BSSGP_PDU_BVC_UNBLOCK_ACK, "UNBLOCK-ACK" }, /* 10.4.11 BVC-UNBLOCK-ACK */
-/* 0x26 */ { BSSGP_PDU_FLOW_CONTROL_BVC, "FLOW-CONTROL-BVC" }, /* 10.4.4 FLOW-CONTROL-BVC */
-/* 0x27 */ { BSSGP_PDU_FLOW_CONTROL_BVC_ACK, "FLOW-CONTROL-BVC-ACK" }, /* 10.4.5 FLOW-CONTROL-BVC-ACK */
-/* 0x28 */ { BSSGP_PDU_FLOW_CONTROL_MS, "FLOW-CONTROL-MS" }, /* 10.4.6 FLOW-CONTROL-MS */
-/* 0x29 */ { BSSGP_PDU_FLOW_CONTROL_MS_ACK, "FLOW-CONTROL-MS-ACK" }, /* 10.4.7 FLOW-CONTROL-MS-ACK */
-/* 0x2a */ { BSSGP_PDU_FLUSH_LL, "FLUSH-LL" }, /* 10.4.1 FLUSH-LL */
-/* 0x2b */ { BSSGP_PDU_FLUSH_LL_ACK, "FLUSH_LL_ACK" }, /* 10.4.2 FLUSH-LL-ACK */
-/* 0x2c */ { BSSGP_PDU_LLC_DISCARDED, "LLC-DISCARDED" }, /* 10.4.3 LLC-DISCARDED */
-/* 0x2d */ { BSSGP_PDU_FLOW_CONTROL_PFC, "FLOW-CONTROL-PFC" }, /* 10.4.24 FLOW-CONTROL-PFC */
-/* 0x2e */ { BSSGP_PDU_FLOW_CONTROL_PFC_ACK, "FLOW-CONTROL-PFC-ACK" }, /* 10.4.25 FLOW-CONTROL-PFC-ACK */
- /* 0x2f to 0x3f Reserved */
-/* 0x2f */ { BSSGP_PDU_RESERVED_0X2F, "Reserved" }, /* */
-/* 0x30 */ { BSSGP_PDU_RESERVED_0X30, "Reserved" }, /* */
-/* 0x31 */ { BSSGP_PDU_RESERVED_0X31, "Reserved" }, /* */
-/* 0x32 */ { BSSGP_PDU_RESERVED_0X32, "Reserved" }, /* */
-/* 0x33 */ { BSSGP_PDU_RESERVED_0X33, "Reserved" }, /* */
-/* 0x34 */ { BSSGP_PDU_RESERVED_0X34, "Reserved" }, /* */
-/* 0x35 */ { BSSGP_PDU_RESERVED_0X35, "Reserved" }, /* */
-/* 0x36 */ { BSSGP_PDU_RESERVED_0X36, "Reserved" }, /* */
-/* 0x37 */ { BSSGP_PDU_RESERVED_0X37, "Reserved" }, /* */
-/* 0x38 */ { BSSGP_PDU_RESERVED_0X38, "Reserved" }, /* */
-/* 0x39 */ { BSSGP_PDU_RESERVED_0X39, "Reserved" }, /* */
-/* 0x3a */ { BSSGP_PDU_RESERVED_0X3A, "Reserved" }, /* */
-/* 0x3b */ { BSSGP_PDU_RESERVED_0X3B, "Reserved" }, /* */
-/* 0x3c */ { BSSGP_PDU_RESERVED_0X3C, "Reserved" }, /* */
-/* 0x3d */ { BSSGP_PDU_RESERVED_0X3D, "Reserved" }, /* */
-/* 0x3e */ { BSSGP_PDU_RESERVED_0X3E, "Reserved" }, /* */
-/* 0x3f */ { BSSGP_PDU_RESERVED_0X3F, "Reserved" }, /* */
-
-/* 0x40 */ { BSSGP_PDU_SGSN_INVOKE_TRACE, "SGSN-INVOKE-TRACE" }, /* 10.4.15 SGSN-INVOKE-TRACE */
-/* 0x41 */ { BSSGP_PDU_STATUS, "STATUS" }, /* 10.4.14 STATUS */
- /* 0x42 to 0x4f Reserved */
-/* 0x42 */ { BSSGP_PDU_RESERVED_0X42, "Reserved" }, /* */
-/* 0x43 */ { BSSGP_PDU_RESERVED_0X43, "Reserved" }, /* */
-/* 0x44 */ { BSSGP_PDU_RESERVED_0X44, "Reserved" }, /* */
-/* 0x45 */ { BSSGP_PDU_RESERVED_0X45, "Reserved" }, /* */
-/* 0x46 */ { BSSGP_PDU_RESERVED_0X46, "Reserved" }, /* */
-/* 0x47 */ { BSSGP_PDU_RESERVED_0X47, "Reserved" }, /* */
-/* 0x48 */ { BSSGP_PDU_RESERVED_0X48, "Reserved" }, /* */
-/* 0x49 */ { BSSGP_PDU_RESERVED_0X49, "Reserved" }, /* */
-/* 0x4a */ { BSSGP_PDU_RESERVED_0X4A, "Reserved" }, /* */
-/* 0x4b */ { BSSGP_PDU_RESERVED_0X4B, "Reserved" }, /* */
-/* 0x4c */ { BSSGP_PDU_RESERVED_0X4C, "Reserved" }, /* */
-/* 0x4d */ { BSSGP_PDU_RESERVED_0X4D, "Reserved" }, /* */
-/* 0x4e */ { BSSGP_PDU_RESERVED_0X4E, "Reserved" }, /* */
-/* 0x4f */ { BSSGP_PDU_RESERVED_0X4F, "Reserved" }, /* */
-/* 0x50 */ { BSSGP_PDU_DOWNLOAD_BSS_PFC, "DOWNLOAD-BSS-PFC" }, /* 10.4.16 DOWNLOAD-BSS-PFC */
-/* 0x51 */ { BSSGP_PDU_CREATE_BSS_PFC, "CREATE-BSS-PFC" }, /* 10.4.17 CREATE-BSS-PFC */
-/* 0x52 */ { BSSGP_PDU_CREATE_BSS_PFC_ACK, "CREATE-BSS-PFC-ACK" }, /* 10.4.18 CREATE-BSS-PFC-ACK */
-/* 0x53 */ { BSSGP_PDU_CREATE_BSS_PFC_NACK, "CREATE-BSS-PFC-NACK" }, /* 10.4.19 CREATE-BSS-PFC-NACK */
-/* 0x54 */ { BSSGP_PDU_MODIFY_BSS_PFC, "MODIFY-BSS-PFC" }, /* 10.4.20 MODIFY-BSS-PFC */
-/* 0x55 */ { BSSGP_PDU_MODIFY_BSS_PFC_ACK, "MODIFY-BSS-PFC-ACK" }, /* 10.4.21 MODIFY-BSS-PFC-ACK */
-/* 0x56 */ { BSSGP_PDU_DELETE_BSS_PFC, "DELETE-BSS-PFC" }, /* 10.4.22 DELETE-BSS-PFC */
-/* 0x57 */ { BSSGP_PDU_DELETE_BSS_PFC_ACK, "DELETE-BSS-PFC-ACK" }, /* 10.4.23 DELETE-BSS-PFC-ACK */
-/* 0x58 */ { BSSGP_PDU_DELETE_BSS_PFC_REQ, "DELETE-BSS-PFC-REQ" }, /* 10.4.26 DELETE-BSS-PFC-REQ */
-/* 0x59 */ { BSSGP_PDU_PS_HANDOVER_REQUIRED, "PS-HANDOVER-REQUIRED" }, /* 10.4.27 PS-HANDOVER-REQUIRED */
-/* 0x5a */ { BSSGP_PDU_PS_HANDOVER_REQUIRED_ACK, "PS-HANDOVER-REQUIRED-ACK" }, /* 10.4.28 PS-HANDOVER-REQUIRED-ACK */
-/* 0x5b */ { BSSGP_PDU_PS_HANDOVER_REQUIRED_NACK, "PS-HANDOVER-REQUIRED-NACK" }, /* 10.4.29 PS-HANDOVER-REQUIRED-NACK */
-/* 0x5c */ { BSSGP_PDU_PS_HANDOVER_REQUEST, "PS-HANDOVER-REQUEST" }, /* 10.4.30 PS-HANDOVER-REQUEST */
-/* 0x5d */ { BSSGP_PDU_PS_HANDOVER_REQUEST_ACK, "PS-HANDOVER-REQUEST-ACK" }, /* 10.4.31 PS-HANDOVER-REQUEST-ACK */
-/* 0x5e */ { BSSGP_PDU_PS_HANDOVER_REQUEST_NACK, "PS-HANDOVER-REQUEST-NACK" }, /* 10.4.31 10.4.32 PS-HANDOVER-REQUEST-NACK */
-
-/* 0x5f */ { BSSGP_PDU_RESERVED_0X5F, "Reserved" }, /* */
-
-/* 0x60 */ { BSSGP_PDU_PERFORM_LOCATION_REQUEST, "PERFORM-LOCATION-REQUEST" }, /* 10.5.1 PERFORM-LOCATION-REQUEST */
-/* 0x61 */ { BSSGP_PDU_PERFORM_LOCATION_RESPONSE, "PERFORM-LOCATION-RESPONSE" }, /* 10.5.2 PERFORM-LOCATION-RESPONSE */
-/* 0x62 */ { BSSGP_PDU_PERFORM_LOCATION_ABORT, "PERFORM-LOCATION-ABORT" }, /* 10.5.3 PERFORM-LOCATION-ABORT */
-/* 0x63 */ { BSSGP_PDU_POSITION_COMMAND, "POSITION-COMMAND" }, /* 10.5.4 POSITION-COMMAND */
-/* 0x64 */ { BSSGP_PDU_POSITION_RESPONSE, "POSITION-RESPONSE" }, /* 10.5.5 POSITION-RESPONSE */
-
-/* 0x65 */ { BSSGP_PDU_RESERVED_0X65, "Reserved" }, /* */
-/* 0x66 */ { BSSGP_PDU_RESERVED_0X66, "Reserved" }, /* */
-/* 0x67 */ { BSSGP_PDU_RESERVED_0X67, "Reserved" }, /* */
-/* 0x68 */ { BSSGP_PDU_RESERVED_0X68, "Reserved" }, /* */
-/* 0x69 */ { BSSGP_PDU_RESERVED_0X69, "Reserved" }, /* */
-/* 0x6a */ { BSSGP_PDU_RESERVED_0X6A, "Reserved" }, /* */
-/* 0x6b */ { BSSGP_PDU_RESERVED_0X6B, "Reserved" }, /* */
-/* 0x6b */ { BSSGP_PDU_RESERVED_0X6C, "Reserved" }, /* */
-/* 0x6d */ { BSSGP_PDU_RESERVED_0X6D, "Reserved" }, /* */
-/* 0x6e */ { BSSGP_PDU_RESERVED_0X6E, "Reserved" }, /* */
-/* 0x6f */ { BSSGP_PDU_RESERVED_0X6F, "Reserved" }, /* */
-
-/* 0x70 */ { BSSGP_PDU_RAN_INFORMATION, "RAN-INFORMATION" }, /* 10.6.2 RAN-INFORMATION */
-/* 0x71 */ { BSSGP_PDU_RAN_INFORMATION_REQUEST, "RAN-INFORMATION-REQUEST" }, /* 10.6.1 RAN-INFORMATION-REQUEST */
-/* 0x72 */ { BSSGP_PDU_RAN_INFORMATION_ACK, "RAN-INFORMATION-ACK" }, /* 10.6.3 RAN-INFORMATION-ACK */
-/* 0x73 */ { BSSGP_PDU_RAN_INFORMATION_ERROR, "RAN-INFORMATION-ERROR" }, /* 10.6.4 RAN-INFORMATION-ERROR */
+/* 0x00 */ { BSSGP_PDU_DL_UNITDATA, "DL-UNITDATA" }, /* 10.2.1 DL-UNITDATA */
+/* 0x01 */ { BSSGP_PDU_UL_UNITDATA, "UL-UNITDATA" }, /* 10.2.2 UL-UNITDATA */
+/* 0x02 */ { BSSGP_PDU_RA_CAPABILITY, "RA-CAPABILITY" }, /* 10.2.3 RA-CAPABILITY */
+/* NOTE 1: This value was allocated in an earlier version of the protocol and shall not be used */
+/* 0x03 */ { BSSGP_PDU_PTM_UNITDATA, "Reserved" }, /* 10.2.4 (void) */
+/* 0x04 */ { BSSGP_PDU_DL_MBMS_UNITDATA, "DL-MBMS-UNITDATA" }, /* 10.2.5 DL-MBMS-UNITDATA */
+/* 0x05 */ { BSSGP_PDU_UL_MBMS_UNITDATA, "UL-MBMS-UNITDATA" }, /* 10.2.6 UL-MBMS-UNITDATA */
+/* 0x06 */ { BSSGP_PDU_PAGING_PS, "PAGING-PS" }, /* 10.3.1 PAGING PS */
+/* 0x07 */ { BSSGP_PDU_PAGING_CS, "PAGING-CS" }, /* 10.3.2 PAGING CS */
+/* 0x08 */ { BSSGP_PDU_RA_CAPABILITY_UPDATE, "RA-CAPABILITY-UPDATE" }, /* 10.3.3 RA-CAPABILITY-UPDATE */
+/* 0x09 */ { BSSGP_PDU_RA_CAPABILITY_UPDATE_ACK, "RA-CAPABILITY-UPDATE-ACK" }, /* 10.3.4 RA-CAPABILITY-UPDATE-ACK */
+/* 0x0a */ { BSSGP_PDU_RADIO_STATUS, "RADIO-STATUS" }, /* 10.3.5 RADIO-STATUS */
+/* 0x0b */ { BSSGP_PDU_SUSPEND, "SUSPEND" }, /* 10.3.6 SUSPEND */
+/* 0x0c */ { BSSGP_PDU_SUSPEND_ACK, "SUSPEND-ACK" }, /* 10.3.7 SUSPEND-ACK */
+/* 0x0d */ { BSSGP_PDU_SUSPEND_NACK, "SUSPEND-NACK" }, /* 10.3.8 SUSPEND-NACK */
+/* 0x0e */ { BSSGP_PDU_RESUME, "RESUME" }, /* 10.3.9 RESUME */
+/* 0x0f */ { BSSGP_PDU_RESUME_ACK, "RESUME-ACK" }, /* 10.3.10 RESUME-ACK */
+/* 0x10 */ { BSSGP_PDU_RESUME_NACK, "RESUME-NACK" }, /* 10.3.11 RESUME-NACK */
+/* 0x11 to 0x1f Reserved */
+/* 0x11 */ { BSSGP_PDU_RESERVED_0X11, "Reserved" }, /* */
+/* 0x12 */ { BSSGP_PDU_RESERVED_0X12, "Reserved" }, /* */
+/* 0x13 */ { BSSGP_PDU_RESERVED_0X13, "Reserved" }, /* */
+/* 0x14 */ { BSSGP_PDU_RESERVED_0X14, "Reserved" }, /* */
+/* 0x15 */ { BSSGP_PDU_RESERVED_0X15, "Reserved" }, /* */
+/* 0x16 */ { BSSGP_PDU_RESERVED_0X16, "Reserved" }, /* */
+/* 0x17 */ { BSSGP_PDU_RESERVED_0X17, "Reserved" }, /* */
+/* 0x18 */ { BSSGP_PDU_RESERVED_0X18, "Reserved" }, /* */
+/* 0x19 */ { BSSGP_PDU_RESERVED_0X19, "Reserved" }, /* */
+/* 0x1a */ { BSSGP_PDU_RESERVED_0X1A, "Reserved" }, /* */
+/* 0x1b */ { BSSGP_PDU_RESERVED_0X1B, "Reserved" }, /* */
+/* 0x1c */ { BSSGP_PDU_RESERVED_0X1C, "Reserved" }, /* */
+/* 0x1d */ { BSSGP_PDU_RESERVED_0X1D, "Reserved" }, /* */
+/* 0x1e */ { BSSGP_PDU_RESERVED_0X1E, "Reserved" }, /* */
+/* 0x1f */ { BSSGP_PDU_RESERVED_0X1F, "Reserved" }, /* */
+
+/* 0x20 */ { BSSGP_PDU_BVC_BLOCK, "BVC-BLOCK" }, /* 10.4.8 BVC-BLOCK */
+/* 0x21 */ { BSSGP_PDU_BVC_BLOCK_ACK, "BVC-BLOCK-ACK" }, /* 10.4.9 BVC-BLOCK-ACK */
+/* 0x22 */ { BSSGP_PDU_BVC_RESET, "BVC-RESET" }, /* 10.4.12 BVC-RESET */
+/* 0x23 */ { BSSGP_PDU_BVC_RESET_ACK, "BVC-RESET-ACK" }, /* 10.4.13 BVC-RESET-ACK */
+/* 0x24 */ { BSSGP_PDU_BVC_UNBLOCK, "UNBLOCK" }, /* 10.4.10 BVC-UNBLOCK */
+/* 0x25 */ { BSSGP_PDU_BVC_UNBLOCK_ACK, "UNBLOCK-ACK" }, /* 10.4.11 BVC-UNBLOCK-ACK */
+/* 0x26 */ { BSSGP_PDU_FLOW_CONTROL_BVC, "FLOW-CONTROL-BVC" }, /* 10.4.4 FLOW-CONTROL-BVC */
+/* 0x27 */ { BSSGP_PDU_FLOW_CONTROL_BVC_ACK, "FLOW-CONTROL-BVC-ACK" }, /* 10.4.5 FLOW-CONTROL-BVC-ACK */
+/* 0x28 */ { BSSGP_PDU_FLOW_CONTROL_MS, "FLOW-CONTROL-MS" }, /* 10.4.6 FLOW-CONTROL-MS */
+/* 0x29 */ { BSSGP_PDU_FLOW_CONTROL_MS_ACK, "FLOW-CONTROL-MS-ACK" }, /* 10.4.7 FLOW-CONTROL-MS-ACK */
+/* 0x2a */ { BSSGP_PDU_FLUSH_LL, "FLUSH-LL" }, /* 10.4.1 FLUSH-LL */
+/* 0x2b */ { BSSGP_PDU_FLUSH_LL_ACK, "FLUSH_LL_ACK" }, /* 10.4.2 FLUSH-LL-ACK */
+/* 0x2c */ { BSSGP_PDU_LLC_DISCARDED, "LLC-DISCARDED" }, /* 10.4.3 LLC-DISCARDED */
+/* 0x2d */ { BSSGP_PDU_FLOW_CONTROL_PFC, "FLOW-CONTROL-PFC" }, /* 10.4.24 FLOW-CONTROL-PFC */
+/* 0x2e */ { BSSGP_PDU_FLOW_CONTROL_PFC_ACK, "FLOW-CONTROL-PFC-ACK" }, /* 10.4.25 FLOW-CONTROL-PFC-ACK */
+/* 0x2f to 0x3f Reserved */
+/* 0x2f */ { BSSGP_PDU_RESERVED_0X2F, "Reserved" }, /* */
+/* 0x30 */ { BSSGP_PDU_RESERVED_0X30, "Reserved" }, /* */
+/* 0x31 */ { BSSGP_PDU_RESERVED_0X31, "Reserved" }, /* */
+/* 0x32 */ { BSSGP_PDU_RESERVED_0X32, "Reserved" }, /* */
+/* 0x33 */ { BSSGP_PDU_RESERVED_0X33, "Reserved" }, /* */
+/* 0x34 */ { BSSGP_PDU_RESERVED_0X34, "Reserved" }, /* */
+/* 0x35 */ { BSSGP_PDU_RESERVED_0X35, "Reserved" }, /* */
+/* 0x36 */ { BSSGP_PDU_RESERVED_0X36, "Reserved" }, /* */
+/* 0x37 */ { BSSGP_PDU_RESERVED_0X37, "Reserved" }, /* */
+/* 0x38 */ { BSSGP_PDU_RESERVED_0X38, "Reserved" }, /* */
+/* 0x39 */ { BSSGP_PDU_RESERVED_0X39, "Reserved" }, /* */
+/* 0x3a */ { BSSGP_PDU_RESERVED_0X3A, "Reserved" }, /* */
+/* 0x3b */ { BSSGP_PDU_RESERVED_0X3B, "Reserved" }, /* */
+/* 0x3c */ { BSSGP_PDU_RESERVED_0X3C, "Reserved" }, /* */
+/* 0x3d */ { BSSGP_PDU_RESERVED_0X3D, "Reserved" }, /* */
+/* 0x3e */ { BSSGP_PDU_RESERVED_0X3E, "Reserved" }, /* */
+/* 0x3f */ { BSSGP_PDU_RESERVED_0X3F, "Reserved" }, /* */
+
+/* 0x40 */ { BSSGP_PDU_SGSN_INVOKE_TRACE, "SGSN-INVOKE-TRACE" }, /* 10.4.15 SGSN-INVOKE-TRACE */
+/* 0x41 */ { BSSGP_PDU_STATUS, "STATUS" }, /* 10.4.14 STATUS */
+/* 0x42 to 0x4f Reserved */
+/* 0x42 */ { BSSGP_PDU_RESERVED_0X42, "Reserved" }, /* */
+/* 0x43 */ { BSSGP_PDU_RESERVED_0X43, "Reserved" }, /* */
+/* 0x44 */ { BSSGP_PDU_RESERVED_0X44, "Reserved" }, /* */
+/* 0x45 */ { BSSGP_PDU_RESERVED_0X45, "Reserved" }, /* */
+/* 0x46 */ { BSSGP_PDU_RESERVED_0X46, "Reserved" }, /* */
+/* 0x47 */ { BSSGP_PDU_RESERVED_0X47, "Reserved" }, /* */
+/* 0x48 */ { BSSGP_PDU_RESERVED_0X48, "Reserved" }, /* */
+/* 0x49 */ { BSSGP_PDU_RESERVED_0X49, "Reserved" }, /* */
+/* 0x4a */ { BSSGP_PDU_RESERVED_0X4A, "Reserved" }, /* */
+/* 0x4b */ { BSSGP_PDU_RESERVED_0X4B, "Reserved" }, /* */
+/* 0x4c */ { BSSGP_PDU_RESERVED_0X4C, "Reserved" }, /* */
+/* 0x4d */ { BSSGP_PDU_RESERVED_0X4D, "Reserved" }, /* */
+/* 0x4e */ { BSSGP_PDU_RESERVED_0X4E, "Reserved" }, /* */
+/* 0x4f */ { BSSGP_PDU_RESERVED_0X4F, "Reserved" }, /* */
+/* 0x50 */ { BSSGP_PDU_DOWNLOAD_BSS_PFC, "DOWNLOAD-BSS-PFC" }, /* 10.4.16 DOWNLOAD-BSS-PFC */
+/* 0x51 */ { BSSGP_PDU_CREATE_BSS_PFC, "CREATE-BSS-PFC" }, /* 10.4.17 CREATE-BSS-PFC */
+/* 0x52 */ { BSSGP_PDU_CREATE_BSS_PFC_ACK, "CREATE-BSS-PFC-ACK" }, /* 10.4.18 CREATE-BSS-PFC-ACK */
+/* 0x53 */ { BSSGP_PDU_CREATE_BSS_PFC_NACK, "CREATE-BSS-PFC-NACK" }, /* 10.4.19 CREATE-BSS-PFC-NACK */
+/* 0x54 */ { BSSGP_PDU_MODIFY_BSS_PFC, "MODIFY-BSS-PFC" }, /* 10.4.20 MODIFY-BSS-PFC */
+/* 0x55 */ { BSSGP_PDU_MODIFY_BSS_PFC_ACK, "MODIFY-BSS-PFC-ACK" }, /* 10.4.21 MODIFY-BSS-PFC-ACK */
+/* 0x56 */ { BSSGP_PDU_DELETE_BSS_PFC, "DELETE-BSS-PFC" }, /* 10.4.22 DELETE-BSS-PFC */
+/* 0x57 */ { BSSGP_PDU_DELETE_BSS_PFC_ACK, "DELETE-BSS-PFC-ACK" }, /* 10.4.23 DELETE-BSS-PFC-ACK */
+/* 0x58 */ { BSSGP_PDU_DELETE_BSS_PFC_REQ, "DELETE-BSS-PFC-REQ" }, /* 10.4.26 DELETE-BSS-PFC-REQ */
+/* 0x59 */ { BSSGP_PDU_PS_HANDOVER_REQUIRED, "PS-HANDOVER-REQUIRED" }, /* 10.4.27 PS-HANDOVER-REQUIRED */
+/* 0x5a */ { BSSGP_PDU_PS_HANDOVER_REQUIRED_ACK, "PS-HANDOVER-REQUIRED-ACK" }, /* 10.4.28 PS-HANDOVER-REQUIRED-ACK */
+/* 0x5b */ { BSSGP_PDU_PS_HANDOVER_REQUIRED_NACK, "PS-HANDOVER-REQUIRED-NACK" }, /* 10.4.29 PS-HANDOVER-REQUIRED-NACK */
+/* 0x5c */ { BSSGP_PDU_PS_HANDOVER_REQUEST, "PS-HANDOVER-REQUEST" }, /* 10.4.30 PS-HANDOVER-REQUEST */
+/* 0x5d */ { BSSGP_PDU_PS_HANDOVER_REQUEST_ACK, "PS-HANDOVER-REQUEST-ACK" }, /* 10.4.31 PS-HANDOVER-REQUEST-ACK */
+/* 0x5e */ { BSSGP_PDU_PS_HANDOVER_REQUEST_NACK, "PS-HANDOVER-REQUEST-NACK" }, /* 10.4.31 10.4.32 PS-HANDOVER-REQUEST-NACK */
+
+/* 0x5f */ { BSSGP_PDU_RESERVED_0X5F, "Reserved" }, /* */
+
+/* 0x60 */ { BSSGP_PDU_PERFORM_LOCATION_REQUEST, "PERFORM-LOCATION-REQUEST" }, /* 10.5.1 PERFORM-LOCATION-REQUEST */
+/* 0x61 */ { BSSGP_PDU_PERFORM_LOCATION_RESPONSE, "PERFORM-LOCATION-RESPONSE" }, /* 10.5.2 PERFORM-LOCATION-RESPONSE */
+/* 0x62 */ { BSSGP_PDU_PERFORM_LOCATION_ABORT, "PERFORM-LOCATION-ABORT" }, /* 10.5.3 PERFORM-LOCATION-ABORT */
+/* 0x63 */ { BSSGP_PDU_POSITION_COMMAND, "POSITION-COMMAND" }, /* 10.5.4 POSITION-COMMAND */
+/* 0x64 */ { BSSGP_PDU_POSITION_RESPONSE, "POSITION-RESPONSE" }, /* 10.5.5 POSITION-RESPONSE */
+
+/* 0x65 */ { BSSGP_PDU_RESERVED_0X65, "Reserved" }, /* */
+/* 0x66 */ { BSSGP_PDU_RESERVED_0X66, "Reserved" }, /* */
+/* 0x67 */ { BSSGP_PDU_RESERVED_0X67, "Reserved" }, /* */
+/* 0x68 */ { BSSGP_PDU_RESERVED_0X68, "Reserved" }, /* */
+/* 0x69 */ { BSSGP_PDU_RESERVED_0X69, "Reserved" }, /* */
+/* 0x6a */ { BSSGP_PDU_RESERVED_0X6A, "Reserved" }, /* */
+/* 0x6b */ { BSSGP_PDU_RESERVED_0X6B, "Reserved" }, /* */
+/* 0x6b */ { BSSGP_PDU_RESERVED_0X6C, "Reserved" }, /* */
+/* 0x6d */ { BSSGP_PDU_RESERVED_0X6D, "Reserved" }, /* */
+/* 0x6e */ { BSSGP_PDU_RESERVED_0X6E, "Reserved" }, /* */
+/* 0x6f */ { BSSGP_PDU_RESERVED_0X6F, "Reserved" }, /* */
+
+/* 0x70 */ { BSSGP_PDU_RAN_INFORMATION, "RAN-INFORMATION" }, /* 10.6.2 RAN-INFORMATION */
+/* 0x71 */ { BSSGP_PDU_RAN_INFORMATION_REQUEST, "RAN-INFORMATION-REQUEST" }, /* 10.6.1 RAN-INFORMATION-REQUEST */
+/* 0x72 */ { BSSGP_PDU_RAN_INFORMATION_ACK, "RAN-INFORMATION-ACK" }, /* 10.6.3 RAN-INFORMATION-ACK */
+/* 0x73 */ { BSSGP_PDU_RAN_INFORMATION_ERROR, "RAN-INFORMATION-ERROR" }, /* 10.6.4 RAN-INFORMATION-ERROR */
/* 0x74 */ { BSSGP_PDU_RAN_INFORMATION_APP_ERROR, "RAN-INFORMATION-APPLICATION-ERROR" }, /* 10.6.5 RAN-INFORMATION-APPLICATION-ERROR */
-/* 0x75 */ { BSSGP_PDU_RESERVED_0X75, "Reserved" }, /* */
-/* 0x76 */ { BSSGP_PDU_RESERVED_0X76, "Reserved" }, /* */
-/* 0x77 */ { BSSGP_PDU_RESERVED_0X77, "Reserved" }, /* */
-/* 0x78 */ { BSSGP_PDU_RESERVED_0X78, "Reserved" }, /* */
-/* 0x79 */ { BSSGP_PDU_RESERVED_0X79, "Reserved" }, /* */
-/* 0x7a */ { BSSGP_PDU_RESERVED_0X7A, "Reserved" }, /* */
-/* 0x7b */ { BSSGP_PDU_RESERVED_0X7B, "Reserved" }, /* */
-/* 0x7c */ { BSSGP_PDU_RESERVED_0X7C, "Reserved" }, /* */
-/* 0x7d */ { BSSGP_PDU_RESERVED_0X7D, "Reserved" }, /* */
-/* 0x7e */ { BSSGP_PDU_RESERVED_0X7E, "Reserved" }, /* */
-/* 0x7f */ { BSSGP_PDU_RESERVED_0X7F, "Reserved" }, /* */
-/* 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" }, /* 10.7.3 MBMS-SESSION-STOP-REQUEST */
-/* 0x83 */ { BSSGP_PDU_MBMS_SESSION_STOP_RESP, "MBMS-SESSION-STOP-RESPONSE" }, /* 10.7.4 MBMS-SESSION-STOP-RESPONSE */
-/* 0x84 */ { BSSGP_PDU_MBMS_SESSION_UPDATE_REQ, "MBMS-SESSION-UPDATE-REQUEST" }, /* 10.7.5 MBMS-SESSION-UPDATE-REQUEST */
-/* 0x85 */ { BSSGP_PDU_MBMS_SESSION_UPDATE_RESP, "MBMS-SESSION-UPDATE-RESPONSE" },/* 10.7.6 MBMS-SESSION-UPDATE-RESPONSE */
-
-/* 0x86 */ { BSSGP_PDU_RESERVED_0X86, "Reserved" }, /* */
-/* 0x87 */ { BSSGP_PDU_RESERVED_0X87, "Reserved" }, /* */
-/* 0x88 */ { BSSGP_PDU_RESERVED_0X88, "Reserved" }, /* */
-/* 0x89 */ { BSSGP_PDU_RESERVED_0X89, "Reserved" }, /* */
-/* 0x8a */ { BSSGP_PDU_RESERVED_0X8A, "Reserved" }, /* */
-/* 0x8b */ { BSSGP_PDU_RESERVED_0X8B, "Reserved" }, /* */
-/* 0x8c */ { BSSGP_PDU_RESERVED_0X8C, "Reserved" }, /* */
-/* 0x8d */ { BSSGP_PDU_RESERVED_0X8D, "Reserved" }, /* */
-/* 0x8e */ { BSSGP_PDU_RESERVED_0X8E, "Reserved" }, /* */
-/* 0x8f */ { BSSGP_PDU_RESERVED_0X8F, "Reserved" }, /* */
-/* 0x90 */ { BSSGP_PDU_RESERVED_0X90, "Reserved" }, /* */
-
-/* 0x91 */ {BSSGP_PDU_PS_HANDOVER_COMPLETE, "PS-HANDOVER-COMPLETE" }, /* 10.4.33 PS-HANDOVER-COMPLETE */
-/* 0x92 */ {BSSGP_PDU_PS_HANDOVER_CANCEL, "PS-HANDOVER-CANCEL" }, /* 10.4.34 PS-HANDOVER-CANCEL */
-/* 0x93 */ {BSSGP_PDU_PS_HANDOVER_COMPLETE_ACK, "PS-HANDOVER-COMPLETE-ACK" }, /* 10.4.35 PS-HANDOVER-COMPLETE-ACK*/
-
- { 0, NULL }
+/* 0x75 */ { BSSGP_PDU_RESERVED_0X75, "Reserved" }, /* */
+/* 0x76 */ { BSSGP_PDU_RESERVED_0X76, "Reserved" }, /* */
+/* 0x77 */ { BSSGP_PDU_RESERVED_0X77, "Reserved" }, /* */
+/* 0x78 */ { BSSGP_PDU_RESERVED_0X78, "Reserved" }, /* */
+/* 0x79 */ { BSSGP_PDU_RESERVED_0X79, "Reserved" }, /* */
+/* 0x7a */ { BSSGP_PDU_RESERVED_0X7A, "Reserved" }, /* */
+/* 0x7b */ { BSSGP_PDU_RESERVED_0X7B, "Reserved" }, /* */
+/* 0x7c */ { BSSGP_PDU_RESERVED_0X7C, "Reserved" }, /* */
+/* 0x7d */ { BSSGP_PDU_RESERVED_0X7D, "Reserved" }, /* */
+/* 0x7e */ { BSSGP_PDU_RESERVED_0X7E, "Reserved" }, /* */
+/* 0x7f */ { BSSGP_PDU_RESERVED_0X7F, "Reserved" }, /* */
+/* 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" }, /* 10.7.3 MBMS-SESSION-STOP-REQUEST */
+/* 0x83 */ { BSSGP_PDU_MBMS_SESSION_STOP_RESP, "MBMS-SESSION-STOP-RESPONSE" }, /* 10.7.4 MBMS-SESSION-STOP-RESPONSE */
+/* 0x84 */ { BSSGP_PDU_MBMS_SESSION_UPDATE_REQ, "MBMS-SESSION-UPDATE-REQUEST" }, /* 10.7.5 MBMS-SESSION-UPDATE-REQUEST */
+/* 0x85 */ { BSSGP_PDU_MBMS_SESSION_UPDATE_RESP, "MBMS-SESSION-UPDATE-RESPONSE" },/* 10.7.6 MBMS-SESSION-UPDATE-RESPONSE */
+
+/* 0x86 */ { BSSGP_PDU_RESERVED_0X86, "Reserved" }, /* */
+/* 0x87 */ { BSSGP_PDU_RESERVED_0X87, "Reserved" }, /* */
+/* 0x88 */ { BSSGP_PDU_RESERVED_0X88, "Reserved" }, /* */
+/* 0x89 */ { BSSGP_PDU_RESERVED_0X89, "Reserved" }, /* */
+/* 0x8a */ { BSSGP_PDU_RESERVED_0X8A, "Reserved" }, /* */
+/* 0x8b */ { BSSGP_PDU_RESERVED_0X8B, "Reserved" }, /* */
+/* 0x8c */ { BSSGP_PDU_RESERVED_0X8C, "Reserved" }, /* */
+/* 0x8d */ { BSSGP_PDU_RESERVED_0X8D, "Reserved" }, /* */
+/* 0x8e */ { BSSGP_PDU_RESERVED_0X8E, "Reserved" }, /* */
+/* 0x8f */ { BSSGP_PDU_RESERVED_0X8F, "Reserved" }, /* */
+/* 0x90 */ { BSSGP_PDU_RESERVED_0X90, "Reserved" }, /* */
+
+/* 0x91 */ {BSSGP_PDU_PS_HANDOVER_COMPLETE, "PS-HANDOVER-COMPLETE" }, /* 10.4.33 PS-HANDOVER-COMPLETE */
+/* 0x92 */ {BSSGP_PDU_PS_HANDOVER_CANCEL, "PS-HANDOVER-CANCEL" }, /* 10.4.34 PS-HANDOVER-CANCEL */
+/* 0x93 */ {BSSGP_PDU_PS_HANDOVER_COMPLETE_ACK, "PS-HANDOVER-COMPLETE-ACK" }, /* 10.4.35 PS-HANDOVER-COMPLETE-ACK*/
+
+ { 0, NULL }
};
static value_string_ext bssgp_msg_strings_ext = VALUE_STRING_EXT_INIT(bssgp_msg_strings);
-#define NUM_BSSGP_MSG (sizeof(bssgp_msg_strings)/sizeof(value_string))
+#define NUM_BSSGP_MSG (sizeof(bssgp_msg_strings)/sizeof(value_string))
static gint ett_bssgp_msg[NUM_BSSGP_MSG];
static void (*bssgp_msg_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len) = {
/* 0x00 to 0x10 */
- bssgp_dl_unitdata, /* 10.2.1 DL-UNITDATA */
- bssgp_ul_unitdata, /* 10.2.2 UL-UNITDATA */
- bssgp_ra_cap, /* 10.2.3 RA-CAPABILITY */
- NULL, /* 10.2.4 (void) */
- bssgp_dl_mbms_unitdata, /* 10.2.5 DL-MBMS-UNITDATA */
- bssgp_ul_mbms_unitdata, /* 10.2.6 UL-MBMS-UNITDATA */
- bssgp_paging_ps, /* 10.3.1 PAGING PS */
- bssgp_paging_cs, /* 10.3.2 PAGING CS */
- bssgp_ra_cap_upd, /* 10.3.3 RA-CAPABILITY-UPDATE */
- bssgp_ra_cap_upd_ack, /* 10.3.3 RA-CAPABILITY-UPDATE */
- bssgp_ra_status, /* 10.3.5 RADIO-STATUS */
- bssgp_suspend, /* 10.3.6 SUSPEND */
- bssgp_suspend_ack, /* 10.3.7 SUSPEND-ACK */
- bssgp_suspend_nack, /* 10.3.8 SUSPEND-NACK */
- bssgp_resume, /* 10.3.9 RESUME */
- bssgp_resume_ack, /* 10.3.10 RESUME-ACK */
- bssgp_resume_nack, /* 10.3.11 RESUME-NACK */
+ bssgp_dl_unitdata, /* 10.2.1 DL-UNITDATA */
+ bssgp_ul_unitdata, /* 10.2.2 UL-UNITDATA */
+ bssgp_ra_cap, /* 10.2.3 RA-CAPABILITY */
+ NULL, /* 10.2.4 (void) */
+ bssgp_dl_mbms_unitdata, /* 10.2.5 DL-MBMS-UNITDATA */
+ bssgp_ul_mbms_unitdata, /* 10.2.6 UL-MBMS-UNITDATA */
+ bssgp_paging_ps, /* 10.3.1 PAGING PS */
+ bssgp_paging_cs, /* 10.3.2 PAGING CS */
+ bssgp_ra_cap_upd, /* 10.3.3 RA-CAPABILITY-UPDATE */
+ bssgp_ra_cap_upd_ack, /* 10.3.3 RA-CAPABILITY-UPDATE */
+ bssgp_ra_status, /* 10.3.5 RADIO-STATUS */
+ bssgp_suspend, /* 10.3.6 SUSPEND */
+ bssgp_suspend_ack, /* 10.3.7 SUSPEND-ACK */
+ bssgp_suspend_nack, /* 10.3.8 SUSPEND-NACK */
+ bssgp_resume, /* 10.3.9 RESUME */
+ bssgp_resume_ack, /* 10.3.10 RESUME-ACK */
+ bssgp_resume_nack, /* 10.3.11 RESUME-NACK */
/* 0x11 to 0x1f Reserved */
NULL, /* 0x11 */
@@ -6082,21 +6089,21 @@ static void (*bssgp_msg_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *pin
NULL, /* 0x1F */
/* 0x20 to 0x2e */
- bssgp_bvc_block, /* 10.4.8 BVC-BLOCK */
- bssgp_bvc_block_ack, /* 10.4.9 BVC-BLOCK-ACK */
- bssgp_bvc_reset, /* 10.4.12 BVC-RESET */
- bssgp_bvc_reset_ack, /* 10.4.13 BVC-RESET-ACK */
- bssgp_bvc_un_block, /* 10.4.10 BVC-UNBLOCK */
- bssgp_bvc_un_block_ack, /* 10.4.11 BVC-UNBLOCK-ACK */
- bssgp_flow_control_bvc, /* 10.4.4 FLOW-CONTROL-BVC */
- bssgp_flow_control_bvc_ack, /* 10.4.5 FLOW-CONTROL-BVC-ACK */
- bssgp_flow_control_ms, /* 10.4.6 FLOW-CONTROL-MS */
- bssgp_flow_control_ms_ack, /* 10.4.7 FLOW-CONTROL-MS-ACK */
- bssgp_flush_ll, /* 10.4.1 FLUSH-LL */
- bssgp_flush_ll_ack, /* 10.4.2 FLUSH-LL-ACK */
- bssgp_llc_discarded, /* 10.4.3 LLC-DISCARDED */
- bssgp_flow_cntrl_pfc, /* 10.4.24 FLOW-CONTROL-PFC */
- bssgp_flow_cntrl_pfc_ack, /* 10.4.25 FLOW-CONTROL-PFC-ACK */
+ bssgp_bvc_block, /* 10.4.8 BVC-BLOCK */
+ bssgp_bvc_block_ack, /* 10.4.9 BVC-BLOCK-ACK */
+ bssgp_bvc_reset, /* 10.4.12 BVC-RESET */
+ bssgp_bvc_reset_ack, /* 10.4.13 BVC-RESET-ACK */
+ bssgp_bvc_un_block, /* 10.4.10 BVC-UNBLOCK */
+ bssgp_bvc_un_block_ack, /* 10.4.11 BVC-UNBLOCK-ACK */
+ bssgp_flow_control_bvc, /* 10.4.4 FLOW-CONTROL-BVC */
+ bssgp_flow_control_bvc_ack, /* 10.4.5 FLOW-CONTROL-BVC-ACK */
+ bssgp_flow_control_ms, /* 10.4.6 FLOW-CONTROL-MS */
+ bssgp_flow_control_ms_ack, /* 10.4.7 FLOW-CONTROL-MS-ACK */
+ bssgp_flush_ll, /* 10.4.1 FLUSH-LL */
+ bssgp_flush_ll_ack, /* 10.4.2 FLUSH-LL-ACK */
+ bssgp_llc_discarded, /* 10.4.3 LLC-DISCARDED */
+ bssgp_flow_cntrl_pfc, /* 10.4.24 FLOW-CONTROL-PFC */
+ bssgp_flow_cntrl_pfc_ack, /* 10.4.25 FLOW-CONTROL-PFC-ACK */
/* 0x2f to 0x3f Reserved */
NULL, /* 0x2f */
@@ -6118,8 +6125,8 @@ static void (*bssgp_msg_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *pin
NULL, /* 0x3F */
/* 0x40 to 0x41 */
- bssgp_sgsn_invoke_trace, /* 10.4.15 SGSN-INVOKE-TRACE */
- bssgp_status, /* 10.4.14 STATUS */
+ bssgp_sgsn_invoke_trace, /* 10.4.15 SGSN-INVOKE-TRACE */
+ bssgp_status, /* 10.4.14 STATUS */
/* 0x42 to 0x4f Reserved */
NULL, /* 0x42 */
@@ -6138,31 +6145,31 @@ static void (*bssgp_msg_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *pin
NULL, /* 0x4F */
/* 0x50 to 0x5e */
- bssgp_download_bss_pfc, /* 10.4.16 DOWNLOAD-BSS-PFC */
- bssgp_create_bss_pfc, /* 10.4.17 CREATE-BSS-PFC */
- bssgp_create_bss_pfc_ack, /* 10.4.18 CREATE-BSS-PFC-ACK */
- bssgp_create_bss_pfc_nack, /* 10.4.19 CREATE-BSS-PFC-NACK */
- bssgp_modify_bss_pfc, /* 10.4.20 MODIFY-BSS-PFC */
- bssgp_modify_bss_pfc_ack, /* 10.4.21 MODIFY-BSS-PFC-ACK */
- bssgp_delete_bss_pfc, /* 10.4.22 DELETE-BSS-PFC */
- bssgp_delete_bss_pfc_ack, /* 10.4.23 DELETE-BSS-PFC-ACK */
- bssgp_delete_bss_pfc_req, /* 10.4.26 DELETE-BSS-PFC-REQ */
- bssgp_ps_ho_required, /* 10.4.27 PS-HANDOVER-REQUIRED */
- bssgp_ps_ho_required_ack, /* 10.4.28 PS-HANDOVER-REQUIRED-ACK */
- bssgp_ps_ho_required_nack, /* 10.4.29 PS-HANDOVER-REQUIRED-NACK */
- bssgp_ps_ho_request, /* 10.4.30 PS-HANDOVER-REQUEST */
- bssgp_ps_ho_request_ack, /* 10.4.31 PS-HANDOVER-REQUEST-ACK */
- bssgp_ps_ho_request_nack, /* 10.4.31 10.4.32 PS-HANDOVER-REQUEST-NACK */
+ bssgp_download_bss_pfc, /* 10.4.16 DOWNLOAD-BSS-PFC */
+ bssgp_create_bss_pfc, /* 10.4.17 CREATE-BSS-PFC */
+ bssgp_create_bss_pfc_ack, /* 10.4.18 CREATE-BSS-PFC-ACK */
+ bssgp_create_bss_pfc_nack, /* 10.4.19 CREATE-BSS-PFC-NACK */
+ bssgp_modify_bss_pfc, /* 10.4.20 MODIFY-BSS-PFC */
+ bssgp_modify_bss_pfc_ack, /* 10.4.21 MODIFY-BSS-PFC-ACK */
+ bssgp_delete_bss_pfc, /* 10.4.22 DELETE-BSS-PFC */
+ bssgp_delete_bss_pfc_ack, /* 10.4.23 DELETE-BSS-PFC-ACK */
+ bssgp_delete_bss_pfc_req, /* 10.4.26 DELETE-BSS-PFC-REQ */
+ bssgp_ps_ho_required, /* 10.4.27 PS-HANDOVER-REQUIRED */
+ bssgp_ps_ho_required_ack, /* 10.4.28 PS-HANDOVER-REQUIRED-ACK */
+ bssgp_ps_ho_required_nack, /* 10.4.29 PS-HANDOVER-REQUIRED-NACK */
+ bssgp_ps_ho_request, /* 10.4.30 PS-HANDOVER-REQUEST */
+ bssgp_ps_ho_request_ack, /* 10.4.31 PS-HANDOVER-REQUEST-ACK */
+ bssgp_ps_ho_request_nack, /* 10.4.31 10.4.32 PS-HANDOVER-REQUEST-NACK */
/* 0x5f Reserved */
NULL, /* 0x5F */
/* 0x60 */
- bssgp_perform_loc_request, /* 10.5.1 PERFORM-LOCATION-REQUEST */
- bssgp_perform_loc_response, /* 10.5.2 PERFORM-LOCATION-RESPONSE */
- bssgp_perform_loc_response_abort, /* 10.5.3 PERFORM-LOCATION-ABORT */
- bssgp_pos_cmd, /* 10.5.4 POSITION-COMMAND */
- bssgp_pos_resp, /* 10.5.5 POSITION-RESPONSE */
+ bssgp_perform_loc_request, /* 10.5.1 PERFORM-LOCATION-REQUEST */
+ bssgp_perform_loc_response, /* 10.5.2 PERFORM-LOCATION-RESPONSE */
+ bssgp_perform_loc_response_abort, /* 10.5.3 PERFORM-LOCATION-ABORT */
+ bssgp_pos_cmd, /* 10.5.4 POSITION-COMMAND */
+ bssgp_pos_resp, /* 10.5.5 POSITION-RESPONSE */
/* 0x65 to 0x6f Reserved */
NULL, /* 0x65 */
@@ -6176,10 +6183,10 @@ static void (*bssgp_msg_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *pin
NULL, /* 0x6d */
NULL, /* 0x6e */
NULL, /* 0x6f */
- bssgp_ran_inf, /* 10.6.2 RAN-INFORMATION */
- bssgp_ran_inf_request, /* 10.6.1 RAN-INFORMATION-REQUEST */
- bssgp_ran_inf_request_ack, /* 10.6.3 RAN-INFORMATION-ACK */
- bssgp_ran_inf_err, /* 10.6.4 RAN-INFORMATION-ERROR */
+ bssgp_ran_inf, /* 10.6.2 RAN-INFORMATION */
+ bssgp_ran_inf_request, /* 10.6.1 RAN-INFORMATION-REQUEST */
+ bssgp_ran_inf_request_ack, /* 10.6.3 RAN-INFORMATION-ACK */
+ bssgp_ran_inf_err, /* 10.6.4 RAN-INFORMATION-ERROR */
bssgp_ran_inf_app_err, /* 10.6.5 RAN-INFORMATION-APPLICATION-ERROR */
NULL, /* 0x75 */
NULL, /* 0x76 */
@@ -6192,12 +6199,12 @@ static void (*bssgp_msg_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *pin
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 */
- bssgp_mbms_session_stop_req, /* 10.7.3 MBMS-SESSION-STOP-REQUEST */
- bssgp_mbms_session_stop_resp, /* 10.7.4 MBMS-SESSION-STOP-RESPONSE */
- bssgp_mbms_session_update_req, /* 10.7.5 MBMS-SESSION-UPDATE-REQUEST */
- bssgp_mbms_session_uptate_resp, /* 10.7.6 MBMS-SESSION-UPDATE-RESPONSE */
+ bssgp_mbms_session_start_req, /* 10.7.1 MBMS-SESSION-START-REQUEST */
+ bssgp_mbms_session_start_resp, /* 10.7.2 MBMS-SESSION-START-RESPONSE */
+ bssgp_mbms_session_stop_req, /* 10.7.3 MBMS-SESSION-STOP-REQUEST */
+ bssgp_mbms_session_stop_resp, /* 10.7.4 MBMS-SESSION-STOP-RESPONSE */
+ bssgp_mbms_session_update_req, /* 10.7.5 MBMS-SESSION-UPDATE-REQUEST */
+ bssgp_mbms_session_uptate_resp, /* 10.7.6 MBMS-SESSION-UPDATE-RESPONSE */
NULL, /* 0x86 */
NULL, /* 0x87 */
NULL, /* 0x88 */
@@ -6209,554 +6216,554 @@ static void (*bssgp_msg_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *pin
NULL, /* 0x8e */
NULL, /* 0x8f */
NULL, /* 0x90 */
- bssgp_ps_ho_complete, /* 0x91 10.4.33 PS-HANDOVER-COMPLETE */
- bssgp_ps_ho_cancel, /* 0x92 10.4.34 PS-HANDOVER-CANCEL */
- bssgp_ps_ho_complete_ack, /* 0x93 10.4.35 PS-HANDOVER-COMPLETE-ACK*/
+ bssgp_ps_ho_complete, /* 0x91 10.4.33 PS-HANDOVER-COMPLETE */
+ bssgp_ps_ho_cancel, /* 0x92 10.4.34 PS-HANDOVER-CANCEL */
+ bssgp_ps_ho_complete_ack, /* 0x93 10.4.35 PS-HANDOVER-COMPLETE-ACK*/
NULL, /* NONE */
};
void get_bssgp_msg_params(guint8 oct, const gchar **msg_str, int *ett_tree, int *hf_idx, msg_fcn *msg_fcn)
{
- gint idx;
+ gint idx;
- *msg_str = match_strval_idx_ext((guint32) (oct & 0xff), &bssgp_msg_strings_ext, &idx);
- *ett_tree = ett_bssgp_msg[idx];
- *hf_idx = hf_bssgp_msg_type;
- *msg_fcn = bssgp_msg_fcn[idx];
+ *msg_str = match_strval_idx_ext((guint32) (oct & 0xff), &bssgp_msg_strings_ext, &idx);
+ *ett_tree = ett_bssgp_msg[idx];
+ *hf_idx = hf_bssgp_msg_type;
+ *msg_fcn = bssgp_msg_fcn[idx];
- return;
+ return;
}
static void
dissect_bssgp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_item *ti;
- proto_tree *bssgp_tree = NULL;
- int offset = 0;
- guint32 len;
- const gchar *msg_str = NULL;
- gint ett_tree;
- int hf_idx;
- void (*msg_fcn)(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len);
+ proto_item *ti;
+ proto_tree *bssgp_tree = NULL;
+ int offset = 0;
+ guint32 len;
+ const gchar *msg_str = NULL;
+ gint ett_tree;
+ int hf_idx;
+ void (*msg_fcn)(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len);
- /* Save pinfo */
- gpinfo = pinfo;
- g_rim_application_identity = 0;
- gparent_tree = tree;
- len = tvb_length(tvb);
+ /* Save pinfo */
+ gpinfo = pinfo;
+ g_rim_application_identity = 0;
+ gparent_tree = tree;
+ len = tvb_length(tvb);
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "BSSGP");
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "BSSGP");
- col_clear(pinfo->cinfo, COL_INFO);
+ col_clear(pinfo->cinfo, COL_INFO);
- g_pdu_type = tvb_get_guint8(tvb,offset);
- if (tree) {
- ti = proto_tree_add_item(tree, proto_bssgp, tvb, 0, -1, ENC_NA);
- bssgp_tree = proto_item_add_subtree(ti, ett_bssgp);
- }
+ g_pdu_type = tvb_get_guint8(tvb,offset);
+ if (tree) {
+ ti = proto_tree_add_item(tree, proto_bssgp, tvb, 0, -1, ENC_NA);
+ bssgp_tree = proto_item_add_subtree(ti, ett_bssgp);
+ }
- /* Messge type IE*/
- msg_fcn = NULL;
- ett_tree = -1;
- hf_idx = -1;
- msg_str = NULL;
+ /* Messge type IE*/
+ msg_fcn = NULL;
+ ett_tree = -1;
+ hf_idx = -1;
+ msg_str = NULL;
- get_bssgp_msg_params(g_pdu_type, &msg_str, &ett_tree, &hf_idx, &msg_fcn);
+ get_bssgp_msg_params(g_pdu_type, &msg_str, &ett_tree, &hf_idx, &msg_fcn);
- if(msg_str){
- col_add_fstr(pinfo->cinfo, COL_INFO, "%s", msg_str);
- }else{
- proto_tree_add_text(bssgp_tree, tvb, offset, 1,"Unknown message 0x%x",g_pdu_type);
- return;
- }
+ if(msg_str){
+ col_add_fstr(pinfo->cinfo, COL_INFO, "%s", msg_str);
+ }else{
+ proto_tree_add_text(bssgp_tree, tvb, offset, 1,"Unknown message 0x%x",g_pdu_type);
+ return;
+ }
- /*
- * Add BSSGP message name
- */
- proto_tree_add_item(bssgp_tree, hf_idx, tvb, offset, 1, FALSE);
- offset++;
+ /*
+ * Add BSSGP message name
+ */
+ proto_tree_add_item(bssgp_tree, hf_idx, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
- /*
- * decode elements
- */
- if (msg_fcn == NULL)
- {
- proto_tree_add_text(bssgp_tree, tvb, offset, len - offset, "Message Elements");
- }
- else
- {
- (*msg_fcn)(tvb, bssgp_tree, pinfo, offset, len - offset);
- }
+ /*
+ * decode elements
+ */
+ if (msg_fcn == NULL)
+ {
+ proto_tree_add_text(bssgp_tree, tvb, offset, len - offset, "Message Elements");
+ }
+ else
+ {
+ (*msg_fcn)(tvb, bssgp_tree, pinfo, offset, len - offset);
+ }
}
void
proto_register_bssgp(void)
{
- guint i;
- guint last_offset;
-
- static hf_register_info hf[] = {
- { &hf_bssgp_msg_type,
- { "PDU Type", "bssgp.pdu_type",
- FT_UINT8, BASE_HEX|BASE_EXT_STRING, &bssgp_msg_strings_ext, 0x0,
- NULL, HFILL }
- },
- { &hf_bssgp_elem_id,
- { "Element ID", "bssgp.elem_id",
- FT_UINT8, BASE_DEC, NULL, 0,
- NULL, HFILL }
- },
- { &hf_bssgp_bss_area_ind,
- { "BSS indicator", "bssgp.bss_ind",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_bssgp_bvci,
- { "BVCI", "bssgp.bvci",
- FT_UINT16, BASE_HEX, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_bssgp_bmax,
- { "Bmax(x 100 or in increments as defined by the Flow Control Granularity IE)", "bssgp.bmax",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_bssgp_r,
- { "R(x 100 or in increments as defined by the Flow Control Granularity IE)", "bssgp.r",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_bssgp_r_pfc,
- { "R_PFC(x 100 or in increments as defined by the Flow Control Granularity IE)", "bssgp.r_pfc",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_bssgp_bucket_size,
- { "Bmax(x 100 or in increments as defined by the Flow Control Granularity IE)", "bssgp.bucket_size",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_bssgp_bmax_pfc,
- { "Bmax_PFC(x 100 or in increments as defined by the Flow Control Granularity IE)", "bssgp.bmax_pfc",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_bssgp_omc_id,
- { "OMC identity", "bssgp.omc_id",
- FT_BYTES, BASE_NONE, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_bssgp_nsei,
- { "NSEI", "bssgp.nsei",
- FT_UINT16, BASE_HEX, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_bssgp_rrlp_flag1,
- { "Flag 1", "bssgp.rrlp_flag1",
- FT_BOOLEAN, 8, TFS(&bssgp_rrlp_flg1_vals), 0x01,
- NULL, HFILL }
- },
- { &hf_bssgp_ci,
- { "CI", "bssgp.ci",
- FT_UINT16, BASE_HEX, NULL, 0x0,
- "Cell Identity", HFILL }
- },
- { &hf_bssgp_flush_action,
- { "Action", "bssgp.ci",
- FT_UINT8, BASE_DEC, VALS(bssgp_flush_action_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_bssgp_llc_frames_disc,
- { "Number of frames discarded", "bssgp.llc_frames_disc",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_bssgp_ra_discriminator,
- { "Routing Address Discriminator", "bssgp.rad",
- FT_UINT8, BASE_DEC, VALS(bssgp_ra_discriminator_vals), 0x0f,
- NULL, HFILL }
- },
- { &hf_bssgp_rim_app_id,
- { "RIM Application Identity", "bssgp.rim_app_id",
- FT_UINT8, BASE_DEC, VALS(bssgp_rim_appid_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_bssgp_rim_seq_no,
- { "RIM Sequence Number", "bssgp.rim_seq_no",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_bssgp_rat_discriminator,
- { "RAT discriminator", "bssgp.rat_discriminator",
- FT_UINT8, BASE_DEC, VALS(bssgp_rat_discriminator_vals), 0x0f,
- NULL, HFILL }
- },
- { &hf_bssgp_nacc_cause,
- { "NACC Cause", "bssgp.nacc_cause",
- FT_UINT8, BASE_DEC, VALS(bssgp_nacc_cause_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_bssgp_s13_cause,
- { "SI3 Cause", "bssgp.s13_cause",
- FT_UINT8, BASE_DEC, VALS(bssgp_s13_cause_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_bssgp_mbms_data_ch_cause,
- { "MBMS data channel Cause", "bssgp.mbms_data_ch_cause",
- FT_UINT8, BASE_DEC, VALS(bssgp_mbms_data_ch_cause_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_bssgp_utra_si_cause,
- { "UTRA SI Cause", "bssgp.utra_si_cause",
- FT_UINT8, BASE_DEC, VALS(bssgp_utra_si_cause_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_bssgp_num_si_psi,
- { "Number of SI/PSI", "bssgp.num_si_psi",
- FT_UINT8, BASE_DEC, NULL, 0xfe,
- NULL, HFILL }
- },
- {&hf_bssgp_si_psi_type,
- { "Type", "bssgp.si_psi_type",
- FT_BOOLEAN, 8, TFS(&bssgp_si_psi_type_vals), 0x01,
- NULL, HFILL }
- },
- { &hf_bssgp_ran_inf_req_pdu_t_ext_c,
- { "PDU Type Extension", "bssgp.ran_inf_req_pdu_t_ext_c",
- FT_UINT8, BASE_DEC, VALS(bssgp_ran_inf_req_pdu_t_ext_c_vals), 0x0e,
- NULL, HFILL }
- },
- { &hf_bssgp_ran_inf_pdu_t_ext_c,
- { "PDU Type Extension", "bssgp.ran_inf_pdu_t_ext_c",
- FT_UINT8, BASE_DEC, VALS(bssgp_ran_inf_pdu_t_ext_c_vals), 0x0e,
- NULL, HFILL }
- },
- {&hf_bssgp_rim_pdu_ind_ack,
- { "ACK", "bssgp.rim_pdu_ind_ack",
- FT_BOOLEAN, 8, TFS(&bssgp_rim_pdu_ind_ack_vals), 0x01,
- NULL, HFILL }
- },
- { &hf_bssgp_rim_proto_ver_no,
- { "RIM Protocol Version Number", "bssgp.rim_proto_ver_no",
- FT_UINT8, BASE_DEC, VALS(bssgp_rim_proto_ver_no_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_bssgp_delay_val,
- { "Delay Value (in centi-seconds)", "bssgp.delay_val",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_bssgp_cause,
- { "Cause", "bssgp.cause",
- FT_UINT8, BASE_DEC|BASE_EXT_STRING, &bssgp_cause_vals_ext, 0x0,
- NULL, HFILL }
- },
- { &hf_bssgp_peak_rate_gran,
- { "Peak Bit Rate Granularity", "bssgp.peak_rate_gran",
- FT_UINT8, BASE_DEC, NULL, 0xc0,
- NULL, HFILL }
- },
- { &hf_bssgp_cr_bit,
- { "C/R", "bssgp.cr_bit",
- FT_BOOLEAN, 8, TFS(&bssgp_cr_bit_vals), 0x20,
- NULL, HFILL }
- },
- { &hf_bssgp_t_bit,
- { "T", "bssgp.t_bit",
- FT_BOOLEAN, 8, TFS(&bssgp_t_bit_vals), 0x10,
- NULL, HFILL }
- },
- { &hf_bssgp_a_bit,
- { "A", "bssgp.a_bit",
- FT_BOOLEAN, 8, TFS(&bssgp_a_bit_vals), 0x08,
- NULL, HFILL }
- },
- { &hf_bssgp_ra_cause,
- { "Radio Cause", "bssgp.ra_cause",
- FT_UINT8, BASE_DEC, VALS(bssgp_radio_cause_vals), 0x00,
- NULL, HFILL }
- },
- { &hf_bssgp_ra_cap_upd_cause,
- { "RA-Cap-UPD Cause", "bssgp.ra_cap_upd_cause",
- FT_UINT8, BASE_DEC, VALS(bssgp_ra_cap_upd_cause_vals), 0x00,
- NULL, HFILL }
- },
- { &hf_bssgp_r_default_ms,
- { "R_default_MS(x 100 or in increments as defined by the Flow Control Granularity IE)", "bssgp.r",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
-
- { &hf_bssgp_suspend_ref_no,
- { "Suspend Reference Number", "bssgp.r_default_ms",
- FT_UINT8, BASE_DEC, NULL, 0x00,
- NULL, HFILL }
- },
- { &hf_bssgp_tag,
- { "Tag", "bssgp.tag",
- FT_UINT8, BASE_DEC, NULL, 0x00,
- NULL, HFILL }
- },
- { &hf_bssgp_trace_ref,
- { "Trace Reference", "bssgp.trace_ref",
- FT_UINT16, BASE_DEC, NULL, 0x00,
- NULL, HFILL }
- },
- { &hf_bssgp_trigger_id,
- { "Entity Identity", "bssgp.entity_id",
- FT_BYTES, BASE_NONE, NULL, 0x00,
- NULL, HFILL }
- },
- { &hf_bssgp_transaction_id,
- { "Transaction Id", "bssgp.transaction_id",
- FT_UINT16, BASE_DEC, NULL, 0x00,
- NULL, HFILL }
- },
- { &hf_bssgp_no_of_oct,
- { "Number of octets transferred or deleted", "bssgp.no_of_oct",
- FT_UINT24, BASE_DEC, NULL, 0x00,
- NULL, HFILL }
- },
- { &hf_bssgp_unit_val,
- { "Unit Value", "bssgp.unit_val",
- FT_UINT8, BASE_DEC, VALS(bssgp_unit_vals), 0xe0,
- NULL, HFILL }
- },
- { &hf_bssgp_gprs_timer,
- { "Unit Value", "bssgp.gprs_timer",
- FT_UINT8, BASE_DEC, NULL, 0x1f,
- NULL, HFILL }
- },
-
- { &hf_bssgp_mbms,
- { "MBMS Procedures", "bssgp.mbms",
- FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x80,
- NULL, HFILL }
- },
- { &hf_bssgp_EnhancedRadioStatus,
- { "Enhanced Radio Status Procedures", "bssgp.enhancedradiostatus",
- FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x40,
- NULL, HFILL }
- },
- { &hf_bssgp_pfcfc,
- { "PFC Flow Control Procedures", "bssgp.pfcfc",
- FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x20,
- NULL, HFILL }
- },
- { &hf_bssgp_rim,
- { "RAN Information Management (RIM) procedures", "bssgp.rim",
- FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x10,
- NULL, HFILL }
- },
- { &hf_bssgp_lcs,
- { "LCS Procedures", "bssgp.lcs",
- FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x08,
- NULL, HFILL }
- },
- { &hf_bssgp_inr,
- { "Inter-NSE re-routing(INR)", "bssgp.inr",
- FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x04,
- NULL, HFILL }
- },
- { &hf_bssgp_cbl,
- { "Current Bucket Level(CBL) Procedures", "bssgp.cbl",
- FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x02,
- NULL, HFILL }
- },
- { &hf_bssgp_pfc,
- { "Packet Flow Context(PFC) Procedures", "bssgp.pfc",
- FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x01,
- NULL, HFILL }
- },
- { &hf_bssgp_bucket_full_ratio,
- { "Ratio of the bucket that is filled up with data", "bssgp.bucket_full_ratio",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- "B current x (100 / Bmax)", HFILL }
- },
- { &hf_bssgp_b_pfc,
- { "B_PFC: Bucket Full Ratio of the PFC", "bssgp.b_pfc",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- "B current x (100 / Bmax)", HFILL }
- },
-
- { &hf_bssgp_precedence,
- { "Precedence", "bssgp.a_bit",
- FT_UINT8, BASE_DEC, NULL, 0x07,
- NULL, HFILL }
- },
- { &hf_bssgp_serv_utran_cco,
- { "Service UTRAN CCO", "bssgp.serv_utran_cco",
- FT_UINT8, BASE_DEC, VALS(bssgp_service_utran_cco_vals), 0x07,
- NULL, HFILL }
- },
- { &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_mbms_stop_cause,
- { "Stop Cause", "bssgp.mbms_stop_cause",
- FT_UINT8, BASE_DEC|BASE_EXT_STRING, &bssgp_mbms_stop_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,
- NULL, HFILL }
- },
- { &hf_bssgp_ps_ho,
- { "PS Handover", "bssgp.ps_ho",
- FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x01,
- NULL, HFILL }
- },
- { &hf_bssgp_src_to_trg_transp_cont,
- { "Source to Target Transparent Container", "bssgp.src_to_trg_transp_cont",
- FT_BYTES, FT_NONE, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_bssgp_trg_to_src_transp_cont,
- { "Target to Source Transparent Container", "bssgp.trg_to_src_transp_cont",
- FT_BYTES, FT_NONE, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_bssgp_rnc_id,
- { "RNC ID", "bssgp.rnc_id",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_bssgp_page_mode,
- { "PAGE_MODE", "bssgp.page_mode",
- FT_UINT8, BASE_DEC, VALS(bssgp_page_mode_vals), 0x03,
- NULL, HFILL }
- },
- { &hf_bssgp_container_id,
- { "Container ID", "bssgp.container_id",
- FT_UINT8, BASE_DEC, NULL, 0x03,
- NULL, HFILL }
- },
- { &hf_bssgp_global_tfi,
- { "Global TFI", "bssgp.global_tfi",
- FT_UINT8, BASE_DEC, VALS(bssgp_global_tfi_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_bssgp_ul_tfi,
- { "UPLINK_TFI", "bssgp.global_tfi",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_bssgp_dl_tfi,
- { "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",
- FT_BYTES, BASE_NONE, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_bssgp_sipsi,
- { "SI/PSI", "bssgp.sipsi",
- FT_BOOLEAN, 8, TFS(&tfs_requested_not_requested), 0x01,
- NULL, HFILL }
- },
- { &hf_bssgp_type,
- { "Type", "bssgp.type",
- FT_UINT8, BASE_DEC, VALS(type_vals), 0x01,
- NULL, HFILL }
- },
- { &hf_bssgp_cs_indication,
- { "CS Indication Contents", "bssgp.cs_indication",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }
- },
-
- { &hf_bssgp_flow_control_gran,
- { "Granularity", "bssgp.flow_control_gran",
- FT_UINT8, BASE_DEC, VALS(bssgp_flow_control_gran_vals), 0x03,
- NULL, HFILL }
- },
- { &hf_bssgp_serv_eutran_cco,
- { "Service EUTRAN CCO", "bssgp.serv_eutran_cco",
- FT_UINT8, BASE_DEC, VALS(bssgp_service_eutran_cco_vals), 0x18,
- NULL, HFILL }
- },
- { &hf_bssgp_sub_prof_id_f_rat_freq_prio,
- { "Subscriber Profile ID for RAT/Frequency priority", "bssgp.sub_prof_id_f_rat_freq_prio",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_bssgp_eutran_irat_ho_inf_req,
- { "E-UTRAN Inter RAT Handover Info", "bssgp.eutran_irat_ho_inf_req",
- FT_BOOLEAN, 8, TFS(&tfs_requested_not_requested), 0x02,
- NULL, HFILL }
- },
- { &hf_bssgp_irat_ho_inf_req,
- { "Inter RAT Handover Info", "bssgp.irat_ho_inf_req",
- FT_BOOLEAN, 8, TFS(&tfs_requested_not_requested), 0x01,
- NULL, HFILL }
- },
-
- { &hf_bssgp_rel_int_rat_ho_inf_ind,
- { "Inter RAT Handover Info", "bssgp.rel_int_rat_ho_inf_ind",
- FT_BOOLEAN, 8, TFS(&tfs_reliable_not_reliable), 0x01,
- NULL, HFILL }
- },
- { &hf_bssgp_csg_id,
- { "CSG Identity (CSG-ID)", "bssgp.csg_id",
- FT_UINT32, BASE_HEX, NULL, 0xffffff0f,
- NULL, HFILL }
- },
- { &hf_bssgp_cell_acc_mode,
- { "Cell Access Mode", "bssgp.cell_acc_mode",
- FT_UINT8, BASE_DEC, VALS(bssgp_cell_access_mode_vals), 0x01,
- NULL, HFILL }
- },
- { &hf_bssgp_Global_ENB_ID_PDU,
- { "Global-ENB-ID", "bssgp.Global_ENB_ID",
- FT_NONE, BASE_NONE, NULL, 0,
- NULL, HFILL }
- },
- { &hf_bssgp_SONtransferRequestContainer_PDU,
- { "SONtransferRequestContainer", "bssgp.SONtransferRequestContainer",
- FT_UINT32, BASE_DEC, VALS(s1ap_SONtransferRequestContainer_vals), 0,
- NULL, HFILL }},
-
- };
-
- /* Setup protocol subtree array */
-#define NUM_INDIVIDUAL_ELEMS 10
- gint *ett[NUM_INDIVIDUAL_ELEMS +
- NUM_BSSGP_ELEM +
- NUM_BSSGP_MSG];
- ett[0] = &ett_bssgp;
+ guint i;
+ guint last_offset;
+
+ static hf_register_info hf[] = {
+ { &hf_bssgp_msg_type,
+ { "PDU Type", "bssgp.pdu_type",
+ FT_UINT8, BASE_HEX|BASE_EXT_STRING, &bssgp_msg_strings_ext, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_elem_id,
+ { "Element ID", "bssgp.elem_id",
+ FT_UINT8, BASE_DEC, NULL, 0,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_bss_area_ind,
+ { "BSS indicator", "bssgp.bss_ind",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_bvci,
+ { "BVCI", "bssgp.bvci",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_bmax,
+ { "Bmax(x 100 or in increments as defined by the Flow Control Granularity IE)", "bssgp.bmax",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_r,
+ { "R(x 100 or in increments as defined by the Flow Control Granularity IE)", "bssgp.r",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_r_pfc,
+ { "R_PFC(x 100 or in increments as defined by the Flow Control Granularity IE)", "bssgp.r_pfc",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_bucket_size,
+ { "Bmax(x 100 or in increments as defined by the Flow Control Granularity IE)", "bssgp.bucket_size",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_bmax_pfc,
+ { "Bmax_PFC(x 100 or in increments as defined by the Flow Control Granularity IE)", "bssgp.bmax_pfc",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_omc_id,
+ { "OMC identity", "bssgp.omc_id",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_nsei,
+ { "NSEI", "bssgp.nsei",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_rrlp_flag1,
+ { "Flag 1", "bssgp.rrlp_flag1",
+ FT_BOOLEAN, 8, TFS(&bssgp_rrlp_flg1_vals), 0x01,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_ci,
+ { "CI", "bssgp.ci",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ "Cell Identity", HFILL }
+ },
+ { &hf_bssgp_flush_action,
+ { "Action", "bssgp.ci",
+ FT_UINT8, BASE_DEC, VALS(bssgp_flush_action_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_llc_frames_disc,
+ { "Number of frames discarded", "bssgp.llc_frames_disc",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_ra_discriminator,
+ { "Routing Address Discriminator", "bssgp.rad",
+ FT_UINT8, BASE_DEC, VALS(bssgp_ra_discriminator_vals), 0x0f,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_rim_app_id,
+ { "RIM Application Identity", "bssgp.rim_app_id",
+ FT_UINT8, BASE_DEC, VALS(bssgp_rim_appid_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_rim_seq_no,
+ { "RIM Sequence Number", "bssgp.rim_seq_no",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_rat_discriminator,
+ { "RAT discriminator", "bssgp.rat_discriminator",
+ FT_UINT8, BASE_DEC, VALS(bssgp_rat_discriminator_vals), 0x0f,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_nacc_cause,
+ { "NACC Cause", "bssgp.nacc_cause",
+ FT_UINT8, BASE_DEC, VALS(bssgp_nacc_cause_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_s13_cause,
+ { "SI3 Cause", "bssgp.s13_cause",
+ FT_UINT8, BASE_DEC, VALS(bssgp_s13_cause_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_mbms_data_ch_cause,
+ { "MBMS data channel Cause", "bssgp.mbms_data_ch_cause",
+ FT_UINT8, BASE_DEC, VALS(bssgp_mbms_data_ch_cause_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_utra_si_cause,
+ { "UTRA SI Cause", "bssgp.utra_si_cause",
+ FT_UINT8, BASE_DEC, VALS(bssgp_utra_si_cause_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_num_si_psi,
+ { "Number of SI/PSI", "bssgp.num_si_psi",
+ FT_UINT8, BASE_DEC, NULL, 0xfe,
+ NULL, HFILL }
+ },
+ {&hf_bssgp_si_psi_type,
+ { "Type", "bssgp.si_psi_type",
+ FT_BOOLEAN, 8, TFS(&bssgp_si_psi_type_vals), 0x01,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_ran_inf_req_pdu_t_ext_c,
+ { "PDU Type Extension", "bssgp.ran_inf_req_pdu_t_ext_c",
+ FT_UINT8, BASE_DEC, VALS(bssgp_ran_inf_req_pdu_t_ext_c_vals), 0x0e,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_ran_inf_pdu_t_ext_c,
+ { "PDU Type Extension", "bssgp.ran_inf_pdu_t_ext_c",
+ FT_UINT8, BASE_DEC, VALS(bssgp_ran_inf_pdu_t_ext_c_vals), 0x0e,
+ NULL, HFILL }
+ },
+ {&hf_bssgp_rim_pdu_ind_ack,
+ { "ACK", "bssgp.rim_pdu_ind_ack",
+ FT_BOOLEAN, 8, TFS(&bssgp_rim_pdu_ind_ack_vals), 0x01,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_rim_proto_ver_no,
+ { "RIM Protocol Version Number", "bssgp.rim_proto_ver_no",
+ FT_UINT8, BASE_DEC, VALS(bssgp_rim_proto_ver_no_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_delay_val,
+ { "Delay Value (in centi-seconds)", "bssgp.delay_val",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_cause,
+ { "Cause", "bssgp.cause",
+ FT_UINT8, BASE_DEC|BASE_EXT_STRING, &bssgp_cause_vals_ext, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_peak_rate_gran,
+ { "Peak Bit Rate Granularity", "bssgp.peak_rate_gran",
+ FT_UINT8, BASE_DEC, NULL, 0xc0,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_cr_bit,
+ { "C/R", "bssgp.cr_bit",
+ FT_BOOLEAN, 8, TFS(&bssgp_cr_bit_vals), 0x20,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_t_bit,
+ { "T", "bssgp.t_bit",
+ FT_BOOLEAN, 8, TFS(&bssgp_t_bit_vals), 0x10,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_a_bit,
+ { "A", "bssgp.a_bit",
+ FT_BOOLEAN, 8, TFS(&bssgp_a_bit_vals), 0x08,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_ra_cause,
+ { "Radio Cause", "bssgp.ra_cause",
+ FT_UINT8, BASE_DEC, VALS(bssgp_radio_cause_vals), 0x00,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_ra_cap_upd_cause,
+ { "RA-Cap-UPD Cause", "bssgp.ra_cap_upd_cause",
+ FT_UINT8, BASE_DEC, VALS(bssgp_ra_cap_upd_cause_vals), 0x00,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_r_default_ms,
+ { "R_default_MS(x 100 or in increments as defined by the Flow Control Granularity IE)", "bssgp.r",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+
+ { &hf_bssgp_suspend_ref_no,
+ { "Suspend Reference Number", "bssgp.r_default_ms",
+ FT_UINT8, BASE_DEC, NULL, 0x00,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_tag,
+ { "Tag", "bssgp.tag",
+ FT_UINT8, BASE_DEC, NULL, 0x00,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_trace_ref,
+ { "Trace Reference", "bssgp.trace_ref",
+ FT_UINT16, BASE_DEC, NULL, 0x00,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_trigger_id,
+ { "Entity Identity", "bssgp.entity_id",
+ FT_BYTES, BASE_NONE, NULL, 0x00,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_transaction_id,
+ { "Transaction Id", "bssgp.transaction_id",
+ FT_UINT16, BASE_DEC, NULL, 0x00,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_no_of_oct,
+ { "Number of octets transferred or deleted", "bssgp.no_of_oct",
+ FT_UINT24, BASE_DEC, NULL, 0x00,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_unit_val,
+ { "Unit Value", "bssgp.unit_val",
+ FT_UINT8, BASE_DEC, VALS(bssgp_unit_vals), 0xe0,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_gprs_timer,
+ { "Unit Value", "bssgp.gprs_timer",
+ FT_UINT8, BASE_DEC, NULL, 0x1f,
+ NULL, HFILL }
+ },
+
+ { &hf_bssgp_mbms,
+ { "MBMS Procedures", "bssgp.mbms",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x80,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_EnhancedRadioStatus,
+ { "Enhanced Radio Status Procedures", "bssgp.enhancedradiostatus",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x40,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_pfcfc,
+ { "PFC Flow Control Procedures", "bssgp.pfcfc",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x20,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_rim,
+ { "RAN Information Management (RIM) procedures", "bssgp.rim",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x10,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_lcs,
+ { "LCS Procedures", "bssgp.lcs",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x08,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_inr,
+ { "Inter-NSE re-routing(INR)", "bssgp.inr",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x04,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_cbl,
+ { "Current Bucket Level(CBL) Procedures", "bssgp.cbl",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x02,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_pfc,
+ { "Packet Flow Context(PFC) Procedures", "bssgp.pfc",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x01,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_bucket_full_ratio,
+ { "Ratio of the bucket that is filled up with data", "bssgp.bucket_full_ratio",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "B current x (100 / Bmax)", HFILL }
+ },
+ { &hf_bssgp_b_pfc,
+ { "B_PFC: Bucket Full Ratio of the PFC", "bssgp.b_pfc",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "B current x (100 / Bmax)", HFILL }
+ },
+
+ { &hf_bssgp_precedence,
+ { "Precedence", "bssgp.a_bit",
+ FT_UINT8, BASE_DEC, NULL, 0x07,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_serv_utran_cco,
+ { "Service UTRAN CCO", "bssgp.serv_utran_cco",
+ FT_UINT8, BASE_DEC, VALS(bssgp_service_utran_cco_vals), 0x07,
+ NULL, HFILL }
+ },
+ { &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_mbms_stop_cause,
+ { "Stop Cause", "bssgp.mbms_stop_cause",
+ FT_UINT8, BASE_DEC|BASE_EXT_STRING, &bssgp_mbms_stop_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,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_ps_ho,
+ { "PS Handover", "bssgp.ps_ho",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x01,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_src_to_trg_transp_cont,
+ { "Source to Target Transparent Container", "bssgp.src_to_trg_transp_cont",
+ FT_BYTES, FT_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_trg_to_src_transp_cont,
+ { "Target to Source Transparent Container", "bssgp.trg_to_src_transp_cont",
+ FT_BYTES, FT_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_rnc_id,
+ { "RNC ID", "bssgp.rnc_id",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_page_mode,
+ { "PAGE_MODE", "bssgp.page_mode",
+ FT_UINT8, BASE_DEC, VALS(bssgp_page_mode_vals), 0x03,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_container_id,
+ { "Container ID", "bssgp.container_id",
+ FT_UINT8, BASE_DEC, NULL, 0x03,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_global_tfi,
+ { "Global TFI", "bssgp.global_tfi",
+ FT_UINT8, BASE_DEC, VALS(bssgp_global_tfi_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_ul_tfi,
+ { "UPLINK_TFI", "bssgp.global_tfi",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_dl_tfi,
+ { "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",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_sipsi,
+ { "SI/PSI", "bssgp.sipsi",
+ FT_BOOLEAN, 8, TFS(&tfs_requested_not_requested), 0x01,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_type,
+ { "Type", "bssgp.type",
+ FT_UINT8, BASE_DEC, VALS(type_vals), 0x01,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_cs_indication,
+ { "CS Indication Contents", "bssgp.cs_indication",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+
+ { &hf_bssgp_flow_control_gran,
+ { "Granularity", "bssgp.flow_control_gran",
+ FT_UINT8, BASE_DEC, VALS(bssgp_flow_control_gran_vals), 0x03,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_serv_eutran_cco,
+ { "Service EUTRAN CCO", "bssgp.serv_eutran_cco",
+ FT_UINT8, BASE_DEC, VALS(bssgp_service_eutran_cco_vals), 0x18,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_sub_prof_id_f_rat_freq_prio,
+ { "Subscriber Profile ID for RAT/Frequency priority", "bssgp.sub_prof_id_f_rat_freq_prio",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_eutran_irat_ho_inf_req,
+ { "E-UTRAN Inter RAT Handover Info", "bssgp.eutran_irat_ho_inf_req",
+ FT_BOOLEAN, 8, TFS(&tfs_requested_not_requested), 0x02,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_irat_ho_inf_req,
+ { "Inter RAT Handover Info", "bssgp.irat_ho_inf_req",
+ FT_BOOLEAN, 8, TFS(&tfs_requested_not_requested), 0x01,
+ NULL, HFILL }
+ },
+
+ { &hf_bssgp_rel_int_rat_ho_inf_ind,
+ { "Inter RAT Handover Info", "bssgp.rel_int_rat_ho_inf_ind",
+ FT_BOOLEAN, 8, TFS(&tfs_reliable_not_reliable), 0x01,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_csg_id,
+ { "CSG Identity (CSG-ID)", "bssgp.csg_id",
+ FT_UINT32, BASE_HEX, NULL, 0xffffff0f,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_cell_acc_mode,
+ { "Cell Access Mode", "bssgp.cell_acc_mode",
+ FT_UINT8, BASE_DEC, VALS(bssgp_cell_access_mode_vals), 0x01,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_Global_ENB_ID_PDU,
+ { "Global-ENB-ID", "bssgp.Global_ENB_ID",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }
+ },
+ { &hf_bssgp_SONtransferRequestContainer_PDU,
+ { "SONtransferRequestContainer", "bssgp.SONtransferRequestContainer",
+ FT_UINT32, BASE_DEC, VALS(s1ap_SONtransferRequestContainer_vals), 0,
+ NULL, HFILL }},
+
+ };
+
+ /* Setup protocol subtree array */
+#define NUM_INDIVIDUAL_ELEMS 10
+ gint *ett[NUM_INDIVIDUAL_ELEMS +
+ NUM_BSSGP_ELEM +
+ NUM_BSSGP_MSG];
+ ett[0] = &ett_bssgp;
ett[1] = &ett_bssgp_list_of_setup_pfcs;
ett[2] = &ett_bssgp_pfcs_to_be_set_up_list_t10;
ett[3] = &ett_bssgp_pfcs_to_be_set_up_list_arp;
@@ -6765,39 +6772,39 @@ 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,
+ ett[9] = &ett_bssgp_ra_id,
- last_offset = NUM_INDIVIDUAL_ELEMS;
+ last_offset = NUM_INDIVIDUAL_ELEMS;
- for (i=0; i < NUM_BSSGP_ELEM; i++, last_offset++)
- {
- ett_bssgp_elem[i] = -1;
- ett[last_offset] = &ett_bssgp_elem[i];
- }
+ for (i=0; i < NUM_BSSGP_ELEM; i++, last_offset++)
+ {
+ ett_bssgp_elem[i] = -1;
+ ett[last_offset] = &ett_bssgp_elem[i];
+ }
- for (i=0; i < NUM_BSSGP_MSG; i++, last_offset++)
- {
- ett_bssgp_msg[i] = -1;
- ett[last_offset] = &ett_bssgp_msg[i];
- }
+ for (i=0; i < NUM_BSSGP_MSG; i++, last_offset++)
+ {
+ ett_bssgp_msg[i] = -1;
+ ett[last_offset] = &ett_bssgp_msg[i];
+ }
- /* Register the protocol name and description */
- proto_bssgp = proto_register_protocol("Base Station Subsystem GPRS Protocol", "BSSGP", "bssgp");
+ /* Register the protocol name and description */
+ proto_bssgp = proto_register_protocol("Base Station Subsystem GPRS Protocol", "BSSGP", "bssgp");
- /* 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));
- register_dissector("bssgp", dissect_bssgp, proto_bssgp);
+ /* 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));
+ register_dissector("bssgp", dissect_bssgp, proto_bssgp);
- /* Register configuration options */
- bssgp_module = prefs_register_protocol(proto_bssgp, NULL);
- prefs_register_bool_preference(bssgp_module, "decode_nri",
- "Decode NRI",
- "Decode NRI (for use with SGSN in Pool)",
- &bssgp_decode_nri);
- prefs_register_uint_preference(bssgp_module, "nri_length", "NRI length",
- "NRI length, in bits",
- 10, &bssgp_nri_length);
+ /* Register configuration options */
+ bssgp_module = prefs_register_protocol(proto_bssgp, NULL);
+ prefs_register_bool_preference(bssgp_module, "decode_nri",
+ "Decode NRI",
+ "Decode NRI (for use with SGSN in Pool)",
+ &bssgp_decode_nri);
+ prefs_register_uint_preference(bssgp_module, "nri_length", "NRI length",
+ "NRI length, in bits",
+ 10, &bssgp_nri_length);
}
/* If this dissector uses sub-dissector registration add a registration routine.
@@ -6805,9 +6812,9 @@ proto_register_bssgp(void)
void
proto_reg_handoff_bssgp(void)
{
- llc_handle = find_dissector("llcgprs");
- rrlp_handle = find_dissector("rrlp");
- data_handle = find_dissector("data");
+ 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");
+ diameter_3gpp_avp_dissector_table = find_dissector_table("diameter.3gpp");
}
diff --git a/epan/dissectors/packet-collectd.c b/epan/dissectors/packet-collectd.c
index 741e79d49a..ddbf3499d7 100644
--- a/epan/dissectors/packet-collectd.c
+++ b/epan/dissectors/packet-collectd.c
@@ -307,7 +307,7 @@ dissect_collectd_string (tvbuff_t *tvb, packet_info *pinfo, gint type_hf,
pt = proto_item_add_subtree (pi, ett_collectd_string);
proto_tree_add_uint (pt, hf_collectd_type, tvb, offset, 2, type);
proto_tree_add_uint (pt, hf_collectd_length, tvb, offset + 2, 2, length);
- proto_tree_add_item (pt, type_hf, tvb, *ret_offset, *ret_length, FALSE);
+ proto_tree_add_item (pt, type_hf, tvb, *ret_offset, *ret_length, ENC_ASCII|ENC_NA);
return (0);
} /* int dissect_collectd_string */
@@ -385,7 +385,7 @@ dissect_collectd_integer (tvbuff_t *tvb, packet_info *pinfo, gint type_hf,
proto_tree_add_uint (pt, hf_collectd_type, tvb, offset, 2, type);
proto_tree_add_uint (pt, hf_collectd_length, tvb, offset + 2, 2,
length);
- proto_tree_add_item (pt, type_hf, tvb, offset + 4, 8, FALSE);
+ proto_tree_add_item (pt, type_hf, tvb, offset + 4, 8, ENC_BIG_ENDIAN);
return (0);
} /* int dissect_collectd_integer */
diff --git a/epan/dissectors/packet-diffserv-mpls-common.c b/epan/dissectors/packet-diffserv-mpls-common.c
index d1907a3a74..c75a165f52 100644
--- a/epan/dissectors/packet-diffserv-mpls-common.c
+++ b/epan/dissectors/packet-diffserv-mpls-common.c
@@ -12,12 +12,12 @@
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
@@ -61,8 +61,8 @@ const value_string phbid_bit15_vals[] = {
};
void
-dissect_diffserv_mpls_common(tvbuff_t *tvb, proto_tree *tree, int type,
- int offset, int **hfindexes, gint **etts)
+dissect_diffserv_mpls_common(tvbuff_t *tvb, proto_tree *tree, int type,
+ int offset, int **hfindexes, gint **etts)
{
proto_item *ti = NULL, *sub_ti;
proto_tree *tree2 = NULL, *phbid_subtree;
@@ -71,43 +71,43 @@ dissect_diffserv_mpls_common(tvbuff_t *tvb, proto_tree *tree, int type,
switch (type) {
case 1: /* E-LSP */
- ti = proto_tree_add_item(tree, hf_map, tvb, offset, 4, FALSE);
- tree2 = proto_item_add_subtree(ti, ett_map);
- proto_item_set_text(ti, "MAP: ");
- offset ++;
- exp = tvb_get_guint8(tvb, offset) & 7;
- proto_tree_add_uint(tree2, hf_exp, tvb, offset, 1, exp);
- proto_item_append_text(ti, "EXP %u, ", exp);
- offset ++;
- break;
+ ti = proto_tree_add_item(tree, hf_map, tvb, offset, 4, ENC_NA);
+ tree2 = proto_item_add_subtree(ti, ett_map);
+ proto_item_set_text(ti, "MAP: ");
+ offset ++;
+ exp = tvb_get_guint8(tvb, offset) & 7;
+ proto_tree_add_uint(tree2, hf_exp, tvb, offset, 1, exp);
+ proto_item_append_text(ti, "EXP %u, ", exp);
+ offset ++;
+ break;
case 2: /* L-LSP */
- tree2 = tree;
- break;
+ tree2 = tree;
+ break;
default:
- return;
+ return;
}
/* PHBID subtree */
- sub_ti = proto_tree_add_item(tree2, hf_phbid, tvb, offset, 2, FALSE);
+ sub_ti = proto_tree_add_item(tree2, hf_phbid, tvb, offset, 2, ENC_NA);
phbid_subtree = proto_item_add_subtree(sub_ti, ett_map_phbid);
proto_item_set_text(sub_ti, "%s: ", (type == 1) ? PHBID_DESCRIPTION : "PSC");
phbid = tvb_get_ntohs(tvb, offset);
if ((phbid & 1) == 0) {
- /* Case 1 of RFC 3140 */
- proto_tree_add_uint(phbid_subtree, hf_phbid_dscp,
- tvb, offset, 2, phbid);
- if (type == 1)
- proto_item_append_text(ti, "DSCP %u", phbid >> 10);
- proto_item_append_text(sub_ti, "DSCP %u", phbid >> 10);
+ /* Case 1 of RFC 3140 */
+ proto_tree_add_uint(phbid_subtree, hf_phbid_dscp,
+ tvb, offset, 2, phbid);
+ if (type == 1)
+ proto_item_append_text(ti, "DSCP %u", phbid >> 10);
+ proto_item_append_text(sub_ti, "DSCP %u", phbid >> 10);
}
else {
- /* Case 2 of RFC 3140 */
- proto_tree_add_uint(phbid_subtree, hf_phbid_code,
- tvb, offset, 2, phbid);
- if (type == 1)
- proto_item_append_text(ti, "PHB id code %u", phbid >> 4);
- proto_item_append_text(sub_ti, "PHB id code %u", phbid >> 4);
+ /* Case 2 of RFC 3140 */
+ proto_tree_add_uint(phbid_subtree, hf_phbid_code,
+ tvb, offset, 2, phbid);
+ if (type == 1)
+ proto_item_append_text(ti, "PHB id code %u", phbid >> 4);
+ proto_item_append_text(sub_ti, "PHB id code %u", phbid >> 4);
}
proto_tree_add_uint(phbid_subtree, hf_phbid_bit14, tvb, offset, 2, phbid);
proto_tree_add_uint(phbid_subtree, hf_phbid_bit15, tvb, offset, 2, phbid);
diff --git a/epan/dissectors/packet-dis-fields.c b/epan/dissectors/packet-dis-fields.c
index 6c7ba4b7e7..8cb40843b3 100644
--- a/epan/dissectors/packet-dis-fields.c
+++ b/epan/dissectors/packet-dis-fields.c
@@ -823,10 +823,10 @@ gint parseField_Enum(tvbuff_t *tvb, proto_tree *tree, gint offset, DIS_ParserNod
if (dis_hf_id != -1) {
#if 0
- pi = proto_tree_add_item(tree, dis_hf_id, tvb, offset, numBytes, FALSE);
+ pi = proto_tree_add_item(tree, dis_hf_id, tvb, offset, numBytes, ENC_BIG_ENDIAN);
proto_item_set_text(pi, "%s = %s", parserNode.fieldLabel, enumStr);
#else
- proto_tree_add_item(tree, dis_hf_id, tvb, offset, numBytes, FALSE);
+ proto_tree_add_item(tree, dis_hf_id, tvb, offset, numBytes, ENC_BIG_ENDIAN);
#endif
}
else {
diff --git a/epan/dissectors/packet-h248_3gpp.c b/epan/dissectors/packet-h248_3gpp.c
index 4b90a2be40..8d22b9ec34 100644
--- a/epan/dissectors/packet-h248_3gpp.c
+++ b/epan/dissectors/packet-h248_3gpp.c
@@ -303,7 +303,7 @@ static void dissect_3GTFO_codec_mode(proto_tree* tree, tvbuff_t* tvb, packet_inf
dissect_codec_mode(pt, sub_tvb, 0, tvb_length(tvb));
}
} else {
- proto_tree_add_item(tree,hfid,tvb,0,-1,FALSE);
+ proto_tree_add_item(tree,hfid,tvb,0,-1,ENC_NA);
}
}
@@ -331,7 +331,7 @@ static void dissect_3GTFO_codec_list(proto_tree* tree, tvbuff_t* tvb, packet_inf
} while(offset < len);
}
} else {
- proto_tree_add_item(tree,hfid,tvb,0,-1,FALSE);
+ proto_tree_add_item(tree,hfid,tvb,0,-1,ENC_NA);
}
}
diff --git a/epan/dissectors/packet-isis-clv.c b/epan/dissectors/packet-isis-clv.c
index 0872cf0884..9d32631033 100644
--- a/epan/dissectors/packet-isis-clv.c
+++ b/epan/dissectors/packet-isis-clv.c
@@ -343,7 +343,7 @@ isis_dissect_ip_int_clv(tvbuff_t *tvb, proto_tree *tree, int offset,
}
if ( tree ) {
- proto_tree_add_item(tree, tree_id, tvb, offset, 4, FALSE);
+ proto_tree_add_item(tree, tree_id, tvb, offset, 4, ENC_BIG_ENDIAN);
}
offset += 4;
length -= 4;
@@ -427,7 +427,7 @@ isis_dissect_te_router_id_clv(tvbuff_t *tvb, proto_tree *tree, int offset,
return;
}
if ( tree ) {
- proto_tree_add_item(tree, tree_id, tvb, offset, 4, FALSE);
+ proto_tree_add_item(tree, tree_id, tvb, offset, 4, ENC_BIG_ENDIAN);
}
}
diff --git a/epan/dissectors/packet-pop.c b/epan/dissectors/packet-pop.c
index 1e5c5e7cf5..22897e1efb 100644
--- a/epan/dissectors/packet-pop.c
+++ b/epan/dissectors/packet-pop.c
@@ -275,7 +275,7 @@ dissect_pop(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
(is_request) ?
hf_pop_request_command :
hf_pop_response_indicator,
- tvb, offset, tokenlen, FALSE);
+ tvb, offset, tokenlen, ENC_ASCII|ENC_NA);
if (data_val) {
if (is_request) {
@@ -313,7 +313,7 @@ dissect_pop(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
(is_request) ?
hf_pop_request_parameter :
hf_pop_response_description,
- tvb, offset, linelen, FALSE);
+ tvb, offset, linelen, ENC_ASCII|ENC_NA);
}
offset = next_offset;
diff --git a/epan/dissectors/packet-radius_packetcable.c b/epan/dissectors/packet-radius_packetcable.c
index df2affe126..eb4e5de75c 100644
--- a/epan/dissectors/packet-radius_packetcable.c
+++ b/epan/dissectors/packet-radius_packetcable.c
@@ -329,7 +329,7 @@ static const gchar* dissect_packetcable_qos_descriptor(proto_tree* tree, tvbuff_
proto_tree_add_item(obj_tree, hf_packetcable_qos_status_indication, tvb, 0, 4, ENC_BIG_ENDIAN);
for (intval = 0; intval < PACKETCABLE_QOS_DESC_BITFIELDS; intval++) {
- proto_tree_add_item(obj_tree, hf_packetcable_qos_desc_flags[intval], tvb, 0, 4, FALSE);
+ proto_tree_add_item(obj_tree, hf_packetcable_qos_desc_flags[intval], tvb, 0, 4, ENC_BIG_ENDIAN);
}
tvb_memcpy(tvb, packetcable_buf, 4, 16);
@@ -340,7 +340,7 @@ static const gchar* dissect_packetcable_qos_descriptor(proto_tree* tree, tvbuff_
for (intval = 0; intval < PACKETCABLE_QOS_DESC_BITFIELDS; intval++) {
if (packetcable_qos_flags & packetcable_qos_desc_mask[intval]) {
proto_tree_add_item(tree, hf_packetcable_qos_desc_fields[intval],
- tvb, packetcable_qos_off, 4, FALSE);
+ tvb, packetcable_qos_off, 4, ENC_BIG_ENDIAN);
packetcable_qos_off += 4;
}
}
diff --git a/epan/dissectors/packet-rtcp.c b/epan/dissectors/packet-rtcp.c
index a197f7058d..0f9691929f 100644
--- a/epan/dissectors/packet-rtcp.c
+++ b/epan/dissectors/packet-rtcp.c
@@ -83,14 +83,14 @@
#include <epan/strutil.h>
/* Version is the first 2 bits of the first octet*/
-#define RTCP_VERSION(octet) ((octet) >> 6)
+#define RTCP_VERSION(octet) ((octet) >> 6)
/* Padding is the third bit; no need to shift, because true is any value
other than 0! */
-#define RTCP_PADDING(octet) ((octet) & 0x20)
+#define RTCP_PADDING(octet) ((octet) & 0x20)
/* Receiver/ Sender count is the 5 last bits */
-#define RTCP_COUNT(octet) ((octet) & 0x1F)
+#define RTCP_COUNT(octet) ((octet) & 0x1F)
static dissector_handle_t rtcp_handle;
@@ -99,10 +99,10 @@ static dissector_table_t rtcp_dissector_table;
static const value_string rtcp_version_vals[] =
{
- { 2, "RFC 1889 Version" },
- { 0, "Old VAT Version" },
- { 1, "First Draft Version" },
- { 0, NULL },
+ { 2, "RFC 1889 Version" },
+ { 0, "Old VAT Version" },
+ { 1, "First Draft Version" },
+ { 0, NULL },
};
/* RTCP packet types according to Section A.11.1 */
@@ -125,21 +125,21 @@ static const value_string rtcp_version_vals[] =
static const value_string rtcp_packet_type_vals[] =
{
- { RTCP_SR, "Sender Report" },
- { RTCP_RR, "Receiver Report" },
- { RTCP_SDES, "Source description" },
- { RTCP_BYE, "Goodbye" },
- { RTCP_APP, "Application specific" },
- { RTCP_RTPFB,"Generic RTP Feedback" },
- { RTCP_PSFB, "Payload-specific" },
- { RTCP_XR, "Extended report (RFC 3611)"},
- { RTCP_AVB, "AVB RTCP packet (IEEE1733)" },
- { RTCP_RSI, "Receiver Summary Information" },
- { RTCP_FIR, "Full Intra-frame Request (H.261)" },
- { RTCP_NACK, "Negative Acknowledgement (H.261)" },
- { RTCP_SMPTETC, "SMPTE time-code mapping" },
- { RTCP_IJ, "Extended inter-arrival jitter report" },
- { 0, NULL }
+ { RTCP_SR, "Sender Report" },
+ { RTCP_RR, "Receiver Report" },
+ { RTCP_SDES, "Source description" },
+ { RTCP_BYE, "Goodbye" },
+ { RTCP_APP, "Application specific" },
+ { RTCP_RTPFB,"Generic RTP Feedback" },
+ { RTCP_PSFB, "Payload-specific" },
+ { RTCP_XR, "Extended report (RFC 3611)"},
+ { RTCP_AVB, "AVB RTCP packet (IEEE1733)" },
+ { RTCP_RSI, "Receiver Summary Information" },
+ { RTCP_FIR, "Full Intra-frame Request (H.261)" },
+ { RTCP_NACK, "Negative Acknowledgement (H.261)" },
+ { RTCP_SMPTETC, "SMPTE time-code mapping" },
+ { RTCP_IJ, "Extended inter-arrival jitter report" },
+ { 0, NULL }
};
/* RTCP SDES types (Section A.11.2) */
@@ -156,17 +156,17 @@ static const value_string rtcp_packet_type_vals[] =
static const value_string rtcp_sdes_type_vals[] =
{
- { RTCP_SDES_END, "END" },
- { RTCP_SDES_CNAME, "CNAME (user and domain)" },
- { RTCP_SDES_NAME, "NAME (common name)" },
- { RTCP_SDES_EMAIL, "EMAIL (e-mail address)" },
- { RTCP_SDES_PHONE, "PHONE (phone number)" },
- { RTCP_SDES_LOC, "LOC (geographic location)" },
- { RTCP_SDES_TOOL, "TOOL (name/version of source app)" },
- { RTCP_SDES_NOTE, "NOTE (note about source)" },
- { RTCP_SDES_PRIV, "PRIV (private extensions)" },
- { RTCP_SDES_H323_CADDR,"H323-CADDR (H.323 callable address)"},
- { 0, NULL }
+ { RTCP_SDES_END, "END" },
+ { RTCP_SDES_CNAME, "CNAME (user and domain)" },
+ { RTCP_SDES_NAME, "NAME (common name)" },
+ { RTCP_SDES_EMAIL, "EMAIL (e-mail address)" },
+ { RTCP_SDES_PHONE, "PHONE (phone number)" },
+ { RTCP_SDES_LOC, "LOC (geographic location)" },
+ { RTCP_SDES_TOOL, "TOOL (name/version of source app)" },
+ { RTCP_SDES_NOTE, "NOTE (note about source)" },
+ { RTCP_SDES_PRIV, "PRIV (private extensions)" },
+ { RTCP_SDES_H323_CADDR,"H323-CADDR (H.323 callable address)"},
+ { 0, NULL }
};
/* RTCP XR Blocks (Section 4, RTC 3611)
@@ -182,91 +182,91 @@ static const value_string rtcp_sdes_type_vals[] =
#define RTCP_XR_TI_VOIP 9
#define RTCP_XR_PR_LOSS_RLE 10
#define RTCP_XR_MC_ACQ 11
-#define RTCP_XR_IDMS 12
+#define RTCP_XR_IDMS 12
static const value_string rtcp_xr_type_vals[] =
{
- { RTCP_XR_LOSS_RLE, "Loss Run Length Encoding Report Block" },
- { RTCP_XR_DUP_RLE, "Duplicate Run Length Encoding Report Block" },
- { RTCP_XR_PKT_RXTIMES, "Packet Receipt Times Report Block" },
- { RTCP_XR_REF_TIME, "Receiver Reference Time Report Block" },
- { RTCP_XR_DLRR, "DLRR Report Block" },
- { RTCP_XR_STATS_SUMRY, "Statistics Summary Report Block" },
- { RTCP_XR_VOIP_METRCS, "VoIP Metrics Report Block" },
- { RTCP_XR_BT_XNQ, "BT XNQ RTCP XR (RFC5093) Report Block" },
- { RTCP_XR_TI_VOIP, "Texas Instruments Extended VoIP Quality Block" },
- { RTCP_XR_PR_LOSS_RLE, "Post-repair Loss RLE Report Block" },
- { RTCP_XR_MC_ACQ, "Multicast Acquisition Report Block" },
- { RTCP_XR_IDMS, "Inter-destination Media Synchronization Block" }, /* [http://www.etsi.org/deliver/etsi_ts/183000_183099/183063/][ETSI 183 063][Miguel_Angel_Reina_Ortega] */
- { 0, NULL}
+ { RTCP_XR_LOSS_RLE, "Loss Run Length Encoding Report Block" },
+ { RTCP_XR_DUP_RLE, "Duplicate Run Length Encoding Report Block" },
+ { RTCP_XR_PKT_RXTIMES, "Packet Receipt Times Report Block" },
+ { RTCP_XR_REF_TIME, "Receiver Reference Time Report Block" },
+ { RTCP_XR_DLRR, "DLRR Report Block" },
+ { RTCP_XR_STATS_SUMRY, "Statistics Summary Report Block" },
+ { RTCP_XR_VOIP_METRCS, "VoIP Metrics Report Block" },
+ { RTCP_XR_BT_XNQ, "BT XNQ RTCP XR (RFC5093) Report Block" },
+ { RTCP_XR_TI_VOIP, "Texas Instruments Extended VoIP Quality Block" },
+ { RTCP_XR_PR_LOSS_RLE, "Post-repair Loss RLE Report Block" },
+ { RTCP_XR_MC_ACQ, "Multicast Acquisition Report Block" },
+ { RTCP_XR_IDMS, "Inter-destination Media Synchronization Block" }, /* [http://www.etsi.org/deliver/etsi_ts/183000_183099/183063/][ETSI 183 063][Miguel_Angel_Reina_Ortega] */
+ { 0, NULL}
};
/* XR VoIP Metrics Block - PLC Algorithms */
static const value_string rtcp_xr_plc_algo_vals[] =
{
- { 0, "Unspecified" },
- { 1, "Disabled" },
- { 2, "Enhanced" },
- { 3, "Standard" },
- { 0, NULL }
+ { 0, "Unspecified" },
+ { 1, "Disabled" },
+ { 2, "Enhanced" },
+ { 3, "Standard" },
+ { 0, NULL }
};
/* XR VoIP Metrics Block - JB Adaptive */
static const value_string rtcp_xr_jb_adaptive_vals[] =
{
- { 0, "Unknown" },
- { 1, "Reserved" },
- { 2, "Non-Adaptive" },
- { 3, "Adaptive" },
- { 0, NULL }
+ { 0, "Unknown" },
+ { 1, "Reserved" },
+ { 2, "Non-Adaptive" },
+ { 3, "Adaptive" },
+ { 0, NULL }
};
/* XR Stats Summary Block - IP TTL or Hop Limit */
static const value_string rtcp_xr_ip_ttl_vals[] =
{
- { 0, "No TTL Values" },
- { 1, "IPv4" },
- { 2, "IPv6" },
- { 3, "Undefined" },
- { 0, NULL }
+ { 0, "No TTL Values" },
+ { 1, "IPv4" },
+ { 2, "IPv6" },
+ { 3, "Undefined" },
+ { 0, NULL }
};
/* XR IDMS synchronization packet sender type */
static const value_string rtcp_xr_idms_spst[] =
{
- { 0, "Reserved" },
- { 1, "SC" },
- { 2, "MSAS" },
- { 3, "SC' INPUT" },
- { 4, "SC' OUTPUT" },
- { 5, "Reserved" },
- { 6, "Reserved" },
- { 7, "Reserved" },
- { 8, "Reserved" },
- { 9, "Reserved" },
- { 10, "Reserved" },
- { 11, "Reserved" },
- { 12, "Reserved" },
- { 13, "Reserved" },
- { 14, "Reserved" },
- { 15, "Reserved" },
- { 0, NULL }
+ { 0, "Reserved" },
+ { 1, "SC" },
+ { 2, "MSAS" },
+ { 3, "SC' INPUT" },
+ { 4, "SC' OUTPUT" },
+ { 5, "Reserved" },
+ { 6, "Reserved" },
+ { 7, "Reserved" },
+ { 8, "Reserved" },
+ { 9, "Reserved" },
+ { 10, "Reserved" },
+ { 11, "Reserved" },
+ { 12, "Reserved" },
+ { 13, "Reserved" },
+ { 14, "Reserved" },
+ { 15, "Reserved" },
+ { 0, NULL }
};
/* RTCP Application PoC1 Value strings
* OMA-TS-PoC-UserPlane-V1_0-20060609-A
*/
-#define TBCP_BURST_REQUEST 0
-#define TBCP_BURST_GRANTED 1
-#define TBCP_BURST_TAKEN_EXPECT_NO_REPLY 2
-#define TBCP_BURST_DENY 3
-#define TBCP_BURST_RELEASE 4
-#define TBCP_BURST_IDLE 5
-#define TBCP_BURST_REVOKE 6
-#define TBCP_BURST_ACKNOWLEDGMENT 7
-#define TBCP_QUEUE_STATUS_REQUEST 8
-#define TBCP_QUEUE_STATUS_RESPONSE 9
+#define TBCP_BURST_REQUEST 0
+#define TBCP_BURST_GRANTED 1
+#define TBCP_BURST_TAKEN_EXPECT_NO_REPLY 2
+#define TBCP_BURST_DENY 3
+#define TBCP_BURST_RELEASE 4
+#define TBCP_BURST_IDLE 5
+#define TBCP_BURST_REVOKE 6
+#define TBCP_BURST_ACKNOWLEDGMENT 7
+#define TBCP_QUEUE_STATUS_REQUEST 8
+#define TBCP_QUEUE_STATUS_RESPONSE 9
#define TBCP_DISCONNECT 11
#define TBCP_CONNECT 15
#define TBCP_BURST_TAKEN_EXPECT_REPLY 18
@@ -274,99 +274,99 @@ static const value_string rtcp_xr_idms_spst[] =
static const value_string rtcp_app_poc1_floor_cnt_type_vals[] =
{
- { TBCP_BURST_REQUEST, "TBCP Talk Burst Request"},
- { TBCP_BURST_GRANTED, "TBCP Talk Burst Granted"},
- { TBCP_BURST_TAKEN_EXPECT_NO_REPLY, "TBCP Talk Burst Taken (no ack expected)"},
- { TBCP_BURST_DENY, "TBCP Talk Burst Deny"},
- { TBCP_BURST_RELEASE, "TBCP Talk Burst Release"},
- { TBCP_BURST_IDLE, "TBCP Talk Burst Idle"},
- { TBCP_BURST_REVOKE, "TBCP Talk Burst Revoke"},
- { TBCP_BURST_ACKNOWLEDGMENT, "TBCP Talk Burst Acknowledgement"},
- { TBCP_QUEUE_STATUS_REQUEST, "TBCP Queue Status Request"},
- { TBCP_QUEUE_STATUS_RESPONSE, "TBCP Queue Status Response"},
- { TBCP_DISCONNECT, "TBCP Disconnect"},
- { TBCP_CONNECT, "TBCP Connect"},
- { TBCP_BURST_TAKEN_EXPECT_REPLY, "TBCP Talk Burst Taken (ack expected)"},
- { 0, NULL }
+ { TBCP_BURST_REQUEST, "TBCP Talk Burst Request"},
+ { TBCP_BURST_GRANTED, "TBCP Talk Burst Granted"},
+ { TBCP_BURST_TAKEN_EXPECT_NO_REPLY, "TBCP Talk Burst Taken (no ack expected)"},
+ { TBCP_BURST_DENY, "TBCP Talk Burst Deny"},
+ { TBCP_BURST_RELEASE, "TBCP Talk Burst Release"},
+ { TBCP_BURST_IDLE, "TBCP Talk Burst Idle"},
+ { TBCP_BURST_REVOKE, "TBCP Talk Burst Revoke"},
+ { TBCP_BURST_ACKNOWLEDGMENT, "TBCP Talk Burst Acknowledgement"},
+ { TBCP_QUEUE_STATUS_REQUEST, "TBCP Queue Status Request"},
+ { TBCP_QUEUE_STATUS_RESPONSE, "TBCP Queue Status Response"},
+ { TBCP_DISCONNECT, "TBCP Disconnect"},
+ { TBCP_CONNECT, "TBCP Connect"},
+ { TBCP_BURST_TAKEN_EXPECT_REPLY, "TBCP Talk Burst Taken (ack expected)"},
+ { 0, NULL }
};
static const value_string rtcp_app_poc1_reason_code1_vals[] =
{
- { 1, "Another PoC User has permission"},
- { 2, "Internal PoC server error"},
- { 3, "Only one participant in the group"},
- { 4, "Retry-after timer has not expired"},
- { 5, "Listen only"},
- { 0, NULL }
+ { 1, "Another PoC User has permission"},
+ { 2, "Internal PoC server error"},
+ { 3, "Only one participant in the group"},
+ { 4, "Retry-after timer has not expired"},
+ { 5, "Listen only"},
+ { 0, NULL }
};
static const value_string rtcp_app_poc1_reason_code2_vals[] =
{
- { 1, "Only one user"},
- { 2, "Talk burst too long"},
- { 3, "No permission to send a Talk Burst"},
- { 4, "Talk burst pre-empted"},
- { 0, NULL }
+ { 1, "Only one user"},
+ { 2, "Talk burst too long"},
+ { 3, "No permission to send a Talk Burst"},
+ { 4, "Talk burst pre-empted"},
+ { 0, NULL }
};
static const value_string rtcp_app_poc1_reason_code_ack_vals[] =
{
- { 0, "Accepted"},
- { 1, "Busy"},
- { 2, "Not accepted"},
- { 0, NULL }
+ { 0, "Accepted"},
+ { 1, "Busy"},
+ { 2, "Not accepted"},
+ { 0, NULL }
};
static const value_string rtcp_app_poc1_conn_sess_type_vals[] =
{
- { 0, "None"},
- { 1, "1-to-1"},
- { 2, "Ad-hoc"},
- { 3, "Pre-arranged"},
- { 4, "Chat"},
- { 0, NULL }
+ { 0, "None"},
+ { 1, "1-to-1"},
+ { 2, "Ad-hoc"},
+ { 3, "Pre-arranged"},
+ { 4, "Chat"},
+ { 0, NULL }
};
static const value_string rtcp_app_poc1_qsresp_priority_vals[] =
{
- { 0, "No priority (un-queued)"},
- { 1, "Normal priority"},
- { 2, "High priority"},
- { 3, "Pre-emptive priority"},
- { 0, NULL }
+ { 0, "No priority (un-queued)"},
+ { 1, "Normal priority"},
+ { 2, "High priority"},
+ { 3, "Pre-emptive priority"},
+ { 0, NULL }
};
/* 3GPP 29.414 RTP Multiplexing */
static const value_string rtcp_app_mux_selection_vals[] =
{
- { 0, "No multiplexing applied"},
- { 1, "Multiplexing without RTP header compression applied"},
- { 2, "Multiplexing with RTP header compression applied"},
- { 3, "Reserved"},
- { 0, NULL}
+ { 0, "No multiplexing applied"},
+ { 1, "Multiplexing without RTP header compression applied"},
+ { 2, "Multiplexing with RTP header compression applied"},
+ { 3, "Reserved"},
+ { 0, NULL}
};
/* RFC 4585 and RFC 5104 */
static const value_string rtcp_rtpfb_fmt_vals[] =
{
- { 1, "Generic negative acknowledgement (NACK)"},
- { 3, "Temporary Maximum Media Stream Bit Rate Request (TMMBR)"},
- { 4, "Temporary Maximum Media Stream Bit Rate Notification (TMMBN)"},
- { 31, "Reserved for future extensions"},
- { 0, NULL }
+ { 1, "Generic negative acknowledgement (NACK)"},
+ { 3, "Temporary Maximum Media Stream Bit Rate Request (TMMBR)"},
+ { 4, "Temporary Maximum Media Stream Bit Rate Notification (TMMBN)"},
+ { 31, "Reserved for future extensions"},
+ { 0, NULL }
};
static const value_string rtcp_psfb_fmt_vals[] =
{
- { 1, "Picture Loss Indication"},
- { 2, "Slice Loss Indication"},
- { 3, "Reference Picture Selection Indication"},
- { 4, "Full Intra Request (FIR) Command"},
- { 5, "Temporal-Spatial Trade-off Request (TSTR)"},
- { 6, "Temporal-Spatial Trade-off Notification (TSTN"},
- { 7, "Video Back Channel Message (VBCM)"},
- { 15, "Application Layer Feedback"},
- { 31, "Reserved for future extensions"},
- { 0, NULL }
+ { 1, "Picture Loss Indication"},
+ { 2, "Slice Loss Indication"},
+ { 3, "Reference Picture Selection Indication"},
+ { 4, "Full Intra Request (FIR) Command"},
+ { 5, "Temporal-Spatial Trade-off Request (TSTR)"},
+ { 6, "Temporal-Spatial Trade-off Notification (TSTN"},
+ { 7, "Video Back Channel Message (VBCM)"},
+ { 15, "Application Layer Feedback"},
+ { 31, "Reserved for future extensions"},
+ { 0, NULL }
};
/* RTCP header fields */
@@ -416,24 +416,24 @@ static int hf_rtcp_app_poc1 = -1;
static int hf_rtcp_app_poc1_subtype = -1;
static int hf_rtcp_app_poc1_sip_uri = -1;
static int hf_rtcp_app_poc1_disp_name = -1;
-static int hf_rtcp_app_poc1_priority = -1;
-static int hf_rtcp_app_poc1_request_ts = -1;
-static int hf_rtcp_app_poc1_stt = -1;
-static int hf_rtcp_app_poc1_partic = -1;
-static int hf_rtcp_app_poc1_ssrc_granted = -1;
+static int hf_rtcp_app_poc1_priority = -1;
+static int hf_rtcp_app_poc1_request_ts = -1;
+static int hf_rtcp_app_poc1_stt = -1;
+static int hf_rtcp_app_poc1_partic = -1;
+static int hf_rtcp_app_poc1_ssrc_granted = -1;
static int hf_rtcp_app_poc1_last_pkt_seq_no = -1;
static int hf_rtcp_app_poc1_ignore_seq_no = -1;
-static int hf_rtcp_app_poc1_reason_code1 = -1;
-static int hf_rtcp_app_poc1_reason1_phrase = -1;
-static int hf_rtcp_app_poc1_reason_code2 = -1;
-static int hf_rtcp_app_poc1_new_time_request = -1;
-static int hf_rtcp_app_poc1_ack_subtype = -1;
-static int hf_rtcp_app_poc1_ack_reason_code = -1;
-static int hf_rtcp_app_poc1_qsresp_priority = -1;
-static int hf_rtcp_app_poc1_qsresp_position = -1;
+static int hf_rtcp_app_poc1_reason_code1 = -1;
+static int hf_rtcp_app_poc1_reason1_phrase = -1;
+static int hf_rtcp_app_poc1_reason_code2 = -1;
+static int hf_rtcp_app_poc1_new_time_request = -1;
+static int hf_rtcp_app_poc1_ack_subtype = -1;
+static int hf_rtcp_app_poc1_ack_reason_code = -1;
+static int hf_rtcp_app_poc1_qsresp_priority = -1;
+static int hf_rtcp_app_poc1_qsresp_position = -1;
static int hf_rtcp_app_poc1_conn_content[5] = { -1, -1, -1, -1, -1 };
-static int hf_rtcp_app_poc1_conn_session_type = -1;
-static int hf_rtcp_app_poc1_conn_add_ind_mao = -1;
+static int hf_rtcp_app_poc1_conn_session_type = -1;
+static int hf_rtcp_app_poc1_conn_add_ind_mao = -1;
static int hf_rtcp_app_poc1_conn_sdes_items[5] = { -1, -1, -1, -1, -1 };
static int hf_rtcp_app_mux = -1;
static int hf_rtcp_app_mux_mux = -1;
@@ -535,31 +535,31 @@ static int hf_rtcp_roundtrip_delay = -1;
/* RTCP fields defining a sub tree */
-static gint ett_rtcp = -1;
-static gint ett_rtcp_sr = -1;
-static gint ett_rtcp_rr = -1;
-static gint ett_rtcp_sdes = -1;
-static gint ett_rtcp_bye = -1;
-static gint ett_rtcp_app = -1;
-static gint ett_rtcp_rtpfb = -1;
-static gint ett_rtcp_psfb = -1;
-static gint ett_rtcp_xr = -1;
-static gint ett_rtcp_fir = -1;
-static gint ett_rtcp_nack = -1;
-static gint ett_ssrc = -1;
-static gint ett_ssrc_item = -1;
-static gint ett_ssrc_ext_high = -1;
-static gint ett_sdes = -1;
-static gint ett_sdes_item = -1;
-static gint ett_PoC1 = -1;
-static gint ett_mux = -1;
-static gint ett_rtcp_setup = -1;
-static gint ett_rtcp_roundtrip_delay = -1;
+static gint ett_rtcp = -1;
+static gint ett_rtcp_sr = -1;
+static gint ett_rtcp_rr = -1;
+static gint ett_rtcp_sdes = -1;
+static gint ett_rtcp_bye = -1;
+static gint ett_rtcp_app = -1;
+static gint ett_rtcp_rtpfb = -1;
+static gint ett_rtcp_psfb = -1;
+static gint ett_rtcp_xr = -1;
+static gint ett_rtcp_fir = -1;
+static gint ett_rtcp_nack = -1;
+static gint ett_ssrc = -1;
+static gint ett_ssrc_item = -1;
+static gint ett_ssrc_ext_high = -1;
+static gint ett_sdes = -1;
+static gint ett_sdes_item = -1;
+static gint ett_PoC1 = -1;
+static gint ett_mux = -1;
+static gint ett_rtcp_setup = -1;
+static gint ett_rtcp_roundtrip_delay = -1;
static gint ett_xr_block = -1;
static gint ett_xr_block_contents = -1;
static gint ett_xr_ssrc = -1;
-static gint ett_xr_loss_chunk = -1;
-static gint ett_poc1_conn_contents = -1;
+static gint ett_xr_loss_chunk = -1;
+static gint ett_poc1_conn_contents = -1;
static gint ett_rtcp_nack_blp = -1;
/* Protocol registration */
void proto_register_rtcp(void);
@@ -598,66 +598,66 @@ void srtcp_add_address( packet_info *pinfo,
const gchar *setup_method, guint32 setup_frame_number,
struct srtp_info *srtcp_info)
{
- address null_addr;
- conversation_t* p_conv;
- struct _rtcp_conversation_info *p_conv_data = NULL;
-
- /*
- * If this isn't the first time this packet has been processed,
- * we've already done this work, so we don't need to do it
- * again.
- */
- if (pinfo->fd->flags.visited)
- {
- return;
- }
+ address null_addr;
+ conversation_t* p_conv;
+ struct _rtcp_conversation_info *p_conv_data = NULL;
+
+ /*
+ * If this isn't the first time this packet has been processed,
+ * we've already done this work, so we don't need to do it
+ * again.
+ */
+ if (pinfo->fd->flags.visited)
+ {
+ return;
+ }
#ifdef DEBUG
- printf("#%u: %srtcp_add_address(%s, %u, %u, %s, %u\n", pinfo->fd->num, (srtcp_info)?"s":"", ep_address_to_str(addr), port, other_port, setup_method, setup_frame_number);
+ printf("#%u: %srtcp_add_address(%s, %u, %u, %s, %u\n", pinfo->fd->num, (srtcp_info)?"s":"", ep_address_to_str(addr), port, other_port, setup_method, setup_frame_number);
#endif
- SET_ADDRESS(&null_addr, AT_NONE, 0, NULL);
-
- /*
- * Check if the ip address and port combination is not
- * already registered as a conversation.
- */
- p_conv = find_conversation( pinfo->fd->num, addr, &null_addr, PT_UDP, port, other_port,
- NO_ADDR_B | (!other_port ? NO_PORT_B : 0));
-
- /*
- * If not, create a new conversation.
- */
- if ( ! p_conv ) {
- p_conv = conversation_new( pinfo->fd->num, addr, &null_addr, PT_UDP,
- (guint32)port, (guint32)other_port,
- NO_ADDR2 | (!other_port ? NO_PORT2 : 0));
- }
-
- /* Set dissector */
- conversation_set_dissector(p_conv, rtcp_handle);
-
- /*
- * Check if the conversation has data associated with it.
- */
- p_conv_data = conversation_get_proto_data(p_conv, proto_rtcp);
-
- /*
- * If not, add a new data item.
- */
- if ( ! p_conv_data ) {
- /* Create conversation data */
- p_conv_data = se_alloc0(sizeof(struct _rtcp_conversation_info));
- conversation_add_proto_data(p_conv, proto_rtcp, p_conv_data);
- }
-
- /*
- * Update the conversation data.
- */
- p_conv_data->setup_method_set = TRUE;
- g_strlcpy(p_conv_data->setup_method, setup_method, MAX_RTCP_SETUP_METHOD_SIZE);
- p_conv_data->setup_frame_number = setup_frame_number;
- p_conv_data->srtcp_info = srtcp_info;
+ SET_ADDRESS(&null_addr, AT_NONE, 0, NULL);
+
+ /*
+ * Check if the ip address and port combination is not
+ * already registered as a conversation.
+ */
+ p_conv = find_conversation( pinfo->fd->num, addr, &null_addr, PT_UDP, port, other_port,
+ NO_ADDR_B | (!other_port ? NO_PORT_B : 0));
+
+ /*
+ * If not, create a new conversation.
+ */
+ if ( ! p_conv ) {
+ p_conv = conversation_new( pinfo->fd->num, addr, &null_addr, PT_UDP,
+ (guint32)port, (guint32)other_port,
+ NO_ADDR2 | (!other_port ? NO_PORT2 : 0));
+ }
+
+ /* Set dissector */
+ conversation_set_dissector(p_conv, rtcp_handle);
+
+ /*
+ * Check if the conversation has data associated with it.
+ */
+ p_conv_data = conversation_get_proto_data(p_conv, proto_rtcp);
+
+ /*
+ * If not, add a new data item.
+ */
+ if ( ! p_conv_data ) {
+ /* Create conversation data */
+ p_conv_data = se_alloc0(sizeof(struct _rtcp_conversation_info));
+ conversation_add_proto_data(p_conv, proto_rtcp, p_conv_data);
+ }
+
+ /*
+ * Update the conversation data.
+ */
+ p_conv_data->setup_method_set = TRUE;
+ g_strlcpy(p_conv_data->setup_method, setup_method, MAX_RTCP_SETUP_METHOD_SIZE);
+ p_conv_data->setup_frame_number = setup_frame_number;
+ p_conv_data->srtcp_info = srtcp_info;
}
/* Set up an RTCP conversation using the info given */
@@ -666,104 +666,104 @@ void rtcp_add_address( packet_info *pinfo,
int other_port,
const gchar *setup_method, guint32 setup_frame_number)
{
- srtcp_add_address(pinfo, addr, port, other_port, setup_method, setup_frame_number, NULL);
+ srtcp_add_address(pinfo, addr, port, other_port, setup_method, setup_frame_number, NULL);
}
static gboolean
dissect_rtcp_heur( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree )
{
- unsigned int offset = 0;
- unsigned int first_byte;
- unsigned int packet_type;
-
- /* This is a heuristic dissector, which means we get all the UDP
- * traffic not sent to a known dissector and not claimed by
- * a heuristic dissector called before us!
- */
-
- if (!global_rtcp_heur)
- {
- return FALSE;
- }
-
- /* Was it sent to an odd-numbered port? */
- if ((pinfo->destport % 2) == 0)
- {
- return FALSE; /* no */
- }
-
- /* Look at first byte */
- first_byte = tvb_get_guint8(tvb, offset);
-
- /* Are version bits set to 2? */
- if (((first_byte & 0xC0) >> 6) != 2)
- {
- return FALSE;
- }
-
- /* Look at packet type */
- packet_type = tvb_get_guint8(tvb, offset + 1);
-
- /* First packet within compound packet is supposed to be a sender
- or receiver report.
+ unsigned int offset = 0;
+ unsigned int first_byte;
+ unsigned int packet_type;
+
+ /* This is a heuristic dissector, which means we get all the UDP
+ * traffic not sent to a known dissector and not claimed by
+ * a heuristic dissector called before us!
+ */
+
+ if (!global_rtcp_heur)
+ {
+ return FALSE;
+ }
+
+ /* Was it sent to an odd-numbered port? */
+ if ((pinfo->destport % 2) == 0)
+ {
+ return FALSE; /* no */
+ }
+
+ /* Look at first byte */
+ first_byte = tvb_get_guint8(tvb, offset);
+
+ /* Are version bits set to 2? */
+ if (((first_byte & 0xC0) >> 6) != 2)
+ {
+ return FALSE;
+ }
+
+ /* Look at packet type */
+ packet_type = tvb_get_guint8(tvb, offset + 1);
+
+ /* First packet within compound packet is supposed to be a sender
+ or receiver report.
- allow BYE because this happens anyway
- allow APP because TBCP ("PoC1") packets aren't compound... */
- if (!((packet_type == RTCP_SR) || (packet_type == RTCP_RR) ||
- (packet_type == RTCP_BYE) || (packet_type == RTCP_APP)))
- {
- return FALSE;
- }
-
- /* Overall length must be a multiple of 4 bytes */
- if (tvb_reported_length(tvb) % 4)
- {
- return FALSE;
- }
-
- /* OK, dissect as RTCP */
- dissect_rtcp(tvb, pinfo, tree);
- return TRUE;
+ if (!((packet_type == RTCP_SR) || (packet_type == RTCP_RR) ||
+ (packet_type == RTCP_BYE) || (packet_type == RTCP_APP)))
+ {
+ return FALSE;
+ }
+
+ /* Overall length must be a multiple of 4 bytes */
+ if (tvb_reported_length(tvb) % 4)
+ {
+ return FALSE;
+ }
+
+ /* OK, dissect as RTCP */
+ dissect_rtcp(tvb, pinfo, tree);
+ return TRUE;
}
/* Dissect the length field. Append to this field text indicating the number of
actual bytes this translates to (i.e. (raw value + 1) * 4) */
int dissect_rtcp_length_field( proto_tree *tree, tvbuff_t *tvb, int offset)
{
- proto_item *ti;
- unsigned short raw_length = tvb_get_ntohs( tvb, offset );
- ti = proto_tree_add_item( tree, hf_rtcp_length, tvb, offset, 2, ENC_BIG_ENDIAN);
- proto_item_append_text(ti, " (%u bytes)", (raw_length+1)*4);
- offset += 2;
- return offset;
+ proto_item *ti;
+ unsigned short raw_length = tvb_get_ntohs( tvb, offset );
+ ti = proto_tree_add_item( tree, hf_rtcp_length, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_item_append_text(ti, " (%u bytes)", (raw_length+1)*4);
+ offset += 2;
+ return offset;
}
static int
dissect_rtcp_nack( tvbuff_t *tvb, int offset, proto_tree *tree )
{
- /* Packet type = FIR (H261) */
- proto_tree_add_item( tree, hf_rtcp_rc, tvb, offset, 1, ENC_BIG_ENDIAN );
- offset++;
- /* Packet type, 8 bits = APP */
- proto_tree_add_item( tree, hf_rtcp_pt, tvb, offset, 1, ENC_BIG_ENDIAN );
- offset++;
+ /* Packet type = FIR (H261) */
+ proto_tree_add_item( tree, hf_rtcp_rc, tvb, offset, 1, ENC_BIG_ENDIAN );
+ offset++;
+ /* Packet type, 8 bits = APP */
+ proto_tree_add_item( tree, hf_rtcp_pt, tvb, offset, 1, ENC_BIG_ENDIAN );
+ offset++;
- /* Packet length in 32 bit words minus one */
- offset = dissect_rtcp_length_field(tree, tvb, offset);
+ /* Packet length in 32 bit words minus one */
+ offset = dissect_rtcp_length_field(tree, tvb, offset);
- /* SSRC */
- proto_tree_add_item( tree, hf_rtcp_ssrc_source, tvb, offset, 4, ENC_BIG_ENDIAN );
- offset += 4;
+ /* SSRC */
+ proto_tree_add_item( tree, hf_rtcp_ssrc_source, tvb, offset, 4, ENC_BIG_ENDIAN );
+ offset += 4;
- /* FSN, 16 bits */
- proto_tree_add_item( tree, hf_rtcp_fsn, tvb, offset, 2, ENC_BIG_ENDIAN );
- offset += 2;
+ /* FSN, 16 bits */
+ proto_tree_add_item( tree, hf_rtcp_fsn, tvb, offset, 2, ENC_BIG_ENDIAN );
+ offset += 2;
- /* BLP, 16 bits */
- proto_tree_add_item( tree, hf_rtcp_blp, tvb, offset, 2, ENC_BIG_ENDIAN );
- offset += 2;
+ /* BLP, 16 bits */
+ proto_tree_add_item( tree, hf_rtcp_blp, tvb, offset, 2, ENC_BIG_ENDIAN );
+ offset += 2;
- return offset;
+ return offset;
}
static int
@@ -778,17 +778,17 @@ dissect_rtcp_rtpfb_tmmbr( tvbuff_t *tvb, int offset, proto_tree *rtcp_tree, prot
if (is_notification == 1) {
ti = proto_tree_add_text( rtcp_tree, tvb, offset, 8, "TMMBN %d", num_fci );
} else {
- ti = proto_tree_add_text( rtcp_tree, tvb, offset, 8, "TMMBR %d", num_fci );
+ ti = proto_tree_add_text( rtcp_tree, tvb, offset, 8, "TMMBR %d", num_fci );
}
- fci_tree = proto_item_add_subtree( ti, ett_ssrc );
+ fci_tree = proto_item_add_subtree( ti, ett_ssrc );
/* SSRC 32 bit*/
proto_tree_add_item( fci_tree, hf_rtcp_rtpfb_tmbbr_fci_ssrc, tvb, offset, 4, ENC_BIG_ENDIAN );
offset += 4;
/* Exp 6 bit*/
proto_tree_add_item( fci_tree, hf_rtcp_rtpfb_tmbbr_fci_exp, tvb, offset, 1, ENC_BIG_ENDIAN );
exp = (tvb_get_guint8(tvb, offset) & 0xfc) >> 2;
- /* Mantissa 17 bit*/
+ /* Mantissa 17 bit*/
proto_tree_add_item( fci_tree, hf_rtcp_rtpfb_tmbbr_fci_mantissa, tvb, offset, 3, ENC_BIG_ENDIAN );
mantissa = (tvb_get_ntohl( tvb, offset) & 0x3fffe00) >> 9;
bitrate = mantissa << exp;
@@ -799,8 +799,8 @@ dissect_rtcp_rtpfb_tmmbr( tvbuff_t *tvb, int offset, proto_tree *rtcp_tree, prot
offset += 1;
if (top_item != NULL) {
- proto_item_append_text(top_item, ": TMMBR: %u", bitrate);
- }
+ proto_item_append_text(top_item, ": TMMBR: %u", bitrate);
+ }
return offset;
}
@@ -817,37 +817,37 @@ dissect_rtcp_rtpfb_nack( tvbuff_t *tvb, int offset, proto_tree *rtcp_tree, proto
proto_item *ti = (proto_item*) NULL;
proto_tree_add_item(rtcp_tree, hf_rtcp_rtpfb_nack_pid, tvb, offset, 2, ENC_BIG_ENDIAN);
- rtcp_rtpfb_nack_pid = tvb_get_ntohs(tvb, offset);
+ rtcp_rtpfb_nack_pid = tvb_get_ntohs(tvb, offset);
offset += 2;
ti = proto_tree_add_item(rtcp_tree, hf_rtcp_rtpfb_nack_blp, tvb, offset, 2, ENC_BIG_ENDIAN);
proto_item_set_text(ti, "RTCP Transport Feedback NACK BLP: ");
- rtcp_rtpfb_nack_blp = tvb_get_ntohs(tvb, offset);
- bitfield_tree = proto_item_add_subtree( ti, ett_rtcp_nack_blp);
- nack_num_frames_lost ++;
- if (rtcp_rtpfb_nack_blp) {
- for (i = 0; i < 16; i ++) {
- g_snprintf(strbuf, 64, "Frame %d also lost", rtcp_rtpfb_nack_pid + i + 1);
- proto_tree_add_text(bitfield_tree, tvb, offset, 2, "%s",
- decode_boolean_bitfield(rtcp_rtpfb_nack_blp, (1<<i), 16, strbuf, ""));
-
- if (rtcp_rtpfb_nack_blp & (1<<i)) {
- proto_item *hidden_ti;
- hidden_ti = proto_tree_add_uint(bitfield_tree, hf_rtcp_rtpfb_nack_pid, tvb, offset, 2, rtcp_rtpfb_nack_pid + i + 1);
- PROTO_ITEM_SET_HIDDEN(hidden_ti);
- proto_item_append_text(ti, "%d ", rtcp_rtpfb_nack_pid + i + 1);
- nack_num_frames_lost ++;
- }
- }
- } else {
- proto_item_set_text(ti, "0 (No additional frames lost)");
- }
+ rtcp_rtpfb_nack_blp = tvb_get_ntohs(tvb, offset);
+ bitfield_tree = proto_item_add_subtree( ti, ett_rtcp_nack_blp);
+ nack_num_frames_lost ++;
+ if (rtcp_rtpfb_nack_blp) {
+ for (i = 0; i < 16; i ++) {
+ g_snprintf(strbuf, 64, "Frame %d also lost", rtcp_rtpfb_nack_pid + i + 1);
+ proto_tree_add_text(bitfield_tree, tvb, offset, 2, "%s",
+ decode_boolean_bitfield(rtcp_rtpfb_nack_blp, (1<<i), 16, strbuf, ""));
+
+ if (rtcp_rtpfb_nack_blp & (1<<i)) {
+ proto_item *hidden_ti;
+ hidden_ti = proto_tree_add_uint(bitfield_tree, hf_rtcp_rtpfb_nack_pid, tvb, offset, 2, rtcp_rtpfb_nack_pid + i + 1);
+ PROTO_ITEM_SET_HIDDEN(hidden_ti);
+ proto_item_append_text(ti, "%d ", rtcp_rtpfb_nack_pid + i + 1);
+ nack_num_frames_lost ++;
+ }
+ }
+ } else {
+ proto_item_set_text(ti, "0 (No additional frames lost)");
+ }
offset += 2;
if (top_item != NULL) {
- proto_item_append_text(top_item, ": NACK: %d frames lost", nack_num_frames_lost);
- }
+ proto_item_append_text(top_item, ": NACK: %d frames lost", nack_num_frames_lost);
+ }
return offset;
}
@@ -898,17 +898,17 @@ dissect_rtcp_rtpfb( tvbuff_t *tvb, int offset, proto_tree *rtcp_tree, proto_item
}
}
- return offset;
+ return offset;
}
static int
dissect_rtcp_psfb( tvbuff_t *tvb, int offset, proto_tree *rtcp_tree,
- int packet_length )
+ int packet_length )
{
unsigned int counter = 0;
unsigned int num_fci = 0;
unsigned int read_fci = 0;
- proto_tree *fci_tree = (proto_tree*) NULL;
- proto_item *ti = (proto_item*) NULL;
+ proto_tree *fci_tree = (proto_tree*) NULL;
+ proto_item *ti = (proto_item*) NULL;
unsigned int rtcp_psfb_fmt = 0;
int base_offset = offset;
@@ -935,19 +935,19 @@ dissect_rtcp_psfb( tvbuff_t *tvb, int offset, proto_tree *rtcp_tree,
offset += 4;
/* Feedback Control Information (FCI) */
- while ( read_fci < num_fci ) {
+ while ( read_fci < num_fci ) {
/* Handle FIR */
if (rtcp_psfb_fmt == 4) {
/* Create a new subtree for a length of 8 bytes */
- ti = proto_tree_add_text( rtcp_tree, tvb, offset, 8, "FIR %u", ++counter );
- fci_tree = proto_item_add_subtree( ti, ett_ssrc );
+ ti = proto_tree_add_text( rtcp_tree, tvb, offset, 8, "FIR %u", ++counter );
+ fci_tree = proto_item_add_subtree( ti, ett_ssrc );
/* SSRC 32 bit*/
proto_tree_add_item( fci_tree, hf_rtcp_psfb_fir_fci_ssrc, tvb, offset, 4, ENC_BIG_ENDIAN );
offset += 4;
/* Command Sequence Number 8 bit*/
proto_tree_add_item( fci_tree, hf_rtcp_psfb_fir_fci_csn, tvb, offset, 1, ENC_BIG_ENDIAN );
- /*proto_tree_add_item( ssrc_tree, hf_rtcp_ssrc_source, tvb, offset, 4, ENC_BIG_ENDIAN );*/
- offset += 1;
+ /*proto_tree_add_item( ssrc_tree, hf_rtcp_ssrc_source, tvb, offset, 4, ENC_BIG_ENDIAN );*/
+ offset += 1;
/* Reserved 24 bit*/
proto_tree_add_item( fci_tree, hf_rtcp_psfb_fir_fci_reserved, tvb, offset, 3, ENC_BIG_ENDIAN );
offset += 3;
@@ -968,21 +968,21 @@ dissect_rtcp_psfb( tvbuff_t *tvb, int offset, proto_tree *rtcp_tree,
static int
dissect_rtcp_fir( tvbuff_t *tvb, int offset, proto_tree *tree )
{
- /* Packet type = FIR (H261) */
- proto_tree_add_item( tree, hf_rtcp_rc, tvb, offset, 1, ENC_BIG_ENDIAN );
- offset++;
- /* Packet type, 8 bits = APP */
- proto_tree_add_item( tree, hf_rtcp_pt, tvb, offset, 1, ENC_BIG_ENDIAN );
- offset++;
+ /* Packet type = FIR (H261) */
+ proto_tree_add_item( tree, hf_rtcp_rc, tvb, offset, 1, ENC_BIG_ENDIAN );
+ offset++;
+ /* Packet type, 8 bits = APP */
+ proto_tree_add_item( tree, hf_rtcp_pt, tvb, offset, 1, ENC_BIG_ENDIAN );
+ offset++;
- /* Packet length in 32 bit words minus one */
- offset = dissect_rtcp_length_field(tree, tvb, offset);
+ /* Packet length in 32 bit words minus one */
+ offset = dissect_rtcp_length_field(tree, tvb, offset);
- /* SSRC */
- proto_tree_add_item( tree, hf_rtcp_ssrc_source, tvb, offset, 4, ENC_BIG_ENDIAN );
- offset += 4;
+ /* SSRC */
+ proto_tree_add_item( tree, hf_rtcp_ssrc_source, tvb, offset, 4, ENC_BIG_ENDIAN );
+ offset += 4;
- return offset;
+ return offset;
}
static int
@@ -990,607 +990,607 @@ dissect_rtcp_app( tvbuff_t *tvb,packet_info *pinfo, int offset, proto_tree *tree
unsigned int padding, unsigned int packet_len, guint rtcp_subtype,
guint32 app_length )
{
- unsigned int counter = 0;
- char ascii_name[5];
- guint sdes_type = 0;
- guint item_len = 0;
- proto_tree *PoC1_tree;
- proto_item *PoC1_item;
-
- /* XXX If more application types are to be dissected it may be useful to use a table like in packet-sip.c */
- static const char poc1_app_name_str[] = "PoC1";
- static const char mux_app_name_str[] = "3GPP";
-
-
- /* SSRC / CSRC */
- proto_tree_add_item( tree, hf_rtcp_ssrc_source, tvb, offset, 4, ENC_BIG_ENDIAN );
- offset += 4;
- packet_len -= 4;
-
- /* Application Name (ASCII) */
- for( counter = 0; counter < 4; counter++ )
- ascii_name[ counter ] = tvb_get_guint8( tvb, offset + counter );
- /* g_strlcpy( ascii_name, pd + offset, 4 ); */
- ascii_name[4] = '\0';
- proto_tree_add_string( tree, hf_rtcp_name_ascii, tvb, offset, 4,
- ascii_name );
-
- /* See if we can handle this application type */
- if ( g_ascii_strncasecmp(ascii_name, poc1_app_name_str,4 ) == 0 )
- {
- /* PoC1 Application */
- guint8 t2timer_code, participants_code;
- proto_item *item;
- item = proto_tree_add_uint( tree, hf_rtcp_app_poc1_subtype, tvb, offset - 8, 1, rtcp_subtype );
- PROTO_ITEM_SET_GENERATED(item);
- col_add_fstr(pinfo->cinfo, COL_INFO,"(%s) %s",ascii_name,
- val_to_str(rtcp_subtype,rtcp_app_poc1_floor_cnt_type_vals,"unknown (%u)") );
- offset += 4;
- packet_len -= 4;
- app_length = app_length -8;
- if ( packet_len == 0 )
- return offset; /* No more data */
- /* Applications specific data */
- if ( padding ) {
- /* If there's padding present, we have to remove that from the data part
- * The last octet of the packet contains the length of the padding
- */
- packet_len -= tvb_get_guint8( tvb, offset + packet_len - 1 );
- }
- /* Create a subtree for the PoC1 Application items; we don't yet know
- the length */
-
- /* Top-level poc tree */
- PoC1_item = proto_tree_add_item(tree, hf_rtcp_app_poc1, tvb, offset, packet_len, ENC_NA);
- PoC1_tree = proto_item_add_subtree( PoC1_item, ett_PoC1 );
-
- /* Dissect it according to its subtype */
- switch ( rtcp_subtype ) {
-
- case TBCP_BURST_REQUEST:
- {
- guint8 code;
- guint16 priority;
-
- /* Both items here are optional */
- if (tvb_reported_length_remaining( tvb, offset) == 0)
- {
- return offset;
- }
-
- /* Look for a code in the first byte */
- code = tvb_get_guint8(tvb, offset);
- offset += 1;
- packet_len -=1;
-
- /* Priority (optional) */
- if (code == 102)
- {
- item_len = tvb_get_guint8(tvb, offset);
- offset += 1;
- packet_len -= 1;
- if (item_len != 2) /* SHALL be 2 */
- return offset;
-
- priority = tvb_get_ntohs(tvb, offset);
- proto_tree_add_item(PoC1_tree, hf_rtcp_app_poc1_priority, tvb, offset, 2, ENC_BIG_ENDIAN );
- offset += 2;
- packet_len -= 2;
-
- col_append_fstr(pinfo->cinfo, COL_INFO,
- " \"%s\"",
- val_to_str(priority,
- rtcp_app_poc1_qsresp_priority_vals,
- "Unknown"));
-
- /* Look for (optional) next code */
- if (tvb_reported_length_remaining( tvb, offset) == 0)
- {
- return offset;
- }
- code = tvb_get_guint8(tvb, offset);
- offset += 1;
- packet_len -=1;
-
- }
-
- /* Request timestamp (optional) */
- if (code == 103)
- {
- const gchar *buff;
-
- item_len = tvb_get_guint8(tvb, offset);
- offset += 1;
- packet_len -= 1;
- if (item_len != 8) /* SHALL be 8 */
- return offset;
-
- proto_tree_add_item(PoC1_tree, hf_rtcp_app_poc1_request_ts,
- tvb, offset, 8, ENC_TIME_NTP|ENC_BIG_ENDIAN);
- buff = tvb_ntp_fmt_ts(tvb, offset);
-
- offset += 8;
- packet_len -=8;
-
- col_append_fstr(pinfo->cinfo, COL_INFO, " ts=\"%s\"", buff);
- }
- }
- break;
-
- case TBCP_BURST_GRANTED:
- {
- proto_item *ti;
- guint16 stop_talking_time;
- guint16 participants;
-
- /* Stop talking timer (now mandatory) */
- t2timer_code = tvb_get_guint8(tvb, offset);
- offset += 1;
- packet_len -=1;
- if (t2timer_code != 101) /* SHALL be 101 */
- return offset;
-
- item_len = tvb_get_guint8(tvb, offset);
- offset += 1;
- packet_len -= 1;
- if (item_len != 2) /* SHALL be 2 */
- return offset;
-
- stop_talking_time = tvb_get_ntohs(tvb, offset);
- ti = proto_tree_add_item(PoC1_tree, hf_rtcp_app_poc1_stt, tvb, offset, 2, ENC_BIG_ENDIAN );
-
- /* Append text with meanings of value */
- switch (stop_talking_time)
- {
- case 0:
- proto_item_append_text(ti, " unknown");
- break;
- case 65535:
- proto_item_append_text(ti, " infinity");
- break;
- default:
- proto_item_append_text(ti, " seconds");
- break;
- }
- offset += item_len;
- packet_len -= item_len;
-
- col_append_fstr(pinfo->cinfo, COL_INFO, " stop-talking-time=%u",
- stop_talking_time);
-
- /* Participants (optional) */
- if (tvb_reported_length_remaining( tvb, offset) == 0)
- {
- return offset;
- }
- participants_code = tvb_get_guint8(tvb, offset);
- offset += 1;
- packet_len -=1;
- if (participants_code != 100) /* SHALL be 100 */
- return offset;
-
- item_len = tvb_get_guint8(tvb, offset);
- offset += 1;
- packet_len -= 1;
- if (item_len != 2) /* SHALL be 2 */
- return offset;
-
- participants = tvb_get_ntohs(tvb, offset);
- ti = proto_tree_add_item(PoC1_tree, hf_rtcp_app_poc1_partic, tvb, offset, 2, ENC_BIG_ENDIAN );
-
- /* Append text with meanings of extreme values */
- switch (participants)
- {
- case 0:
- proto_item_append_text(ti, " (not known)");
- break;
- case 65535:
- proto_item_append_text(ti, " (or more)");
- break;
- default:
- break;
- }
- offset += item_len;
- packet_len -= item_len;
-
- col_append_fstr(pinfo->cinfo, COL_INFO, " participants=%u",
- participants);
- }
- break;
-
- case TBCP_BURST_TAKEN_EXPECT_NO_REPLY:
- case TBCP_BURST_TAKEN_EXPECT_REPLY:
- {
- guint16 participants;
- proto_item *ti;
-
- /* SSRC of PoC client */
- proto_tree_add_item(PoC1_tree, hf_rtcp_app_poc1_ssrc_granted, tvb, offset, 4, ENC_BIG_ENDIAN );
- offset += 4;
- packet_len -= 4;
-
- /* SDES type (must be CNAME) */
- sdes_type = tvb_get_guint8( tvb, offset );
- proto_tree_add_item( PoC1_tree, hf_rtcp_sdes_type, tvb, offset, 1, ENC_BIG_ENDIAN );
- offset++;
- packet_len--;
- if (sdes_type != RTCP_SDES_CNAME)
- {
- return offset;
- }
-
- /* SIP URI */
- item_len = tvb_get_guint8( tvb, offset );
- /* Item len of 1 because its an FT_UINT_STRING... */
- proto_tree_add_item(PoC1_tree, hf_rtcp_app_poc1_sip_uri,
- tvb, offset, 1, ENC_ASCII|ENC_BIG_ENDIAN );
- offset++;
-
- col_append_fstr(pinfo->cinfo, COL_INFO, " CNAME=\"%s\"",
- tvb_get_ephemeral_string(tvb, offset, item_len));
-
- offset += item_len;
- packet_len = packet_len - item_len - 1;
-
- /* In the application dependent data, the TBCP Talk Burst Taken message SHALL carry
- * a SSRC field and SDES items, CNAME and MAY carry SDES item NAME to identify the
- * PoC Client that has been granted permission to send a Talk Burst.
- *
- * The SDES item NAME SHALL be included if it is known by the PoC Server.
- * Therefore the length of the packet will vary depending on number of SDES items
- * and the size of the SDES items.
- */
- if ( packet_len == 0 )
- return offset;
-
- /* SDES type (must be NAME if present) */
- sdes_type = tvb_get_guint8( tvb, offset );
- if (sdes_type == RTCP_SDES_NAME) {
- proto_tree_add_item( PoC1_tree, hf_rtcp_sdes_type, tvb, offset, 1, ENC_BIG_ENDIAN );
- offset++;
- packet_len--;
-
- /* Display name */
- item_len = tvb_get_guint8( tvb, offset );
- /* Item len of 1 because its an FT_UINT_STRING... */
- proto_tree_add_item(PoC1_tree, hf_rtcp_app_poc1_disp_name,
- tvb, offset, 1, ENC_ASCII|ENC_BIG_ENDIAN);
- offset++;
-
- col_append_fstr(pinfo->cinfo, COL_INFO, " DISPLAY-NAME=\"%s\"",
- tvb_get_ephemeral_string(tvb, offset, item_len));
-
- offset += item_len;
- packet_len = packet_len - item_len - 1;
-
- if (packet_len == 0) {
- return offset;
- }
-
- /* Move onto next 4-byte boundary */
- if (offset % 4) {
- int padding2 = (4-(offset%4));
- offset += padding2;
- packet_len -= padding2;
- }
- }
-
- /* Participants (optional) */
- if (tvb_reported_length_remaining( tvb, offset) == 0) {
- return offset;
- }
- participants_code = tvb_get_guint8(tvb, offset);
- offset += 1;
- packet_len -=1;
- if (participants_code != 100) { /* SHALL be 100 */
- return offset;
- }
- item_len = tvb_get_guint8(tvb, offset);
- offset += 1;
- packet_len -= 1;
- if (item_len != 2) { /* SHALL be 2 */
- return offset;
- }
-
- participants = tvb_get_ntohs(tvb, offset);
- ti = proto_tree_add_item(PoC1_tree, hf_rtcp_app_poc1_partic, tvb, offset, 2, ENC_BIG_ENDIAN );
-
- /* Append text with meanings of extreme values */
- switch (participants) {
- case 0:
- proto_item_append_text(ti, " (not known)");
- break;
- case 65535:
- proto_item_append_text(ti, " (or more)");
- break;
- default:
- break;
- }
-
- col_append_fstr(pinfo->cinfo, COL_INFO, " Participants=%u",
- participants);
- offset += item_len;
- packet_len -= item_len;
- }
- break;
-
- case TBCP_BURST_DENY:
- {
- guint8 reason_code;
-
- /* Reason code */
- reason_code = tvb_get_guint8(tvb, offset);
- proto_tree_add_item( PoC1_tree, hf_rtcp_app_poc1_reason_code1, tvb, offset, 1, ENC_BIG_ENDIAN );
- offset++;
- packet_len--;
-
- col_append_fstr(pinfo->cinfo, COL_INFO, " reason-code=\"%s\"",
- val_to_str(reason_code,
- rtcp_app_poc1_reason_code1_vals,
- "Unknown"));
-
- /* Reason phrase */
- item_len = tvb_get_guint8( tvb, offset );
- if ( item_len != 0 )
- proto_tree_add_item( PoC1_tree, hf_rtcp_app_poc1_reason1_phrase, tvb, offset, 1, ENC_ASCII|ENC_BIG_ENDIAN );
-
- offset += (item_len+1);
- packet_len -= (item_len+1);
- }
- break;
-
- case TBCP_BURST_RELEASE:
- {
- guint16 last_seq_no;
- /*guint16 ignore_last_seq_no;*/
-
- /* Sequence number of last RTP packet in burst */
- proto_tree_add_item( PoC1_tree, hf_rtcp_app_poc1_last_pkt_seq_no, tvb, offset, 2, ENC_BIG_ENDIAN );
- last_seq_no = tvb_get_ntohs(tvb, offset);
-
- /* Bit 16 is ignore flag */
- offset += 2;
- proto_tree_add_item(PoC1_tree, hf_rtcp_app_poc1_ignore_seq_no, tvb, offset, 2, ENC_BIG_ENDIAN );
- /*ignore_last_seq_no = (tvb_get_ntohs(tvb, offset) & 0x8000);*/
+ unsigned int counter = 0;
+ char ascii_name[5];
+ guint sdes_type = 0;
+ guint item_len = 0;
+ proto_tree *PoC1_tree;
+ proto_item *PoC1_item;
+
+ /* XXX If more application types are to be dissected it may be useful to use a table like in packet-sip.c */
+ static const char poc1_app_name_str[] = "PoC1";
+ static const char mux_app_name_str[] = "3GPP";
+
+
+ /* SSRC / CSRC */
+ proto_tree_add_item( tree, hf_rtcp_ssrc_source, tvb, offset, 4, ENC_BIG_ENDIAN );
+ offset += 4;
+ packet_len -= 4;
+
+ /* Application Name (ASCII) */
+ for( counter = 0; counter < 4; counter++ )
+ ascii_name[ counter ] = tvb_get_guint8( tvb, offset + counter );
+ /* g_strlcpy( ascii_name, pd + offset, 4 ); */
+ ascii_name[4] = '\0';
+ proto_tree_add_string( tree, hf_rtcp_name_ascii, tvb, offset, 4,
+ ascii_name );
+
+ /* See if we can handle this application type */
+ if ( g_ascii_strncasecmp(ascii_name, poc1_app_name_str,4 ) == 0 )
+ {
+ /* PoC1 Application */
+ guint8 t2timer_code, participants_code;
+ proto_item *item;
+ item = proto_tree_add_uint( tree, hf_rtcp_app_poc1_subtype, tvb, offset - 8, 1, rtcp_subtype );
+ PROTO_ITEM_SET_GENERATED(item);
+ col_add_fstr(pinfo->cinfo, COL_INFO,"(%s) %s",ascii_name,
+ val_to_str(rtcp_subtype,rtcp_app_poc1_floor_cnt_type_vals,"unknown (%u)") );
+ offset += 4;
+ packet_len -= 4;
+ app_length = app_length -8;
+ if ( packet_len == 0 )
+ return offset; /* No more data */
+ /* Applications specific data */
+ if ( padding ) {
+ /* If there's padding present, we have to remove that from the data part
+ * The last octet of the packet contains the length of the padding
+ */
+ packet_len -= tvb_get_guint8( tvb, offset + packet_len - 1 );
+ }
+ /* Create a subtree for the PoC1 Application items; we don't yet know
+ the length */
+
+ /* Top-level poc tree */
+ PoC1_item = proto_tree_add_item(tree, hf_rtcp_app_poc1, tvb, offset, packet_len, ENC_NA);
+ PoC1_tree = proto_item_add_subtree( PoC1_item, ett_PoC1 );
+
+ /* Dissect it according to its subtype */
+ switch ( rtcp_subtype ) {
+
+ case TBCP_BURST_REQUEST:
+ {
+ guint8 code;
+ guint16 priority;
+
+ /* Both items here are optional */
+ if (tvb_reported_length_remaining( tvb, offset) == 0)
+ {
+ return offset;
+ }
+
+ /* Look for a code in the first byte */
+ code = tvb_get_guint8(tvb, offset);
+ offset += 1;
+ packet_len -=1;
+
+ /* Priority (optional) */
+ if (code == 102)
+ {
+ item_len = tvb_get_guint8(tvb, offset);
+ offset += 1;
+ packet_len -= 1;
+ if (item_len != 2) /* SHALL be 2 */
+ return offset;
+
+ priority = tvb_get_ntohs(tvb, offset);
+ proto_tree_add_item(PoC1_tree, hf_rtcp_app_poc1_priority, tvb, offset, 2, ENC_BIG_ENDIAN );
+ offset += 2;
+ packet_len -= 2;
+
+ col_append_fstr(pinfo->cinfo, COL_INFO,
+ " \"%s\"",
+ val_to_str(priority,
+ rtcp_app_poc1_qsresp_priority_vals,
+ "Unknown"));
+
+ /* Look for (optional) next code */
+ if (tvb_reported_length_remaining( tvb, offset) == 0)
+ {
+ return offset;
+ }
+ code = tvb_get_guint8(tvb, offset);
+ offset += 1;
+ packet_len -=1;
+
+ }
+
+ /* Request timestamp (optional) */
+ if (code == 103)
+ {
+ const gchar *buff;
+
+ item_len = tvb_get_guint8(tvb, offset);
+ offset += 1;
+ packet_len -= 1;
+ if (item_len != 8) /* SHALL be 8 */
+ return offset;
+
+ proto_tree_add_item(PoC1_tree, hf_rtcp_app_poc1_request_ts,
+ tvb, offset, 8, ENC_TIME_NTP|ENC_BIG_ENDIAN);
+ buff = tvb_ntp_fmt_ts(tvb, offset);
+
+ offset += 8;
+ packet_len -=8;
+
+ col_append_fstr(pinfo->cinfo, COL_INFO, " ts=\"%s\"", buff);
+ }
+ }
+ break;
+
+ case TBCP_BURST_GRANTED:
+ {
+ proto_item *ti;
+ guint16 stop_talking_time;
+ guint16 participants;
+
+ /* Stop talking timer (now mandatory) */
+ t2timer_code = tvb_get_guint8(tvb, offset);
+ offset += 1;
+ packet_len -=1;
+ if (t2timer_code != 101) /* SHALL be 101 */
+ return offset;
+
+ item_len = tvb_get_guint8(tvb, offset);
+ offset += 1;
+ packet_len -= 1;
+ if (item_len != 2) /* SHALL be 2 */
+ return offset;
+
+ stop_talking_time = tvb_get_ntohs(tvb, offset);
+ ti = proto_tree_add_item(PoC1_tree, hf_rtcp_app_poc1_stt, tvb, offset, 2, ENC_BIG_ENDIAN );
+
+ /* Append text with meanings of value */
+ switch (stop_talking_time)
+ {
+ case 0:
+ proto_item_append_text(ti, " unknown");
+ break;
+ case 65535:
+ proto_item_append_text(ti, " infinity");
+ break;
+ default:
+ proto_item_append_text(ti, " seconds");
+ break;
+ }
+ offset += item_len;
+ packet_len -= item_len;
+
+ col_append_fstr(pinfo->cinfo, COL_INFO, " stop-talking-time=%u",
+ stop_talking_time);
+
+ /* Participants (optional) */
+ if (tvb_reported_length_remaining( tvb, offset) == 0)
+ {
+ return offset;
+ }
+ participants_code = tvb_get_guint8(tvb, offset);
+ offset += 1;
+ packet_len -=1;
+ if (participants_code != 100) /* SHALL be 100 */
+ return offset;
+
+ item_len = tvb_get_guint8(tvb, offset);
+ offset += 1;
+ packet_len -= 1;
+ if (item_len != 2) /* SHALL be 2 */
+ return offset;
+
+ participants = tvb_get_ntohs(tvb, offset);
+ ti = proto_tree_add_item(PoC1_tree, hf_rtcp_app_poc1_partic, tvb, offset, 2, ENC_BIG_ENDIAN );
+
+ /* Append text with meanings of extreme values */
+ switch (participants)
+ {
+ case 0:
+ proto_item_append_text(ti, " (not known)");
+ break;
+ case 65535:
+ proto_item_append_text(ti, " (or more)");
+ break;
+ default:
+ break;
+ }
+ offset += item_len;
+ packet_len -= item_len;
+
+ col_append_fstr(pinfo->cinfo, COL_INFO, " participants=%u",
+ participants);
+ }
+ break;
+
+ case TBCP_BURST_TAKEN_EXPECT_NO_REPLY:
+ case TBCP_BURST_TAKEN_EXPECT_REPLY:
+ {
+ guint16 participants;
+ proto_item *ti;
+
+ /* SSRC of PoC client */
+ proto_tree_add_item(PoC1_tree, hf_rtcp_app_poc1_ssrc_granted, tvb, offset, 4, ENC_BIG_ENDIAN );
+ offset += 4;
+ packet_len -= 4;
+
+ /* SDES type (must be CNAME) */
+ sdes_type = tvb_get_guint8( tvb, offset );
+ proto_tree_add_item( PoC1_tree, hf_rtcp_sdes_type, tvb, offset, 1, ENC_BIG_ENDIAN );
+ offset++;
+ packet_len--;
+ if (sdes_type != RTCP_SDES_CNAME)
+ {
+ return offset;
+ }
+
+ /* SIP URI */
+ item_len = tvb_get_guint8( tvb, offset );
+ /* Item len of 1 because its an FT_UINT_STRING... */
+ proto_tree_add_item(PoC1_tree, hf_rtcp_app_poc1_sip_uri,
+ tvb, offset, 1, ENC_ASCII|ENC_BIG_ENDIAN );
+ offset++;
+
+ col_append_fstr(pinfo->cinfo, COL_INFO, " CNAME=\"%s\"",
+ tvb_get_ephemeral_string(tvb, offset, item_len));
+
+ offset += item_len;
+ packet_len = packet_len - item_len - 1;
+
+ /* In the application dependent data, the TBCP Talk Burst Taken message SHALL carry
+ * a SSRC field and SDES items, CNAME and MAY carry SDES item NAME to identify the
+ * PoC Client that has been granted permission to send a Talk Burst.
+ *
+ * The SDES item NAME SHALL be included if it is known by the PoC Server.
+ * Therefore the length of the packet will vary depending on number of SDES items
+ * and the size of the SDES items.
+ */
+ if ( packet_len == 0 )
+ return offset;
+
+ /* SDES type (must be NAME if present) */
+ sdes_type = tvb_get_guint8( tvb, offset );
+ if (sdes_type == RTCP_SDES_NAME) {
+ proto_tree_add_item( PoC1_tree, hf_rtcp_sdes_type, tvb, offset, 1, ENC_BIG_ENDIAN );
+ offset++;
+ packet_len--;
+
+ /* Display name */
+ item_len = tvb_get_guint8( tvb, offset );
+ /* Item len of 1 because its an FT_UINT_STRING... */
+ proto_tree_add_item(PoC1_tree, hf_rtcp_app_poc1_disp_name,
+ tvb, offset, 1, ENC_ASCII|ENC_BIG_ENDIAN);
+ offset++;
+
+ col_append_fstr(pinfo->cinfo, COL_INFO, " DISPLAY-NAME=\"%s\"",
+ tvb_get_ephemeral_string(tvb, offset, item_len));
+
+ offset += item_len;
+ packet_len = packet_len - item_len - 1;
+
+ if (packet_len == 0) {
+ return offset;
+ }
+
+ /* Move onto next 4-byte boundary */
+ if (offset % 4) {
+ int padding2 = (4-(offset%4));
+ offset += padding2;
+ packet_len -= padding2;
+ }
+ }
+
+ /* Participants (optional) */
+ if (tvb_reported_length_remaining( tvb, offset) == 0) {
+ return offset;
+ }
+ participants_code = tvb_get_guint8(tvb, offset);
+ offset += 1;
+ packet_len -=1;
+ if (participants_code != 100) { /* SHALL be 100 */
+ return offset;
+ }
+ item_len = tvb_get_guint8(tvb, offset);
+ offset += 1;
+ packet_len -= 1;
+ if (item_len != 2) { /* SHALL be 2 */
+ return offset;
+ }
+
+ participants = tvb_get_ntohs(tvb, offset);
+ ti = proto_tree_add_item(PoC1_tree, hf_rtcp_app_poc1_partic, tvb, offset, 2, ENC_BIG_ENDIAN );
+
+ /* Append text with meanings of extreme values */
+ switch (participants) {
+ case 0:
+ proto_item_append_text(ti, " (not known)");
+ break;
+ case 65535:
+ proto_item_append_text(ti, " (or more)");
+ break;
+ default:
+ break;
+ }
+
+ col_append_fstr(pinfo->cinfo, COL_INFO, " Participants=%u",
+ participants);
+ offset += item_len;
+ packet_len -= item_len;
+ }
+ break;
+
+ case TBCP_BURST_DENY:
+ {
+ guint8 reason_code;
+
+ /* Reason code */
+ reason_code = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item( PoC1_tree, hf_rtcp_app_poc1_reason_code1, tvb, offset, 1, ENC_BIG_ENDIAN );
+ offset++;
+ packet_len--;
+
+ col_append_fstr(pinfo->cinfo, COL_INFO, " reason-code=\"%s\"",
+ val_to_str(reason_code,
+ rtcp_app_poc1_reason_code1_vals,
+ "Unknown"));
+
+ /* Reason phrase */
+ item_len = tvb_get_guint8( tvb, offset );
+ if ( item_len != 0 )
+ proto_tree_add_item( PoC1_tree, hf_rtcp_app_poc1_reason1_phrase, tvb, offset, 1, ENC_ASCII|ENC_BIG_ENDIAN );
+
+ offset += (item_len+1);
+ packet_len -= (item_len+1);
+ }
+ break;
+
+ case TBCP_BURST_RELEASE:
+ {
+ guint16 last_seq_no;
+ /*guint16 ignore_last_seq_no;*/
+
+ /* Sequence number of last RTP packet in burst */
+ proto_tree_add_item( PoC1_tree, hf_rtcp_app_poc1_last_pkt_seq_no, tvb, offset, 2, ENC_BIG_ENDIAN );
+ last_seq_no = tvb_get_ntohs(tvb, offset);
+
+ /* Bit 16 is ignore flag */
+ offset += 2;
+ proto_tree_add_item(PoC1_tree, hf_rtcp_app_poc1_ignore_seq_no, tvb, offset, 2, ENC_BIG_ENDIAN );
+ /*ignore_last_seq_no = (tvb_get_ntohs(tvb, offset) & 0x8000);*/
/* XXX: Was the intention to also show the "ignore_last_seq_no' flag in COL_INFO ? */
- col_append_fstr(pinfo->cinfo, COL_INFO, " last_rtp_seq_no=%u",
- last_seq_no);
-
- /* 15 bits of padding follows */
-
- offset += 2;
- packet_len-=4;
- }
- break;
-
- case TBCP_BURST_IDLE:
- break;
-
- case TBCP_BURST_REVOKE:
- {
- /* Reason code */
- guint16 reason_code = tvb_get_ntohs(tvb, offset);
- proto_tree_add_item( PoC1_tree, hf_rtcp_app_poc1_reason_code2, tvb, offset, 2, ENC_BIG_ENDIAN );
-
- /* The meaning of this field depends upon the reason code... */
- switch (reason_code)
- {
- case 1: /* Only one user */
- /* No additional info */
- break;
- case 2: /* Talk burst too long */
- /* Additional info is 16 bits with time (in seconds) client can request */
- proto_tree_add_item( PoC1_tree, hf_rtcp_app_poc1_new_time_request, tvb, offset + 2, 2, ENC_BIG_ENDIAN );
- break;
- case 3: /* No permission */
- /* No additional info */
- break;
- case 4: /* Pre-empted */
- /* No additional info */
- break;
- }
-
- col_append_fstr(pinfo->cinfo, COL_INFO, " reason-code=\"%s\"",
- val_to_str(reason_code,
- rtcp_app_poc1_reason_code2_vals,
- "Unknown"));
- offset += 4;
- packet_len-=4;
- }
- break;
-
- case TBCP_BURST_ACKNOWLEDGMENT:
- {
- guint8 subtype;
-
- /* Code of message being acknowledged */
- subtype = (tvb_get_guint8(tvb, offset) & 0xf8) >> 3;
- proto_tree_add_item( PoC1_tree, hf_rtcp_app_poc1_ack_subtype, tvb, offset, 1, ENC_BIG_ENDIAN );
-
- col_append_fstr(pinfo->cinfo, COL_INFO, " (for %s)",
- val_to_str(subtype,
- rtcp_app_poc1_floor_cnt_type_vals,
- "Unknown"));
-
- /* Reason code only seen if subtype was Connect */
- if (subtype == TBCP_CONNECT)
- {
- proto_tree_add_item( PoC1_tree, hf_rtcp_app_poc1_ack_reason_code, tvb, offset, 2, ENC_BIG_ENDIAN );
- }
-
- /* 16 bits of padding follow */
- offset += 4;
- packet_len -= 4;
- }
- break;
-
- case TBCP_QUEUE_STATUS_REQUEST:
- break;
-
- case TBCP_QUEUE_STATUS_RESPONSE:
- {
- guint16 position;
- proto_item *ti;
-
- /* Priority */
- proto_tree_add_item( PoC1_tree, hf_rtcp_app_poc1_qsresp_priority, tvb, offset, 1, ENC_BIG_ENDIAN );
-
- /* Queue position. 65535 indicates 'position not available' */
- position = tvb_get_ntohs(tvb, offset+1);
- ti = proto_tree_add_item( PoC1_tree, hf_rtcp_app_poc1_qsresp_position, tvb, offset+1, 2, ENC_BIG_ENDIAN );
- if (position == 0)
- {
- proto_item_append_text(ti, " (client is un-queued)");
- }
- if (position == 65535)
- {
- proto_item_append_text(ti, " (position not available)");
- }
-
- col_append_fstr(pinfo->cinfo, COL_INFO, " position=%u", position);
-
- /* 1 bytes of padding follows */
-
- offset += 4;
- packet_len -= 4;
- }
- break;
-
- case TBCP_DISCONNECT:
- break;
-
- case TBCP_CONNECT:
- {
- proto_item *content = proto_tree_add_text(PoC1_tree, tvb, offset, 2, "SDES item content");
- gboolean contents[5];
- unsigned int i;
- guint8 items_set = 0;
-
- proto_tree *content_tree = proto_item_add_subtree(content, ett_poc1_conn_contents);
- guint16 items_field = tvb_get_ntohs(tvb, offset );
-
- /* Dissect each defined bit flag in the SDES item content */
- for ( i = 0; i < 5; i++)
- {
- proto_tree_add_item( content_tree, hf_rtcp_app_poc1_conn_content[i], tvb, offset, 2, FALSE );
- contents[i] = items_field & (1 << (15-i));
- if (contents[i]) ++items_set;
- }
-
- /* Show how many flags were set */
- proto_item_append_text(content, " (%u items)", items_set);
-
- /* Session type */
- proto_tree_add_item( PoC1_tree, hf_rtcp_app_poc1_conn_session_type, tvb, offset + 2, 1, ENC_BIG_ENDIAN );
-
- /* Additional indications */
- proto_tree_add_item( PoC1_tree, hf_rtcp_app_poc1_conn_add_ind_mao, tvb, offset + 3, 1, ENC_BIG_ENDIAN );
-
- offset += 4;
- packet_len -= 4;
-
- /* One SDES item for every set flag in contents array */
- for ( i = 0; i < array_length(contents); ++i ) {
- if ( contents[i] ) {
- guint /*sdes_type2,*/ sdes_len2;
- /* (sdes_type2 not currently used...). Could complain if type
- doesn't match expected for item... */
- /*sdes_type2 = tvb_get_guint8( tvb, offset );*/
- offset += 1;
- sdes_len2 = tvb_get_guint8( tvb, offset );
-
- /* Add SDES field indicated as present */
- proto_tree_add_item( PoC1_tree, hf_rtcp_app_poc1_conn_sdes_items[i], tvb, offset, 1, FALSE );
-
- /* Move past field */
- offset += sdes_len2 + 1;
- packet_len -= (sdes_len2 + 2);
- }
- }
- break;
- }
-
- default:
- break;
- }
- offset += packet_len;
- return offset;
- }
- else if ( g_ascii_strncasecmp(ascii_name, mux_app_name_str,4 ) == 0 )
- {
- /* 3GPP Nb protocol extension (3GPP 29.414) for RTP Multiplexing */
- col_append_fstr(pinfo->cinfo, COL_INFO,"( %s ) subtype=%u",ascii_name, rtcp_subtype);
- offset += 4;
- packet_len -= 4;
- /* Applications specific data */
- if ( padding ) {
- /* If there's padding present, we have to remove that from the data part
- * The last octet of the packet contains the length of the padding
- */
- packet_len -= tvb_get_guint8( tvb, offset + packet_len - 1 );
- }
- if (packet_len == 4)
- {
- guint16 local_port = 0;
-
- proto_item* mux_item = proto_tree_add_item(tree, hf_rtcp_app_mux, tvb, offset, packet_len, ENC_NA);
- proto_tree* mux_tree = proto_item_add_subtree( mux_item, ett_mux );
- proto_tree_add_item( mux_tree, hf_rtcp_app_mux_mux, tvb, offset, 1, ENC_BIG_ENDIAN );
- proto_tree_add_item( mux_tree, hf_rtcp_app_mux_cp, tvb, offset, 1, ENC_BIG_ENDIAN );
- proto_tree_add_item( mux_tree, hf_rtcp_app_mux_selection, tvb, offset, 1, ENC_BIG_ENDIAN );
- local_port = tvb_get_ntohs( tvb, offset+2 );
- proto_tree_add_uint( mux_tree, hf_rtcp_app_mux_localmuxport, tvb, offset+2, 2, local_port*2 );
- }
- else
- {
- /* fall back to just showing the data if it's the wrong length */
- proto_tree_add_item( tree, hf_rtcp_app_data, tvb, offset, packet_len, ENC_NA );
- }
- offset += packet_len;
-
- return offset;
- }
- else
- {
- tvbuff_t *next_tvb; /* tvb to pass to subdissector */
- /* tvb == Pass the entire APP payload so the subdissector can have access to the
- * entire data set
- */
- next_tvb = tvb_new_subset(tvb, offset-8, app_length+4, app_length+4);
- /* look for registered sub-dissectors */
- if (dissector_try_string(rtcp_dissector_table, ascii_name, next_tvb, pinfo, tree)) {
- /* found subdissector - return tvb_length */
- offset += 4;
- packet_len -= 4;
- if ( padding ) {
- /* If there's padding present, we have to remove that from the data part
- * The last octet of the packet contains the length of the padding
- */
- packet_len -= tvb_get_guint8( tvb, offset + packet_len - 1 );
- }
- offset += packet_len;
- return offset;
- }
- else
- {
- /* Unhandled application type, just show app name and raw data */
- col_append_fstr(pinfo->cinfo, COL_INFO,"( %s ) subtype=%u",ascii_name, rtcp_subtype);
- offset += 4;
- packet_len -= 4;
- /* Applications specific data */
- if ( padding ) {
- /* If there's padding present, we have to remove that from the data part
- * The last octet of the packet contains the length of the padding
- */
- packet_len -= tvb_get_guint8( tvb, offset + packet_len - 1 );
- }
- proto_tree_add_item( tree, hf_rtcp_app_data, tvb, offset, packet_len, ENC_NA );
- offset += packet_len;
-
- return offset;
- }
- }
+ col_append_fstr(pinfo->cinfo, COL_INFO, " last_rtp_seq_no=%u",
+ last_seq_no);
+
+ /* 15 bits of padding follows */
+
+ offset += 2;
+ packet_len-=4;
+ }
+ break;
+
+ case TBCP_BURST_IDLE:
+ break;
+
+ case TBCP_BURST_REVOKE:
+ {
+ /* Reason code */
+ guint16 reason_code = tvb_get_ntohs(tvb, offset);
+ proto_tree_add_item( PoC1_tree, hf_rtcp_app_poc1_reason_code2, tvb, offset, 2, ENC_BIG_ENDIAN );
+
+ /* The meaning of this field depends upon the reason code... */
+ switch (reason_code)
+ {
+ case 1: /* Only one user */
+ /* No additional info */
+ break;
+ case 2: /* Talk burst too long */
+ /* Additional info is 16 bits with time (in seconds) client can request */
+ proto_tree_add_item( PoC1_tree, hf_rtcp_app_poc1_new_time_request, tvb, offset + 2, 2, ENC_BIG_ENDIAN );
+ break;
+ case 3: /* No permission */
+ /* No additional info */
+ break;
+ case 4: /* Pre-empted */
+ /* No additional info */
+ break;
+ }
+
+ col_append_fstr(pinfo->cinfo, COL_INFO, " reason-code=\"%s\"",
+ val_to_str(reason_code,
+ rtcp_app_poc1_reason_code2_vals,
+ "Unknown"));
+ offset += 4;
+ packet_len-=4;
+ }
+ break;
+
+ case TBCP_BURST_ACKNOWLEDGMENT:
+ {
+ guint8 subtype;
+
+ /* Code of message being acknowledged */
+ subtype = (tvb_get_guint8(tvb, offset) & 0xf8) >> 3;
+ proto_tree_add_item( PoC1_tree, hf_rtcp_app_poc1_ack_subtype, tvb, offset, 1, ENC_BIG_ENDIAN );
+
+ col_append_fstr(pinfo->cinfo, COL_INFO, " (for %s)",
+ val_to_str(subtype,
+ rtcp_app_poc1_floor_cnt_type_vals,
+ "Unknown"));
+
+ /* Reason code only seen if subtype was Connect */
+ if (subtype == TBCP_CONNECT)
+ {
+ proto_tree_add_item( PoC1_tree, hf_rtcp_app_poc1_ack_reason_code, tvb, offset, 2, ENC_BIG_ENDIAN );
+ }
+
+ /* 16 bits of padding follow */
+ offset += 4;
+ packet_len -= 4;
+ }
+ break;
+
+ case TBCP_QUEUE_STATUS_REQUEST:
+ break;
+
+ case TBCP_QUEUE_STATUS_RESPONSE:
+ {
+ guint16 position;
+ proto_item *ti;
+
+ /* Priority */
+ proto_tree_add_item( PoC1_tree, hf_rtcp_app_poc1_qsresp_priority, tvb, offset, 1, ENC_BIG_ENDIAN );
+
+ /* Queue position. 65535 indicates 'position not available' */
+ position = tvb_get_ntohs(tvb, offset+1);
+ ti = proto_tree_add_item( PoC1_tree, hf_rtcp_app_poc1_qsresp_position, tvb, offset+1, 2, ENC_BIG_ENDIAN );
+ if (position == 0)
+ {
+ proto_item_append_text(ti, " (client is un-queued)");
+ }
+ if (position == 65535)
+ {
+ proto_item_append_text(ti, " (position not available)");
+ }
+
+ col_append_fstr(pinfo->cinfo, COL_INFO, " position=%u", position);
+
+ /* 1 bytes of padding follows */
+
+ offset += 4;
+ packet_len -= 4;
+ }
+ break;
+
+ case TBCP_DISCONNECT:
+ break;
+
+ case TBCP_CONNECT:
+ {
+ proto_item *content = proto_tree_add_text(PoC1_tree, tvb, offset, 2, "SDES item content");
+ gboolean contents[5];
+ unsigned int i;
+ guint8 items_set = 0;
+
+ proto_tree *content_tree = proto_item_add_subtree(content, ett_poc1_conn_contents);
+ guint16 items_field = tvb_get_ntohs(tvb, offset );
+
+ /* Dissect each defined bit flag in the SDES item content */
+ for ( i = 0; i < 5; i++)
+ {
+ proto_tree_add_item( content_tree, hf_rtcp_app_poc1_conn_content[i], tvb, offset, 2, ENC_BIG_ENDIAN );
+ contents[i] = items_field & (1 << (15-i));
+ if (contents[i]) ++items_set;
+ }
+
+ /* Show how many flags were set */
+ proto_item_append_text(content, " (%u items)", items_set);
+
+ /* Session type */
+ proto_tree_add_item( PoC1_tree, hf_rtcp_app_poc1_conn_session_type, tvb, offset + 2, 1, ENC_BIG_ENDIAN );
+
+ /* Additional indications */
+ proto_tree_add_item( PoC1_tree, hf_rtcp_app_poc1_conn_add_ind_mao, tvb, offset + 3, 1, ENC_BIG_ENDIAN );
+
+ offset += 4;
+ packet_len -= 4;
+
+ /* One SDES item for every set flag in contents array */
+ for ( i = 0; i < array_length(contents); ++i ) {
+ if ( contents[i] ) {
+ guint /*sdes_type2,*/ sdes_len2;
+ /* (sdes_type2 not currently used...). Could complain if type
+ doesn't match expected for item... */
+ /*sdes_type2 = tvb_get_guint8( tvb, offset );*/
+ offset += 1;
+ sdes_len2 = tvb_get_guint8( tvb, offset );
+
+ /* Add SDES field indicated as present */
+ proto_tree_add_item( PoC1_tree, hf_rtcp_app_poc1_conn_sdes_items[i], tvb, offset, 1, ENC_BIG_ENDIAN );
+
+ /* Move past field */
+ offset += sdes_len2 + 1;
+ packet_len -= (sdes_len2 + 2);
+ }
+ }
+ break;
+ }
+
+ default:
+ break;
+ }
+ offset += packet_len;
+ return offset;
+ }
+ else if ( g_ascii_strncasecmp(ascii_name, mux_app_name_str,4 ) == 0 )
+ {
+ /* 3GPP Nb protocol extension (3GPP 29.414) for RTP Multiplexing */
+ col_append_fstr(pinfo->cinfo, COL_INFO,"( %s ) subtype=%u",ascii_name, rtcp_subtype);
+ offset += 4;
+ packet_len -= 4;
+ /* Applications specific data */
+ if ( padding ) {
+ /* If there's padding present, we have to remove that from the data part
+ * The last octet of the packet contains the length of the padding
+ */
+ packet_len -= tvb_get_guint8( tvb, offset + packet_len - 1 );
+ }
+ if (packet_len == 4)
+ {
+ guint16 local_port = 0;
+
+ proto_item* mux_item = proto_tree_add_item(tree, hf_rtcp_app_mux, tvb, offset, packet_len, ENC_NA);
+ proto_tree* mux_tree = proto_item_add_subtree( mux_item, ett_mux );
+ proto_tree_add_item( mux_tree, hf_rtcp_app_mux_mux, tvb, offset, 1, ENC_BIG_ENDIAN );
+ proto_tree_add_item( mux_tree, hf_rtcp_app_mux_cp, tvb, offset, 1, ENC_BIG_ENDIAN );
+ proto_tree_add_item( mux_tree, hf_rtcp_app_mux_selection, tvb, offset, 1, ENC_BIG_ENDIAN );
+ local_port = tvb_get_ntohs( tvb, offset+2 );
+ proto_tree_add_uint( mux_tree, hf_rtcp_app_mux_localmuxport, tvb, offset+2, 2, local_port*2 );
+ }
+ else
+ {
+ /* fall back to just showing the data if it's the wrong length */
+ proto_tree_add_item( tree, hf_rtcp_app_data, tvb, offset, packet_len, ENC_NA );
+ }
+ offset += packet_len;
+
+ return offset;
+ }
+ else
+ {
+ tvbuff_t *next_tvb; /* tvb to pass to subdissector */
+ /* tvb == Pass the entire APP payload so the subdissector can have access to the
+ * entire data set
+ */
+ next_tvb = tvb_new_subset(tvb, offset-8, app_length+4, app_length+4);
+ /* look for registered sub-dissectors */
+ if (dissector_try_string(rtcp_dissector_table, ascii_name, next_tvb, pinfo, tree)) {
+ /* found subdissector - return tvb_length */
+ offset += 4;
+ packet_len -= 4;
+ if ( padding ) {
+ /* If there's padding present, we have to remove that from the data part
+ * The last octet of the packet contains the length of the padding
+ */
+ packet_len -= tvb_get_guint8( tvb, offset + packet_len - 1 );
+ }
+ offset += packet_len;
+ return offset;
+ }
+ else
+ {
+ /* Unhandled application type, just show app name and raw data */
+ col_append_fstr(pinfo->cinfo, COL_INFO,"( %s ) subtype=%u",ascii_name, rtcp_subtype);
+ offset += 4;
+ packet_len -= 4;
+ /* Applications specific data */
+ if ( padding ) {
+ /* If there's padding present, we have to remove that from the data part
+ * The last octet of the packet contains the length of the padding
+ */
+ packet_len -= tvb_get_guint8( tvb, offset + packet_len - 1 );
+ }
+ proto_tree_add_item( tree, hf_rtcp_app_data, tvb, offset, packet_len, ENC_NA );
+ offset += packet_len;
+
+ return offset;
+ }
+ }
}
@@ -1599,163 +1599,163 @@ static int
dissect_rtcp_bye( tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *tree,
unsigned int count )
{
- unsigned int chunk = 1;
- unsigned int reason_length = 0;
- gint reason_offset = 0;
- char* reason_text = NULL;
-
- while ( chunk <= count ) {
- /* source identifier, 32 bits */
- proto_tree_add_item( tree, hf_rtcp_ssrc_source, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset += 4;
- chunk++;
- }
-
- if ( tvb_reported_length_remaining( tvb, offset ) > 0 ) {
- /* Bye reason consists of an 8 bit length l and a string with length l */
- reason_length = tvb_get_guint8( tvb, offset );
- proto_tree_add_item( tree, hf_rtcp_sdes_length, tvb, offset, 1, ENC_BIG_ENDIAN );
- offset++;
-
- reason_offset = offset;
- reason_text = (char*)tvb_get_ephemeral_string(tvb, offset, reason_length);
- proto_tree_add_string( tree, hf_rtcp_sdes_text, tvb, offset, reason_length, reason_text );
- offset += reason_length;
- }
-
- /* BYE packet padded out if string didn't fit in previous word */
- if (offset % 4)
- {
- gint pad_size = (4 - (offset % 4));
- int i;
-
- /* Check padding */
- for (i = 0; i < pad_size; i++)
- {
- if ((!(tvb_offset_exists(tvb, offset + i))) ||
- (tvb_get_guint8(tvb, offset + i) != 0))
- {
- proto_item *ti;
- ti = proto_tree_add_none_format(tree, hf_rtcp_bye_reason_not_padded,
- tvb, reason_offset, reason_length,
- "Reason string is not NULL padded (see RFC3550, section 6.6)");
- expert_add_info_format(pinfo, ti, PI_MALFORMED, PI_WARN,
- "Reason string is not NULL padded (see RFC3550, section 6.6)");
- PROTO_ITEM_SET_GENERATED(ti);
- }
- }
-
- offset += pad_size;
- }
-
- return offset;
+ unsigned int chunk = 1;
+ unsigned int reason_length = 0;
+ gint reason_offset = 0;
+ char* reason_text = NULL;
+
+ while ( chunk <= count ) {
+ /* source identifier, 32 bits */
+ proto_tree_add_item( tree, hf_rtcp_ssrc_source, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+ chunk++;
+ }
+
+ if ( tvb_reported_length_remaining( tvb, offset ) > 0 ) {
+ /* Bye reason consists of an 8 bit length l and a string with length l */
+ reason_length = tvb_get_guint8( tvb, offset );
+ proto_tree_add_item( tree, hf_rtcp_sdes_length, tvb, offset, 1, ENC_BIG_ENDIAN );
+ offset++;
+
+ reason_offset = offset;
+ reason_text = (char*)tvb_get_ephemeral_string(tvb, offset, reason_length);
+ proto_tree_add_string( tree, hf_rtcp_sdes_text, tvb, offset, reason_length, reason_text );
+ offset += reason_length;
+ }
+
+ /* BYE packet padded out if string didn't fit in previous word */
+ if (offset % 4)
+ {
+ gint pad_size = (4 - (offset % 4));
+ int i;
+
+ /* Check padding */
+ for (i = 0; i < pad_size; i++)
+ {
+ if ((!(tvb_offset_exists(tvb, offset + i))) ||
+ (tvb_get_guint8(tvb, offset + i) != 0))
+ {
+ proto_item *ti;
+ ti = proto_tree_add_none_format(tree, hf_rtcp_bye_reason_not_padded,
+ tvb, reason_offset, reason_length,
+ "Reason string is not NULL padded (see RFC3550, section 6.6)");
+ expert_add_info_format(pinfo, ti, PI_MALFORMED, PI_WARN,
+ "Reason string is not NULL padded (see RFC3550, section 6.6)");
+ PROTO_ITEM_SET_GENERATED(ti);
+ }
+ }
+
+ offset += pad_size;
+ }
+
+ return offset;
}
static int
dissect_rtcp_sdes( tvbuff_t *tvb, int offset, proto_tree *tree,
unsigned int count )
{
- unsigned int chunk = 1;
- proto_item *sdes_item;
- proto_tree *sdes_tree;
- proto_tree *sdes_item_tree;
- proto_item *ti;
- int start_offset;
- int items_start_offset;
- guint32 ssrc;
- unsigned int item_len = 0;
- unsigned int sdes_type = 0;
- unsigned int prefix_len = 0;
-
- while ( chunk <= count ) {
- /* Create a subtree for this chunk; we don't yet know
- the length. */
- start_offset = offset;
-
- ssrc = tvb_get_ntohl( tvb, offset );
- sdes_item = proto_tree_add_text(tree, tvb, offset, -1,
- "Chunk %u, SSRC/CSRC 0x%X", chunk, ssrc);
- sdes_tree = proto_item_add_subtree( sdes_item, ett_sdes );
-
- /* SSRC_n source identifier, 32 bits */
- proto_tree_add_item( sdes_tree, hf_rtcp_ssrc_source, tvb, offset, 4, ENC_BIG_ENDIAN );
- offset += 4;
-
- /* Create a subtree for the SDES items; we don't yet know
- the length */
- items_start_offset = offset;
- ti = proto_tree_add_text(sdes_tree, tvb, offset, -1,
- "SDES items" );
- sdes_item_tree = proto_item_add_subtree( ti, ett_sdes_item );
-
- /*
- * Not every message is ended with "null" bytes, so check for
- * end of frame as well.
- */
- while ( tvb_reported_length_remaining( tvb, offset ) > 0 ) {
- /* ID, 8 bits */
- sdes_type = tvb_get_guint8( tvb, offset );
- proto_tree_add_item( sdes_item_tree, hf_rtcp_sdes_type, tvb, offset, 1, ENC_BIG_ENDIAN );
- offset++;
-
- if ( sdes_type == RTCP_SDES_END ) {
- /* End of list */
- break;
- }
-
- /* Item length, 8 bits */
- item_len = tvb_get_guint8( tvb, offset );
- proto_tree_add_item( sdes_item_tree, hf_rtcp_sdes_length, tvb, offset, 1, ENC_BIG_ENDIAN );
- offset++;
-
- if ( item_len != 0 ) {
- if ( sdes_type == RTCP_SDES_PRIV ) {
- /* PRIV adds two items between the
- * SDES length and value - an 8 bit
- * length giving the length of a
- * "prefix string", and the string.
- */
- prefix_len = tvb_get_guint8( tvb, offset );
- if ( prefix_len + 1 > item_len ) {
- proto_tree_add_uint_format( sdes_item_tree,
- hf_rtcp_sdes_prefix_len, tvb,
- offset, 1, prefix_len,
- "Prefix length: %u (bogus, must be <= %u)",
- prefix_len, item_len - 1);
- offset += item_len;
- continue;
- }
- proto_tree_add_item( sdes_item_tree, hf_rtcp_sdes_prefix_len, tvb, offset, 1, ENC_BIG_ENDIAN );
- offset++;
-
- proto_tree_add_item( sdes_item_tree, hf_rtcp_sdes_prefix_string, tvb, offset, prefix_len, ENC_ASCII|ENC_NA );
- offset += prefix_len;
- item_len -= prefix_len +1;
- if ( item_len == 0 )
- continue;
- }
- proto_tree_add_item( sdes_item_tree, hf_rtcp_sdes_text, tvb, offset, item_len, ENC_ASCII|ENC_NA );
- offset += item_len;
- }
- }
-
- /* Set the length of the items subtree. */
- proto_item_set_len(ti, offset - items_start_offset);
-
- /* 32 bits = 4 bytes, so.....
- * If offset % 4 != 0, we divide offset by 4, add one and then
- * multiply by 4 again to reach the boundary
- */
- if ( offset % 4 != 0 )
- offset = ((offset / 4) + 1 ) * 4;
-
- /* Set the length of this chunk. */
- proto_item_set_len(sdes_item, offset - start_offset);
-
- chunk++;
- }
-
- return offset;
+ unsigned int chunk = 1;
+ proto_item *sdes_item;
+ proto_tree *sdes_tree;
+ proto_tree *sdes_item_tree;
+ proto_item *ti;
+ int start_offset;
+ int items_start_offset;
+ guint32 ssrc;
+ unsigned int item_len = 0;
+ unsigned int sdes_type = 0;
+ unsigned int prefix_len = 0;
+
+ while ( chunk <= count ) {
+ /* Create a subtree for this chunk; we don't yet know
+ the length. */
+ start_offset = offset;
+
+ ssrc = tvb_get_ntohl( tvb, offset );
+ sdes_item = proto_tree_add_text(tree, tvb, offset, -1,
+ "Chunk %u, SSRC/CSRC 0x%X", chunk, ssrc);
+ sdes_tree = proto_item_add_subtree( sdes_item, ett_sdes );
+
+ /* SSRC_n source identifier, 32 bits */
+ proto_tree_add_item( sdes_tree, hf_rtcp_ssrc_source, tvb, offset, 4, ENC_BIG_ENDIAN );
+ offset += 4;
+
+ /* Create a subtree for the SDES items; we don't yet know
+ the length */
+ items_start_offset = offset;
+ ti = proto_tree_add_text(sdes_tree, tvb, offset, -1,
+ "SDES items" );
+ sdes_item_tree = proto_item_add_subtree( ti, ett_sdes_item );
+
+ /*
+ * Not every message is ended with "null" bytes, so check for
+ * end of frame as well.
+ */
+ while ( tvb_reported_length_remaining( tvb, offset ) > 0 ) {
+ /* ID, 8 bits */
+ sdes_type = tvb_get_guint8( tvb, offset );
+ proto_tree_add_item( sdes_item_tree, hf_rtcp_sdes_type, tvb, offset, 1, ENC_BIG_ENDIAN );
+ offset++;
+
+ if ( sdes_type == RTCP_SDES_END ) {
+ /* End of list */
+ break;
+ }
+
+ /* Item length, 8 bits */
+ item_len = tvb_get_guint8( tvb, offset );
+ proto_tree_add_item( sdes_item_tree, hf_rtcp_sdes_length, tvb, offset, 1, ENC_BIG_ENDIAN );
+ offset++;
+
+ if ( item_len != 0 ) {
+ if ( sdes_type == RTCP_SDES_PRIV ) {
+ /* PRIV adds two items between the
+ * SDES length and value - an 8 bit
+ * length giving the length of a
+ * "prefix string", and the string.
+ */
+ prefix_len = tvb_get_guint8( tvb, offset );
+ if ( prefix_len + 1 > item_len ) {
+ proto_tree_add_uint_format( sdes_item_tree,
+ hf_rtcp_sdes_prefix_len, tvb,
+ offset, 1, prefix_len,
+ "Prefix length: %u (bogus, must be <= %u)",
+ prefix_len, item_len - 1);
+ offset += item_len;
+ continue;
+ }
+ proto_tree_add_item( sdes_item_tree, hf_rtcp_sdes_prefix_len, tvb, offset, 1, ENC_BIG_ENDIAN );
+ offset++;
+
+ proto_tree_add_item( sdes_item_tree, hf_rtcp_sdes_prefix_string, tvb, offset, prefix_len, ENC_ASCII|ENC_NA );
+ offset += prefix_len;
+ item_len -= prefix_len +1;
+ if ( item_len == 0 )
+ continue;
+ }
+ proto_tree_add_item( sdes_item_tree, hf_rtcp_sdes_text, tvb, offset, item_len, ENC_ASCII|ENC_NA );
+ offset += item_len;
+ }
+ }
+
+ /* Set the length of the items subtree. */
+ proto_item_set_len(ti, offset - items_start_offset);
+
+ /* 32 bits = 4 bytes, so.....
+ * If offset % 4 != 0, we divide offset by 4, add one and then
+ * multiply by 4 again to reach the boundary
+ */
+ if ( offset % 4 != 0 )
+ offset = ((offset / 4) + 1 ) * 4;
+
+ /* Set the length of this chunk. */
+ proto_item_set_len(sdes_item, offset - start_offset);
+
+ chunk++;
+ }
+
+ return offset;
}
static void parse_xr_type_specific_field(tvbuff_t *tvb, gint offset, guint block_type, proto_tree *tree)
@@ -1784,33 +1784,33 @@ static void parse_xr_type_specific_field(tvbuff_t *tvb, gint offset, guint block
static gboolean validate_xr_block_length(tvbuff_t *tvb, packet_info *pinfo, int offset, guint block_type, guint block_len, proto_tree *tree)
{
- proto_item *ti;
+ proto_item *ti;
- ti = proto_tree_add_uint(tree, hf_rtcp_xr_block_length, tvb, offset, 2, block_len);
+ ti = proto_tree_add_uint(tree, hf_rtcp_xr_block_length, tvb, offset, 2, block_len);
switch (block_type) {
case RTCP_XR_REF_TIME:
if (block_len != 2)
- expert_add_info_format(pinfo, ti, PI_PROTOCOL, PI_WARN,
- "Invalid block length, should be 2");
+ expert_add_info_format(pinfo, ti, PI_PROTOCOL, PI_WARN,
+ "Invalid block length, should be 2");
return FALSE;
case RTCP_XR_STATS_SUMRY:
if (block_len != 9)
- expert_add_info_format(pinfo, ti, PI_PROTOCOL, PI_WARN,
- "Invalid block length, should be 9");
+ expert_add_info_format(pinfo, ti, PI_PROTOCOL, PI_WARN,
+ "Invalid block length, should be 9");
return FALSE;
case RTCP_XR_VOIP_METRCS:
case RTCP_XR_BT_XNQ:
- if (block_len != 8)
- expert_add_info_format(pinfo, ti, PI_PROTOCOL, PI_WARN,
- "Invalid block length, should be 8");
+ if (block_len != 8)
+ expert_add_info_format(pinfo, ti, PI_PROTOCOL, PI_WARN,
+ "Invalid block length, should be 8");
return FALSE;
case RTCP_XR_IDMS:
if (block_len != 7)
- expert_add_info_format(pinfo, ti, PI_PROTOCOL, PI_WARN,
- "Invalid block length, should be 7");
+ expert_add_info_format(pinfo, ti, PI_PROTOCOL, PI_WARN,
+ "Invalid block length, should be 7");
return FALSE;
default:
@@ -2146,7 +2146,7 @@ dissect_rtcp_xr(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *tree,
break;
}
- case RTCP_XR_BT_XNQ: { /* BT XNQ block as defined in RFC5093 */
+ case RTCP_XR_BT_XNQ: { /* BT XNQ block as defined in RFC5093 */
proto_tree_add_item(content_tree, hf_rtcp_xr_btxnq_begseq, tvb, offset, 2, ENC_BIG_ENDIAN); /* Begin Sequence number */
proto_tree_add_item(content_tree, hf_rtcp_xr_btxnq_endseq, tvb, offset+2, 2, ENC_BIG_ENDIAN); /* End Sequence number */
@@ -2190,36 +2190,36 @@ dissect_rtcp_xr(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *tree,
break;
}
case RTCP_XR_IDMS:
- offset -= 3;
- proto_tree_add_item(content_tree, hf_rtcp_xr_idms_spst, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset+=3;
- proto_tree_add_item(content_tree, hf_rtcp_xr_idms_pt, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset+=4;
- proto_tree_add_item(content_tree, hf_rtcp_xr_idms_msci, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset+=4;
- proto_tree_add_item(content_tree, hf_rtcp_xr_idms_source_ssrc, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset+=4;
- proto_tree_add_item(content_tree, hf_rtcp_xr_idms_ntp_rcv_ts_msw, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset+=4;
- proto_tree_add_item(content_tree, hf_rtcp_xr_idms_ntp_rcv_ts_lsw, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset+=4;
- item = proto_tree_add_item(content_tree, hf_rtcp_ntp, tvb, offset-8, 8, ENC_TIME_NTP|ENC_BIG_ENDIAN);
- PROTO_ITEM_SET_GENERATED(item);
-
- proto_tree_add_item(content_tree, hf_rtcp_xr_idms_rtp_ts, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset+=4;
- proto_tree_add_item(content_tree, hf_rtcp_xr_idms_ntp_pres_ts, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset+=4;
-
- tmp_ts = tvb_get_ntohl(tvb,offset-4);
- hour = ( (int) ( tmp_ts >> 16 ) ) / 3600;
- min = (( (int) ( tmp_ts >> 16 ) ) - hour * 3600) / 60;
- sec = (( (int) ( tmp_ts >> 16 ) ) - hour * 3600 - min * 60);
- msec = ( (int) ( tmp_ts & 0x0000FFFF ) ) / 66;
-
- item = proto_tree_add_text( content_tree, tvb, offset-4, 4, "short NTP timestamp of presentation: %d:%02d:%02d:%03d [h:m:s:ms] ", hour,min,sec,msec);
- PROTO_ITEM_SET_GENERATED(item);
- break;
+ offset -= 3;
+ proto_tree_add_item(content_tree, hf_rtcp_xr_idms_spst, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset+=3;
+ proto_tree_add_item(content_tree, hf_rtcp_xr_idms_pt, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset+=4;
+ proto_tree_add_item(content_tree, hf_rtcp_xr_idms_msci, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset+=4;
+ proto_tree_add_item(content_tree, hf_rtcp_xr_idms_source_ssrc, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset+=4;
+ proto_tree_add_item(content_tree, hf_rtcp_xr_idms_ntp_rcv_ts_msw, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset+=4;
+ proto_tree_add_item(content_tree, hf_rtcp_xr_idms_ntp_rcv_ts_lsw, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset+=4;
+ item = proto_tree_add_item(content_tree, hf_rtcp_ntp, tvb, offset-8, 8, ENC_TIME_NTP|ENC_BIG_ENDIAN);
+ PROTO_ITEM_SET_GENERATED(item);
+
+ proto_tree_add_item(content_tree, hf_rtcp_xr_idms_rtp_ts, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset+=4;
+ proto_tree_add_item(content_tree, hf_rtcp_xr_idms_ntp_pres_ts, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset+=4;
+
+ tmp_ts = tvb_get_ntohl(tvb,offset-4);
+ hour = ( (int) ( tmp_ts >> 16 ) ) / 3600;
+ min = (( (int) ( tmp_ts >> 16 ) ) - hour * 3600) / 60;
+ sec = (( (int) ( tmp_ts >> 16 ) ) - hour * 3600 - min * 60);
+ msec = ( (int) ( tmp_ts & 0x0000FFFF ) ) / 66;
+
+ item = proto_tree_add_text( content_tree, tvb, offset-4, 4, "short NTP timestamp of presentation: %d:%02d:%02d:%03d [h:m:s:ms] ", hour,min,sec,msec);
+ PROTO_ITEM_SET_GENERATED(item);
+ break;
default:
/* skip over the unknown block */
offset += content_length;
@@ -2234,296 +2234,296 @@ static int
dissect_rtcp_rr( packet_info *pinfo, tvbuff_t *tvb, int offset, proto_tree *tree,
unsigned int count, unsigned int packet_length )
{
- unsigned int counter = 1;
- proto_tree *ssrc_tree = (proto_tree*) NULL;
- proto_tree *ssrc_sub_tree = (proto_tree*) NULL;
- proto_tree *high_sec_tree = (proto_tree*) NULL;
- proto_item *ti = (proto_item*) NULL;
- guint8 rr_flt;
- int rr_offset = offset;
-
-
- while ( counter <= count ) {
- guint32 lsr, dlsr;
-
- /* Create a new subtree for a length of 24 bytes */
- ti = proto_tree_add_text(tree, tvb, offset, 24,
- "Source %u", counter );
- ssrc_tree = proto_item_add_subtree( ti, ett_ssrc );
-
- /* SSRC_n source identifier, 32 bits */
- proto_tree_add_item( ssrc_tree, hf_rtcp_ssrc_source, tvb, offset, 4, ENC_BIG_ENDIAN );
- offset += 4;
-
- ti = proto_tree_add_text(ssrc_tree, tvb, offset, 20, "SSRC contents" );
- ssrc_sub_tree = proto_item_add_subtree( ti, ett_ssrc_item );
-
- /* Fraction lost, 8bits */
- rr_flt = tvb_get_guint8( tvb, offset );
- proto_tree_add_uint_format( ssrc_sub_tree, hf_rtcp_ssrc_fraction, tvb,
- offset, 1, rr_flt, "Fraction lost: %u / 256", rr_flt );
- offset++;
-
- /* Cumulative number of packets lost, 24 bits */
- proto_tree_add_item( ssrc_sub_tree, hf_rtcp_ssrc_cum_nr, tvb,
- offset, 3, ENC_BIG_ENDIAN );
- offset += 3;
-
- /* Extended highest sequence nr received, 32 bits
- * Just for the sake of it, let's add another subtree
- * because this might be a little clearer
- */
- ti = proto_tree_add_item( ssrc_tree, hf_rtcp_ssrc_ext_high_seq,
- tvb, offset, 4, ENC_BIG_ENDIAN );
- high_sec_tree = proto_item_add_subtree( ti, ett_ssrc_ext_high );
- /* Sequence number cycles */
- proto_tree_add_item( high_sec_tree, hf_rtcp_ssrc_high_cycles,
- tvb, offset, 2, ENC_BIG_ENDIAN );
- offset += 2;
- /* highest sequence number received */
- proto_tree_add_item( high_sec_tree, hf_rtcp_ssrc_high_seq,
- tvb, offset, 2, ENC_BIG_ENDIAN );
- offset += 2;
-
- /* Interarrival jitter */
- proto_tree_add_item( ssrc_tree, hf_rtcp_ssrc_jitter, tvb,
- offset, 4, ENC_BIG_ENDIAN );
- offset += 4;
-
- /* Last SR timestamp */
- lsr = tvb_get_ntohl( tvb, offset );
- proto_tree_add_item( ssrc_tree, hf_rtcp_ssrc_lsr, tvb,
- offset, 4, ENC_BIG_ENDIAN );
- offset += 4;
-
- /* Delay since last SR timestamp */
- dlsr = tvb_get_ntohl( tvb, offset );
- ti = proto_tree_add_item( ssrc_tree, hf_rtcp_ssrc_dlsr, tvb,
- offset, 4, ENC_BIG_ENDIAN );
- proto_item_append_text(ti, " (%d milliseconds)",
- (int)(((double)dlsr/(double)65536) * 1000.0));
- offset += 4;
-
- /* Do roundtrip calculation */
- if (global_rtcp_show_roundtrip_calculation)
- {
- /* Based on delay since SR was sent in other direction */
- calculate_roundtrip_delay(tvb, pinfo, ssrc_tree, lsr, dlsr);
- }
-
- counter++;
- }
-
- /* If length remaining, assume profile-specific extension bytes */
- if ((offset-rr_offset) < (int)packet_length)
- {
- proto_tree_add_item(tree, hf_rtcp_profile_specific_extension, tvb, offset,
- packet_length - (offset - rr_offset), ENC_NA);
- offset = rr_offset + packet_length;
- }
-
- return offset;
+ unsigned int counter = 1;
+ proto_tree *ssrc_tree = (proto_tree*) NULL;
+ proto_tree *ssrc_sub_tree = (proto_tree*) NULL;
+ proto_tree *high_sec_tree = (proto_tree*) NULL;
+ proto_item *ti = (proto_item*) NULL;
+ guint8 rr_flt;
+ int rr_offset = offset;
+
+
+ while ( counter <= count ) {
+ guint32 lsr, dlsr;
+
+ /* Create a new subtree for a length of 24 bytes */
+ ti = proto_tree_add_text(tree, tvb, offset, 24,
+ "Source %u", counter );
+ ssrc_tree = proto_item_add_subtree( ti, ett_ssrc );
+
+ /* SSRC_n source identifier, 32 bits */
+ proto_tree_add_item( ssrc_tree, hf_rtcp_ssrc_source, tvb, offset, 4, ENC_BIG_ENDIAN );
+ offset += 4;
+
+ ti = proto_tree_add_text(ssrc_tree, tvb, offset, 20, "SSRC contents" );
+ ssrc_sub_tree = proto_item_add_subtree( ti, ett_ssrc_item );
+
+ /* Fraction lost, 8bits */
+ rr_flt = tvb_get_guint8( tvb, offset );
+ proto_tree_add_uint_format( ssrc_sub_tree, hf_rtcp_ssrc_fraction, tvb,
+ offset, 1, rr_flt, "Fraction lost: %u / 256", rr_flt );
+ offset++;
+
+ /* Cumulative number of packets lost, 24 bits */
+ proto_tree_add_item( ssrc_sub_tree, hf_rtcp_ssrc_cum_nr, tvb,
+ offset, 3, ENC_BIG_ENDIAN );
+ offset += 3;
+
+ /* Extended highest sequence nr received, 32 bits
+ * Just for the sake of it, let's add another subtree
+ * because this might be a little clearer
+ */
+ ti = proto_tree_add_item( ssrc_tree, hf_rtcp_ssrc_ext_high_seq,
+ tvb, offset, 4, ENC_BIG_ENDIAN );
+ high_sec_tree = proto_item_add_subtree( ti, ett_ssrc_ext_high );
+ /* Sequence number cycles */
+ proto_tree_add_item( high_sec_tree, hf_rtcp_ssrc_high_cycles,
+ tvb, offset, 2, ENC_BIG_ENDIAN );
+ offset += 2;
+ /* highest sequence number received */
+ proto_tree_add_item( high_sec_tree, hf_rtcp_ssrc_high_seq,
+ tvb, offset, 2, ENC_BIG_ENDIAN );
+ offset += 2;
+
+ /* Interarrival jitter */
+ proto_tree_add_item( ssrc_tree, hf_rtcp_ssrc_jitter, tvb,
+ offset, 4, ENC_BIG_ENDIAN );
+ offset += 4;
+
+ /* Last SR timestamp */
+ lsr = tvb_get_ntohl( tvb, offset );
+ proto_tree_add_item( ssrc_tree, hf_rtcp_ssrc_lsr, tvb,
+ offset, 4, ENC_BIG_ENDIAN );
+ offset += 4;
+
+ /* Delay since last SR timestamp */
+ dlsr = tvb_get_ntohl( tvb, offset );
+ ti = proto_tree_add_item( ssrc_tree, hf_rtcp_ssrc_dlsr, tvb,
+ offset, 4, ENC_BIG_ENDIAN );
+ proto_item_append_text(ti, " (%d milliseconds)",
+ (int)(((double)dlsr/(double)65536) * 1000.0));
+ offset += 4;
+
+ /* Do roundtrip calculation */
+ if (global_rtcp_show_roundtrip_calculation)
+ {
+ /* Based on delay since SR was sent in other direction */
+ calculate_roundtrip_delay(tvb, pinfo, ssrc_tree, lsr, dlsr);
+ }
+
+ counter++;
+ }
+
+ /* If length remaining, assume profile-specific extension bytes */
+ if ((offset-rr_offset) < (int)packet_length)
+ {
+ proto_tree_add_item(tree, hf_rtcp_profile_specific_extension, tvb, offset,
+ packet_length - (offset - rr_offset), ENC_NA);
+ offset = rr_offset + packet_length;
+ }
+
+ return offset;
}
static int
dissect_rtcp_sr( packet_info *pinfo, tvbuff_t *tvb, int offset, proto_tree *tree,
unsigned int count, unsigned int packet_length )
{
- proto_item* item;
- guint32 ts_msw, ts_lsw;
- int sr_offset = offset;
-
- /* NTP timestamp */
- ts_msw = tvb_get_ntohl(tvb, offset);
- proto_tree_add_item(tree, hf_rtcp_ntp_msw, tvb, offset, 4, ENC_BIG_ENDIAN);
-
- ts_lsw = tvb_get_ntohl(tvb, offset+4);
- proto_tree_add_item(tree, hf_rtcp_ntp_lsw, tvb, offset+4, 4, ENC_BIG_ENDIAN);
-
- item = proto_tree_add_item(tree, hf_rtcp_ntp, tvb, offset, 8, ENC_TIME_NTP|ENC_BIG_ENDIAN);
- PROTO_ITEM_SET_GENERATED(item);
- offset += 8;
-
- /* RTP timestamp, 32 bits */
- proto_tree_add_item( tree, hf_rtcp_rtp_timestamp, tvb, offset, 4, ENC_BIG_ENDIAN );
- offset += 4;
- /* Sender's packet count, 32 bits */
- proto_tree_add_item( tree, hf_rtcp_sender_pkt_cnt, tvb, offset, 4, ENC_BIG_ENDIAN );
- offset += 4;
- /* Sender's octet count, 32 bits */
- proto_tree_add_item( tree, hf_rtcp_sender_oct_cnt, tvb, offset, 4, ENC_BIG_ENDIAN );
- offset += 4;
-
- /* Record the time of this packet in the sender's conversation */
- if (global_rtcp_show_roundtrip_calculation)
- {
- /* Use middle 32 bits of 64-bit time value */
- guint32 lsr = ((ts_msw & 0x0000ffff) << 16 | (ts_lsw & 0xffff0000) >> 16);
-
- /* Record the time that we sent this in appropriate conversation */
- remember_outgoing_sr(pinfo, lsr);
- }
-
- /* The rest of the packet is equal to the RR packet */
- if ( count != 0 )
- offset = dissect_rtcp_rr( pinfo, tvb, offset, tree, count, packet_length-(offset-sr_offset) );
- else
- {
- /* If length remaining, assume profile-specific extension bytes */
- if ((offset-sr_offset) < (int)packet_length)
- {
- proto_tree_add_item(tree, hf_rtcp_profile_specific_extension, tvb, offset,
- packet_length - (offset - sr_offset), ENC_NA);
- offset = sr_offset + packet_length;
- }
- }
-
- return offset;
+ proto_item* item;
+ guint32 ts_msw, ts_lsw;
+ int sr_offset = offset;
+
+ /* NTP timestamp */
+ ts_msw = tvb_get_ntohl(tvb, offset);
+ proto_tree_add_item(tree, hf_rtcp_ntp_msw, tvb, offset, 4, ENC_BIG_ENDIAN);
+
+ ts_lsw = tvb_get_ntohl(tvb, offset+4);
+ proto_tree_add_item(tree, hf_rtcp_ntp_lsw, tvb, offset+4, 4, ENC_BIG_ENDIAN);
+
+ item = proto_tree_add_item(tree, hf_rtcp_ntp, tvb, offset, 8, ENC_TIME_NTP|ENC_BIG_ENDIAN);
+ PROTO_ITEM_SET_GENERATED(item);
+ offset += 8;
+
+ /* RTP timestamp, 32 bits */
+ proto_tree_add_item( tree, hf_rtcp_rtp_timestamp, tvb, offset, 4, ENC_BIG_ENDIAN );
+ offset += 4;
+ /* Sender's packet count, 32 bits */
+ proto_tree_add_item( tree, hf_rtcp_sender_pkt_cnt, tvb, offset, 4, ENC_BIG_ENDIAN );
+ offset += 4;
+ /* Sender's octet count, 32 bits */
+ proto_tree_add_item( tree, hf_rtcp_sender_oct_cnt, tvb, offset, 4, ENC_BIG_ENDIAN );
+ offset += 4;
+
+ /* Record the time of this packet in the sender's conversation */
+ if (global_rtcp_show_roundtrip_calculation)
+ {
+ /* Use middle 32 bits of 64-bit time value */
+ guint32 lsr = ((ts_msw & 0x0000ffff) << 16 | (ts_lsw & 0xffff0000) >> 16);
+
+ /* Record the time that we sent this in appropriate conversation */
+ remember_outgoing_sr(pinfo, lsr);
+ }
+
+ /* The rest of the packet is equal to the RR packet */
+ if ( count != 0 )
+ offset = dissect_rtcp_rr( pinfo, tvb, offset, tree, count, packet_length-(offset-sr_offset) );
+ else
+ {
+ /* If length remaining, assume profile-specific extension bytes */
+ if ((offset-sr_offset) < (int)packet_length)
+ {
+ proto_tree_add_item(tree, hf_rtcp_profile_specific_extension, tvb, offset,
+ packet_length - (offset - sr_offset), ENC_NA);
+ offset = sr_offset + packet_length;
+ }
+ }
+
+ return offset;
}
/* Look for conversation info and display any setup info found */
void show_setup_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- /* Conversation and current data */
- conversation_t *p_conv = NULL;
- struct _rtcp_conversation_info *p_conv_data = NULL;
-
- /* Use existing packet data if available */
- p_conv_data = p_get_proto_data(pinfo->fd, proto_rtcp);
-
- if (!p_conv_data)
- {
- /* First time, get info from conversation */
- p_conv = find_conversation(pinfo->fd->num, &pinfo->net_dst, &pinfo->net_src,
- pinfo->ptype,
- pinfo->destport, pinfo->srcport, NO_ADDR_B);
-
- if (p_conv)
- {
- /* Look for data in conversation */
- struct _rtcp_conversation_info *p_conv_packet_data;
- p_conv_data = conversation_get_proto_data(p_conv, proto_rtcp);
-
- if (p_conv_data)
- {
- /* Save this conversation info into packet info */
- p_conv_packet_data = se_memdup(p_conv_data,
- sizeof(struct _rtcp_conversation_info));
-
- p_add_proto_data(pinfo->fd, proto_rtcp, p_conv_packet_data);
- }
- }
- }
-
- /* Create setup info subtree with summary info. */
- if (p_conv_data && p_conv_data->setup_method_set)
- {
- proto_tree *rtcp_setup_tree;
- proto_item *ti = proto_tree_add_string_format(tree, hf_rtcp_setup, tvb, 0, 0,
- "",
- "Stream setup by %s (frame %u)",
- p_conv_data->setup_method,
- p_conv_data->setup_frame_number);
- PROTO_ITEM_SET_GENERATED(ti);
- rtcp_setup_tree = proto_item_add_subtree(ti, ett_rtcp_setup);
- if (rtcp_setup_tree)
- {
- /* Add details into subtree */
- proto_item* item = proto_tree_add_uint(rtcp_setup_tree, hf_rtcp_setup_frame,
- tvb, 0, 0, p_conv_data->setup_frame_number);
- PROTO_ITEM_SET_GENERATED(item);
- item = proto_tree_add_string(rtcp_setup_tree, hf_rtcp_setup_method,
- tvb, 0, 0, p_conv_data->setup_method);
- PROTO_ITEM_SET_GENERATED(item);
- }
- }
+ /* Conversation and current data */
+ conversation_t *p_conv = NULL;
+ struct _rtcp_conversation_info *p_conv_data = NULL;
+
+ /* Use existing packet data if available */
+ p_conv_data = p_get_proto_data(pinfo->fd, proto_rtcp);
+
+ if (!p_conv_data)
+ {
+ /* First time, get info from conversation */
+ p_conv = find_conversation(pinfo->fd->num, &pinfo->net_dst, &pinfo->net_src,
+ pinfo->ptype,
+ pinfo->destport, pinfo->srcport, NO_ADDR_B);
+
+ if (p_conv)
+ {
+ /* Look for data in conversation */
+ struct _rtcp_conversation_info *p_conv_packet_data;
+ p_conv_data = conversation_get_proto_data(p_conv, proto_rtcp);
+
+ if (p_conv_data)
+ {
+ /* Save this conversation info into packet info */
+ p_conv_packet_data = se_memdup(p_conv_data,
+ sizeof(struct _rtcp_conversation_info));
+
+ p_add_proto_data(pinfo->fd, proto_rtcp, p_conv_packet_data);
+ }
+ }
+ }
+
+ /* Create setup info subtree with summary info. */
+ if (p_conv_data && p_conv_data->setup_method_set)
+ {
+ proto_tree *rtcp_setup_tree;
+ proto_item *ti = proto_tree_add_string_format(tree, hf_rtcp_setup, tvb, 0, 0,
+ "",
+ "Stream setup by %s (frame %u)",
+ p_conv_data->setup_method,
+ p_conv_data->setup_frame_number);
+ PROTO_ITEM_SET_GENERATED(ti);
+ rtcp_setup_tree = proto_item_add_subtree(ti, ett_rtcp_setup);
+ if (rtcp_setup_tree)
+ {
+ /* Add details into subtree */
+ proto_item* item = proto_tree_add_uint(rtcp_setup_tree, hf_rtcp_setup_frame,
+ tvb, 0, 0, p_conv_data->setup_frame_number);
+ PROTO_ITEM_SET_GENERATED(item);
+ item = proto_tree_add_string(rtcp_setup_tree, hf_rtcp_setup_method,
+ tvb, 0, 0, p_conv_data->setup_method);
+ PROTO_ITEM_SET_GENERATED(item);
+ }
+ }
}
/* Update conversation data to record time that outgoing rr/sr was sent */
static void remember_outgoing_sr(packet_info *pinfo, long lsr)
{
- conversation_t *p_conv = NULL;
- struct _rtcp_conversation_info *p_conv_data = NULL;
- struct _rtcp_conversation_info *p_packet_data = NULL;
-
- /* This information will be accessed when an incoming packet comes back to
- the side that sent this packet, so no use storing in the packet
- info. However, do store the fact that we've already set this info
- before */
-
-
- /**************************************************************************/
- /* First of all, see if we've already stored this information for this sr */
-
- /* Look first in packet info */
- p_packet_data = p_get_proto_data(pinfo->fd, proto_rtcp);
- if (p_packet_data && p_packet_data->last_received_set &&
- p_packet_data->last_received_frame_number >= pinfo->fd->num)
- {
- /* We already did this, OK */
- return;
- }
-
-
- /**************************************************************************/
- /* Otherwise, we want to find/create the conversation and update it */
-
- /* First time, get info from conversation.
- Even though we think of this as an outgoing packet being sent,
- we store the time as being received by the destination. */
- p_conv = find_conversation(pinfo->fd->num, &pinfo->net_dst, &pinfo->net_src,
- pinfo->ptype,
- pinfo->destport, pinfo->srcport, NO_ADDR_B);
-
- /* If the conversation doesn't exist, create it now. */
- if (!p_conv)
- {
- p_conv = conversation_new(pinfo->fd->num, &pinfo->net_dst, &pinfo->net_src, PT_UDP,
- pinfo->destport, pinfo->srcport,
- NO_ADDR2);
- if (!p_conv)
- {
- /* Give up if can't create it */
- return;
- }
- }
-
-
- /****************************************************/
- /* Now find/create conversation data */
- p_conv_data = conversation_get_proto_data(p_conv, proto_rtcp);
- if (!p_conv_data)
- {
- /* Allocate memory for data */
- p_conv_data = se_alloc0(sizeof(struct _rtcp_conversation_info));
-
- /* Add it to conversation. */
- conversation_add_proto_data(p_conv, proto_rtcp, p_conv_data);
- }
-
- /*******************************************************/
- /* Update conversation data */
- p_conv_data->last_received_set = TRUE;
- p_conv_data->last_received_frame_number = pinfo->fd->num;
- p_conv_data->last_received_timestamp = pinfo->fd->abs_ts;
- p_conv_data->last_received_ts = lsr;
-
-
- /****************************************************************/
- /* Update packet info to record conversation state */
-
- /* Will use/create packet info */
- if (!p_packet_data)
- {
- p_packet_data = se_alloc0(sizeof(struct _rtcp_conversation_info));
-
- p_add_proto_data(pinfo->fd, proto_rtcp, p_packet_data);
- }
-
- /* Copy current conversation data into packet info */
- p_packet_data->last_received_set = TRUE;
- p_packet_data->last_received_frame_number = p_conv_data->last_received_frame_number;
+ conversation_t *p_conv = NULL;
+ struct _rtcp_conversation_info *p_conv_data = NULL;
+ struct _rtcp_conversation_info *p_packet_data = NULL;
+
+ /* This information will be accessed when an incoming packet comes back to
+ the side that sent this packet, so no use storing in the packet
+ info. However, do store the fact that we've already set this info
+ before */
+
+
+ /**************************************************************************/
+ /* First of all, see if we've already stored this information for this sr */
+
+ /* Look first in packet info */
+ p_packet_data = p_get_proto_data(pinfo->fd, proto_rtcp);
+ if (p_packet_data && p_packet_data->last_received_set &&
+ p_packet_data->last_received_frame_number >= pinfo->fd->num)
+ {
+ /* We already did this, OK */
+ return;
+ }
+
+
+ /**************************************************************************/
+ /* Otherwise, we want to find/create the conversation and update it */
+
+ /* First time, get info from conversation.
+ Even though we think of this as an outgoing packet being sent,
+ we store the time as being received by the destination. */
+ p_conv = find_conversation(pinfo->fd->num, &pinfo->net_dst, &pinfo->net_src,
+ pinfo->ptype,
+ pinfo->destport, pinfo->srcport, NO_ADDR_B);
+
+ /* If the conversation doesn't exist, create it now. */
+ if (!p_conv)
+ {
+ p_conv = conversation_new(pinfo->fd->num, &pinfo->net_dst, &pinfo->net_src, PT_UDP,
+ pinfo->destport, pinfo->srcport,
+ NO_ADDR2);
+ if (!p_conv)
+ {
+ /* Give up if can't create it */
+ return;
+ }
+ }
+
+
+ /****************************************************/
+ /* Now find/create conversation data */
+ p_conv_data = conversation_get_proto_data(p_conv, proto_rtcp);
+ if (!p_conv_data)
+ {
+ /* Allocate memory for data */
+ p_conv_data = se_alloc0(sizeof(struct _rtcp_conversation_info));
+
+ /* Add it to conversation. */
+ conversation_add_proto_data(p_conv, proto_rtcp, p_conv_data);
+ }
+
+ /*******************************************************/
+ /* Update conversation data */
+ p_conv_data->last_received_set = TRUE;
+ p_conv_data->last_received_frame_number = pinfo->fd->num;
+ p_conv_data->last_received_timestamp = pinfo->fd->abs_ts;
+ p_conv_data->last_received_ts = lsr;
+
+
+ /****************************************************************/
+ /* Update packet info to record conversation state */
+
+ /* Will use/create packet info */
+ if (!p_packet_data)
+ {
+ p_packet_data = se_alloc0(sizeof(struct _rtcp_conversation_info));
+
+ p_add_proto_data(pinfo->fd, proto_rtcp, p_packet_data);
+ }
+
+ /* Copy current conversation data into packet info */
+ p_packet_data->last_received_set = TRUE;
+ p_packet_data->last_received_frame_number = p_conv_data->last_received_frame_number;
}
@@ -2533,105 +2533,105 @@ static void remember_outgoing_sr(packet_info *pinfo, long lsr)
static void calculate_roundtrip_delay(tvbuff_t *tvb, packet_info *pinfo,
proto_tree *tree, guint32 lsr, guint32 dlsr)
{
- /*****************************************************/
- /* This is called dissecting an SR. We need to:
- - look in the packet info for stored calculation. If found, use.
- - look up the conversation of the sending side to see when the
- 'last SR' was detected (received)
- - calculate the network delay using the that packet time,
- this packet time, and dlsr
- *****************************************************/
-
- conversation_t *p_conv = NULL;
- struct _rtcp_conversation_info *p_conv_data = NULL;
- struct _rtcp_conversation_info *p_packet_data = NULL;
-
-
- /*************************************************/
- /* Look for previous result */
- p_packet_data = p_get_proto_data(pinfo->fd, proto_rtcp);
- if (p_packet_data && p_packet_data->lsr_matched)
- {
- /* Show info. */
- add_roundtrip_delay_info(tvb, pinfo, tree,
- p_packet_data->calculated_delay_used_frame,
- p_packet_data->calculated_delay_report_gap,
- p_packet_data->calculated_delay);
- return;
- }
-
-
- /********************************************************************/
- /* Look for captured timestamp of last SR in conversation of sender */
- /* of this packet */
- p_conv = find_conversation(pinfo->fd->num, &pinfo->net_src, &pinfo->net_dst,
- pinfo->ptype,
- pinfo->srcport, pinfo->destport, NO_ADDR_B);
- if (!p_conv)
- {
- return;
- }
-
- /* Look for conversation data */
- p_conv_data = conversation_get_proto_data(p_conv, proto_rtcp);
- if (!p_conv_data)
- {
- return;
- }
-
- if (p_conv_data->last_received_set)
- {
- /* Store result of calculation in packet info */
- if (!p_packet_data)
- {
- /* Create packet info if it doesn't exist */
- p_packet_data = se_alloc0(sizeof(struct _rtcp_conversation_info));
-
- /* Set as packet info */
- p_add_proto_data(pinfo->fd, proto_rtcp, p_packet_data);
- }
-
- /* Don't allow match seemingly calculated from same (or later!) frame */
- if (pinfo->fd->num <= p_conv_data->last_received_frame_number)
- {
- return;
- }
-
- /* The previous report must match the lsr given here */
- if (p_conv_data->last_received_ts == lsr)
- {
- /* Look at time of since original packet was sent */
- gint seconds_between_packets = (gint)
- (pinfo->fd->abs_ts.secs - p_conv_data->last_received_timestamp.secs);
- gint nseconds_between_packets =
- pinfo->fd->abs_ts.nsecs - p_conv_data->last_received_timestamp.nsecs;
-
- gint total_gap = (seconds_between_packets*1000) +
- (nseconds_between_packets / 1000000);
- gint dlsr_ms = (int)(((double)dlsr/(double)65536) * 1000.0);
- gint delay;
-
- /* Delay is gap - dlsr (N.B. this is allowed to be -ve) */
- delay = total_gap - dlsr_ms;
-
- /* Record that the LSR matches */
- p_packet_data->lsr_matched = TRUE;
-
- /* No useful calculation can be done if dlsr not set... */
- if (dlsr)
- {
- p_packet_data->calculated_delay = delay;
- p_packet_data->calculated_delay_report_gap = total_gap;
- p_packet_data->calculated_delay_used_frame = p_conv_data->last_received_frame_number;
- }
-
- /* Show info. */
- add_roundtrip_delay_info(tvb, pinfo, tree,
- p_conv_data->last_received_frame_number,
- total_gap,
- delay);
- }
- }
+ /*****************************************************/
+ /* This is called dissecting an SR. We need to:
+ - look in the packet info for stored calculation. If found, use.
+ - look up the conversation of the sending side to see when the
+ 'last SR' was detected (received)
+ - calculate the network delay using the that packet time,
+ this packet time, and dlsr
+ *****************************************************/
+
+ conversation_t *p_conv = NULL;
+ struct _rtcp_conversation_info *p_conv_data = NULL;
+ struct _rtcp_conversation_info *p_packet_data = NULL;
+
+
+ /*************************************************/
+ /* Look for previous result */
+ p_packet_data = p_get_proto_data(pinfo->fd, proto_rtcp);
+ if (p_packet_data && p_packet_data->lsr_matched)
+ {
+ /* Show info. */
+ add_roundtrip_delay_info(tvb, pinfo, tree,
+ p_packet_data->calculated_delay_used_frame,
+ p_packet_data->calculated_delay_report_gap,
+ p_packet_data->calculated_delay);
+ return;
+ }
+
+
+ /********************************************************************/
+ /* Look for captured timestamp of last SR in conversation of sender */
+ /* of this packet */
+ p_conv = find_conversation(pinfo->fd->num, &pinfo->net_src, &pinfo->net_dst,
+ pinfo->ptype,
+ pinfo->srcport, pinfo->destport, NO_ADDR_B);
+ if (!p_conv)
+ {
+ return;
+ }
+
+ /* Look for conversation data */
+ p_conv_data = conversation_get_proto_data(p_conv, proto_rtcp);
+ if (!p_conv_data)
+ {
+ return;
+ }
+
+ if (p_conv_data->last_received_set)
+ {
+ /* Store result of calculation in packet info */
+ if (!p_packet_data)
+ {
+ /* Create packet info if it doesn't exist */
+ p_packet_data = se_alloc0(sizeof(struct _rtcp_conversation_info));
+
+ /* Set as packet info */
+ p_add_proto_data(pinfo->fd, proto_rtcp, p_packet_data);
+ }
+
+ /* Don't allow match seemingly calculated from same (or later!) frame */
+ if (pinfo->fd->num <= p_conv_data->last_received_frame_number)
+ {
+ return;
+ }
+
+ /* The previous report must match the lsr given here */
+ if (p_conv_data->last_received_ts == lsr)
+ {
+ /* Look at time of since original packet was sent */
+ gint seconds_between_packets = (gint)
+ (pinfo->fd->abs_ts.secs - p_conv_data->last_received_timestamp.secs);
+ gint nseconds_between_packets =
+ pinfo->fd->abs_ts.nsecs - p_conv_data->last_received_timestamp.nsecs;
+
+ gint total_gap = (seconds_between_packets*1000) +
+ (nseconds_between_packets / 1000000);
+ gint dlsr_ms = (int)(((double)dlsr/(double)65536) * 1000.0);
+ gint delay;
+
+ /* Delay is gap - dlsr (N.B. this is allowed to be -ve) */
+ delay = total_gap - dlsr_ms;
+
+ /* Record that the LSR matches */
+ p_packet_data->lsr_matched = TRUE;
+
+ /* No useful calculation can be done if dlsr not set... */
+ if (dlsr)
+ {
+ p_packet_data->calculated_delay = delay;
+ p_packet_data->calculated_delay_report_gap = total_gap;
+ p_packet_data->calculated_delay_used_frame = p_conv_data->last_received_frame_number;
+ }
+
+ /* Show info. */
+ add_roundtrip_delay_info(tvb, pinfo, tree,
+ p_conv_data->last_received_frame_number,
+ total_gap,
+ delay);
+ }
+ }
}
/* Show the calcaulted roundtrip delay info by adding protocol tree items
@@ -2640,50 +2640,50 @@ static void add_roundtrip_delay_info(tvbuff_t *tvb, packet_info *pinfo, proto_tr
guint frame, guint gap_between_reports,
gint delay)
{
- /* 'Last SR' frame used in calculation. Show this even if no delay shown */
- proto_item* item = proto_tree_add_uint(tree,
- hf_rtcp_last_sr_timestamp_frame,
- tvb, 0, 0, frame);
- PROTO_ITEM_SET_GENERATED(item);
-
- /* Time elapsed since 'Last SR' time in capture */
- item = proto_tree_add_uint(tree,
- hf_rtcp_time_since_last_sr,
- tvb, 0, 0, gap_between_reports);
- PROTO_ITEM_SET_GENERATED(item);
-
- /* Don't report on calculated delays below the threshold.
- Will report delays less than -threshold, to highlight
- problems with generated reports */
- if (abs(delay) < (int)global_rtcp_show_roundtrip_calculation_minimum)
- {
- return;
- }
-
- /* Calculated delay in ms */
- item = proto_tree_add_int(tree, hf_rtcp_roundtrip_delay, tvb, 0, 0, delay);
- PROTO_ITEM_SET_GENERATED(item);
-
- /* Add to expert info */
- if (delay >= 0)
- {
- expert_add_info_format(pinfo, item,
- PI_SEQUENCE, PI_NOTE,
- "RTCP round-trip delay detected (%d ms)",
- delay);
- }
- else
- {
- expert_add_info_format(pinfo, item,
- PI_SEQUENCE, PI_ERROR,
- "Negative RTCP round-trip delay detected (%d ms)",
- delay);
- }
-
- /* Report delay in INFO column */
- col_append_fstr(pinfo->cinfo, COL_INFO,
- " (roundtrip delay <-> %s = %dms, using frame %u) ",
- ep_address_to_str(&pinfo->net_src), delay, frame);
+ /* 'Last SR' frame used in calculation. Show this even if no delay shown */
+ proto_item* item = proto_tree_add_uint(tree,
+ hf_rtcp_last_sr_timestamp_frame,
+ tvb, 0, 0, frame);
+ PROTO_ITEM_SET_GENERATED(item);
+
+ /* Time elapsed since 'Last SR' time in capture */
+ item = proto_tree_add_uint(tree,
+ hf_rtcp_time_since_last_sr,
+ tvb, 0, 0, gap_between_reports);
+ PROTO_ITEM_SET_GENERATED(item);
+
+ /* Don't report on calculated delays below the threshold.
+ Will report delays less than -threshold, to highlight
+ problems with generated reports */
+ if (abs(delay) < (int)global_rtcp_show_roundtrip_calculation_minimum)
+ {
+ return;
+ }
+
+ /* Calculated delay in ms */
+ item = proto_tree_add_int(tree, hf_rtcp_roundtrip_delay, tvb, 0, 0, delay);
+ PROTO_ITEM_SET_GENERATED(item);
+
+ /* Add to expert info */
+ if (delay >= 0)
+ {
+ expert_add_info_format(pinfo, item,
+ PI_SEQUENCE, PI_NOTE,
+ "RTCP round-trip delay detected (%d ms)",
+ delay);
+ }
+ else
+ {
+ expert_add_info_format(pinfo, item,
+ PI_SEQUENCE, PI_ERROR,
+ "Negative RTCP round-trip delay detected (%d ms)",
+ delay);
+ }
+
+ /* Report delay in INFO column */
+ col_append_fstr(pinfo->cinfo, COL_INFO,
+ " (roundtrip delay <-> %s = %dms, using frame %u) ",
+ ep_address_to_str(&pinfo->net_src), delay, frame);
}
static int
@@ -2972,2025 +2972,2025 @@ dissect_rtcp( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree )
void
proto_register_rtcp(void)
{
- static hf_register_info hf[] =
- {
- {
- &hf_rtcp_version,
- {
- "Version",
- "rtcp.version",
- FT_UINT8,
- BASE_DEC,
- VALS(rtcp_version_vals),
- 0xC0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_padding,
- {
- "Padding",
- "rtcp.padding",
- FT_BOOLEAN,
- 8,
- NULL,
- 0x20,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_rc,
- {
- "Reception report count",
- "rtcp.rc",
- FT_UINT8,
- BASE_DEC,
- NULL,
- 0x1F,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_sc,
- {
- "Source count",
- "rtcp.sc",
- FT_UINT8,
- BASE_DEC,
- NULL,
- 0x1F,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_pt,
- {
- "Packet type",
- "rtcp.pt",
- FT_UINT8,
- BASE_DEC,
- VALS( rtcp_packet_type_vals ),
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_length,
- {
- "Length",
- "rtcp.length",
- FT_UINT16,
- BASE_DEC,
- NULL,
- 0x0,
- "32-bit words (-1) in packet", HFILL
- }
- },
- {
- &hf_rtcp_ssrc_sender,
- {
- "Sender SSRC",
- "rtcp.senderssrc",
- FT_UINT32,
- BASE_HEX_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
+ static hf_register_info hf[] =
+ {
+ {
+ &hf_rtcp_version,
+ {
+ "Version",
+ "rtcp.version",
+ FT_UINT8,
+ BASE_DEC,
+ VALS(rtcp_version_vals),
+ 0xC0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_padding,
+ {
+ "Padding",
+ "rtcp.padding",
+ FT_BOOLEAN,
+ 8,
+ NULL,
+ 0x20,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_rc,
+ {
+ "Reception report count",
+ "rtcp.rc",
+ FT_UINT8,
+ BASE_DEC,
+ NULL,
+ 0x1F,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_sc,
+ {
+ "Source count",
+ "rtcp.sc",
+ FT_UINT8,
+ BASE_DEC,
+ NULL,
+ 0x1F,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_pt,
+ {
+ "Packet type",
+ "rtcp.pt",
+ FT_UINT8,
+ BASE_DEC,
+ VALS( rtcp_packet_type_vals ),
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_length,
+ {
+ "Length",
+ "rtcp.length",
+ FT_UINT16,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ "32-bit words (-1) in packet", HFILL
+ }
+ },
+ {
+ &hf_rtcp_ssrc_sender,
+ {
+ "Sender SSRC",
+ "rtcp.senderssrc",
+ FT_UINT32,
+ BASE_HEX_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
&hf_rtcp_ssrc_media_source,
- {
- "Media source SSRC",
- "rtcp.mediassrc",
- FT_UINT32,
- BASE_HEX_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_ntp_msw,
- {
- "Timestamp, MSW",
- "rtcp.timestamp.ntp.msw",
- FT_UINT32,
- BASE_DEC_HEX,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_ntp_lsw,
- {
- "Timestamp, LSW",
- "rtcp.timestamp.ntp.lsw",
- FT_UINT32,
- BASE_DEC_HEX,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_ntp,
- {
- "MSW and LSW as NTP timestamp",
- "rtcp.timestamp.ntp",
- FT_ABSOLUTE_TIME,
- ABSOLUTE_TIME_UTC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_rtp_timestamp,
- {
- "RTP timestamp",
- "rtcp.timestamp.rtp",
- FT_UINT32,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_sender_pkt_cnt,
- {
- "Sender's packet count",
- "rtcp.sender.packetcount",
- FT_UINT32,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_sender_oct_cnt,
- {
- "Sender's octet count",
- "rtcp.sender.octetcount",
- FT_UINT32,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_ssrc_source,
- {
- "Identifier",
- "rtcp.ssrc.identifier",
- FT_UINT32,
- BASE_HEX_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_ssrc_fraction,
- {
- "Fraction lost",
- "rtcp.ssrc.fraction",
- FT_UINT8,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_ssrc_cum_nr,
- {
- "Cumulative number of packets lost",
- "rtcp.ssrc.cum_nr",
- FT_INT24,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_ssrc_ext_high_seq,
- {
- "Extended highest sequence number received",
- "rtcp.ssrc.ext_high",
- FT_UINT32,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_ssrc_high_seq,
- {
- "Highest sequence number received",
- "rtcp.ssrc.high_seq",
- FT_UINT16,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_ssrc_high_cycles,
- {
- "Sequence number cycles count",
- "rtcp.ssrc.high_cycles",
- FT_UINT16,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_ssrc_jitter,
- {
- "Interarrival jitter",
- "rtcp.ssrc.jitter",
- FT_UINT32,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_ssrc_lsr,
- {
- "Last SR timestamp",
- "rtcp.ssrc.lsr",
- FT_UINT32,
- BASE_DEC_HEX,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_ssrc_dlsr,
- {
- "Delay since last SR timestamp",
- "rtcp.ssrc.dlsr",
- FT_UINT32,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_ssrc_csrc,
- {
- "SSRC / CSRC identifier",
- "rtcp.sdes.ssrc_csrc",
- FT_UINT32,
- BASE_HEX_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_sdes_type,
- {
- "Type",
- "rtcp.sdes.type",
- FT_UINT8,
- BASE_DEC,
- VALS( rtcp_sdes_type_vals ),
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_sdes_length,
- {
- "Length",
- "rtcp.sdes.length",
- FT_UINT32,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_sdes_text,
- {
- "Text",
- "rtcp.sdes.text",
- FT_STRING,
- BASE_NONE,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_sdes_prefix_len,
- {
- "Prefix length",
- "rtcp.sdes.prefix.length",
- FT_UINT8,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_sdes_prefix_string,
- {
- "Prefix string",
- "rtcp.sdes.prefix.string",
- FT_STRING,
- BASE_NONE,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_subtype,
- {
- "Subtype",
- "rtcp.app.subtype",
- FT_UINT8,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_name_ascii,
- {
- "Name (ASCII)",
- "rtcp.app.name",
- FT_STRING,
- BASE_NONE,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_app_data,
- {
- "Application specific data",
- "rtcp.app.data",
- FT_BYTES,
- BASE_NONE,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_app_poc1,
- {
- "PoC1 Application specific data",
- "rtcp.app.poc1",
- FT_NONE,
- BASE_NONE,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_app_poc1_subtype,
- {
- "Subtype",
- "rtcp.app.PoC1.subtype",
- FT_UINT8,
- BASE_DEC,
- VALS(rtcp_app_poc1_floor_cnt_type_vals),
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_app_poc1_sip_uri,
- {
- "SIP URI",
- "rtcp.app.poc1.sip.uri",
- FT_UINT_STRING,
- BASE_NONE,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_app_poc1_disp_name,
- {
- "Display Name",
- "rtcp.app.poc1.disp.name",
- FT_UINT_STRING,
- BASE_NONE,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_app_poc1_priority,
- {
- "Priority",
- "rtcp.app.poc1.priority",
- FT_UINT8,
- BASE_DEC,
- VALS(rtcp_app_poc1_qsresp_priority_vals),
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_app_poc1_request_ts,
- {
- "Talk Burst Request Timestamp",
- "rtcp.app.poc1.request.ts",
- FT_ABSOLUTE_TIME,
- ABSOLUTE_TIME_UTC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_app_poc1_stt,
- {
- "Stop talking timer",
- "rtcp.app.poc1.stt",
- FT_UINT16,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_app_poc1_partic,
- {
- "Number of participants",
- "rtcp.app.poc1.participants",
- FT_UINT16,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_app_poc1_ssrc_granted,
- {
- "SSRC of client granted permission to talk",
- "rtcp.app.poc1.ssrc.granted",
- FT_UINT32,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_app_poc1_last_pkt_seq_no,
- {
- "Sequence number of last RTP packet",
- "rtcp.app.poc1.last.pkt.seq.no",
- FT_UINT16,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_app_poc1_ignore_seq_no,
- {
- "Ignore sequence number field",
- "rtcp.app.poc1.ignore.seq.no",
- FT_UINT16,
- BASE_HEX,
- NULL,
- 0x8000,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_app_poc1_reason_code1,
- {
- "Reason code",
- "rtcp.app.poc1.reason.code",
- FT_UINT8,
- BASE_DEC,
- VALS(rtcp_app_poc1_reason_code1_vals),
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_app_poc1_reason1_phrase,
- {
- "Reason Phrase",
- "rtcp.app.poc1.reason.phrase",
- FT_UINT_STRING,
- BASE_NONE,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_app_poc1_reason_code2,
- {
- "Reason code",
- "rtcp.app.poc1.reason.code",
- FT_UINT16,
- BASE_DEC,
- VALS(rtcp_app_poc1_reason_code2_vals),
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_app_poc1_new_time_request,
- {
- "New time client can request (seconds)",
- "rtcp.app.poc1.new.time.request",
- FT_UINT16,
- BASE_DEC,
- NULL,
- 0x0,
- "Time in seconds client can request for", HFILL
- }
- },
- {
- &hf_rtcp_app_poc1_ack_subtype,
- {
- "Subtype",
- "rtcp.app.poc1.ack.subtype",
- FT_UINT8,
- BASE_DEC,
- VALS(rtcp_app_poc1_floor_cnt_type_vals),
- 0xf8,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_app_poc1_ack_reason_code,
- {
- "Reason code",
- "rtcp.app.poc1.ack.reason.code",
- FT_UINT16,
- BASE_DEC,
- VALS(rtcp_app_poc1_reason_code_ack_vals),
- 0x07ff,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_app_poc1_qsresp_priority,
- {
- "Priority",
- "rtcp.app.poc1.qsresp.priority",
- FT_UINT8,
- BASE_DEC,
- VALS(rtcp_app_poc1_qsresp_priority_vals),
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_app_poc1_qsresp_position,
- {
- "Position (number of clients ahead)",
- "rtcp.app.poc1.qsresp.position",
- FT_UINT16,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_app_poc1_conn_content[0],
- {
- "Identity of inviting client",
- "rtcp.app.poc1.conn.content.a.id",
- FT_BOOLEAN,
- 16,
- NULL,
- 0x8000,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_app_poc1_conn_content[1],
- {
- "Nick name of inviting client",
- "rtcp.app.poc1.conn.content.a.dn",
- FT_BOOLEAN,
- 16,
- NULL,
- 0x4000,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_app_poc1_conn_content[2],
- {
- "Session identity",
- "rtcp.app.poc1.conn.content.sess.id",
- FT_BOOLEAN,
- 16,
- NULL,
- 0x2000,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_app_poc1_conn_content[3],
- {
- "Group name",
- "rtcp.app.poc1.conn.content.grp.dn",
- FT_BOOLEAN,
- 16,
- NULL,
- 0x1000,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_app_poc1_conn_content[4],
- {
- "Group identity",
- "rtcp.app.poc1.conn.content.grp.id",
- FT_BOOLEAN,
- 16,
- NULL,
- 0x0800,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_app_poc1_conn_session_type,
- {
- "Session type",
- "rtcp.app.poc1.conn.session.type",
- FT_UINT8,
- BASE_DEC,
- VALS(rtcp_app_poc1_conn_sess_type_vals),
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_app_poc1_conn_add_ind_mao,
- {
- "Manual answer override",
- "rtcp.app.poc1.conn.add.ind.mao",
- FT_BOOLEAN,
- 8,
- NULL,
- 0x80,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_app_poc1_conn_sdes_items[0],
- {
- "Identity of inviting client",
- "rtcp.app.poc1.conn.sdes.a.id",
- FT_UINT_STRING,
- BASE_NONE,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_app_poc1_conn_sdes_items[1],
- {
- "Nick name of inviting client",
- "rtcp.app.poc1.conn.sdes.a.dn",
- FT_UINT_STRING,
- BASE_NONE,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_app_poc1_conn_sdes_items[2],
- {
- "Session identity",
- "rtcp.app.poc1.conn.sdes.sess.id",
- FT_UINT_STRING,
- BASE_NONE,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_app_poc1_conn_sdes_items[3],
- {
- "Group Name",
- "rtcp.app.poc1.conn.sdes.grp.dn",
- FT_UINT_STRING,
- BASE_NONE,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_app_poc1_conn_sdes_items[4],
- {
- "Group identity",
- "rtcp.app.poc1.conn.sdes.grp.id",
- FT_UINT_STRING,
- BASE_NONE,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_app_mux,
- {
- "RtpMux Application specific data",
- "rtcp.app.mux",
- FT_NONE,
- BASE_NONE,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_app_mux_mux,
- {
- "Multiplexing supported",
- "rtcp.app.mux.mux",
- FT_BOOLEAN,
- BASE_NONE,
- NULL,
- 0x80,
- NULL, HFILL
- }
+ {
+ "Media source SSRC",
+ "rtcp.mediassrc",
+ FT_UINT32,
+ BASE_HEX_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_ntp_msw,
+ {
+ "Timestamp, MSW",
+ "rtcp.timestamp.ntp.msw",
+ FT_UINT32,
+ BASE_DEC_HEX,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_ntp_lsw,
+ {
+ "Timestamp, LSW",
+ "rtcp.timestamp.ntp.lsw",
+ FT_UINT32,
+ BASE_DEC_HEX,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_ntp,
+ {
+ "MSW and LSW as NTP timestamp",
+ "rtcp.timestamp.ntp",
+ FT_ABSOLUTE_TIME,
+ ABSOLUTE_TIME_UTC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_rtp_timestamp,
+ {
+ "RTP timestamp",
+ "rtcp.timestamp.rtp",
+ FT_UINT32,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_sender_pkt_cnt,
+ {
+ "Sender's packet count",
+ "rtcp.sender.packetcount",
+ FT_UINT32,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_sender_oct_cnt,
+ {
+ "Sender's octet count",
+ "rtcp.sender.octetcount",
+ FT_UINT32,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_ssrc_source,
+ {
+ "Identifier",
+ "rtcp.ssrc.identifier",
+ FT_UINT32,
+ BASE_HEX_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_ssrc_fraction,
+ {
+ "Fraction lost",
+ "rtcp.ssrc.fraction",
+ FT_UINT8,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_ssrc_cum_nr,
+ {
+ "Cumulative number of packets lost",
+ "rtcp.ssrc.cum_nr",
+ FT_INT24,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_ssrc_ext_high_seq,
+ {
+ "Extended highest sequence number received",
+ "rtcp.ssrc.ext_high",
+ FT_UINT32,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_ssrc_high_seq,
+ {
+ "Highest sequence number received",
+ "rtcp.ssrc.high_seq",
+ FT_UINT16,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_ssrc_high_cycles,
+ {
+ "Sequence number cycles count",
+ "rtcp.ssrc.high_cycles",
+ FT_UINT16,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_ssrc_jitter,
+ {
+ "Interarrival jitter",
+ "rtcp.ssrc.jitter",
+ FT_UINT32,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_ssrc_lsr,
+ {
+ "Last SR timestamp",
+ "rtcp.ssrc.lsr",
+ FT_UINT32,
+ BASE_DEC_HEX,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_ssrc_dlsr,
+ {
+ "Delay since last SR timestamp",
+ "rtcp.ssrc.dlsr",
+ FT_UINT32,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_ssrc_csrc,
+ {
+ "SSRC / CSRC identifier",
+ "rtcp.sdes.ssrc_csrc",
+ FT_UINT32,
+ BASE_HEX_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_sdes_type,
+ {
+ "Type",
+ "rtcp.sdes.type",
+ FT_UINT8,
+ BASE_DEC,
+ VALS( rtcp_sdes_type_vals ),
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_sdes_length,
+ {
+ "Length",
+ "rtcp.sdes.length",
+ FT_UINT32,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_sdes_text,
+ {
+ "Text",
+ "rtcp.sdes.text",
+ FT_STRING,
+ BASE_NONE,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_sdes_prefix_len,
+ {
+ "Prefix length",
+ "rtcp.sdes.prefix.length",
+ FT_UINT8,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_sdes_prefix_string,
+ {
+ "Prefix string",
+ "rtcp.sdes.prefix.string",
+ FT_STRING,
+ BASE_NONE,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_subtype,
+ {
+ "Subtype",
+ "rtcp.app.subtype",
+ FT_UINT8,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_name_ascii,
+ {
+ "Name (ASCII)",
+ "rtcp.app.name",
+ FT_STRING,
+ BASE_NONE,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_app_data,
+ {
+ "Application specific data",
+ "rtcp.app.data",
+ FT_BYTES,
+ BASE_NONE,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_app_poc1,
+ {
+ "PoC1 Application specific data",
+ "rtcp.app.poc1",
+ FT_NONE,
+ BASE_NONE,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_app_poc1_subtype,
+ {
+ "Subtype",
+ "rtcp.app.PoC1.subtype",
+ FT_UINT8,
+ BASE_DEC,
+ VALS(rtcp_app_poc1_floor_cnt_type_vals),
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_app_poc1_sip_uri,
+ {
+ "SIP URI",
+ "rtcp.app.poc1.sip.uri",
+ FT_UINT_STRING,
+ BASE_NONE,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_app_poc1_disp_name,
+ {
+ "Display Name",
+ "rtcp.app.poc1.disp.name",
+ FT_UINT_STRING,
+ BASE_NONE,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_app_poc1_priority,
+ {
+ "Priority",
+ "rtcp.app.poc1.priority",
+ FT_UINT8,
+ BASE_DEC,
+ VALS(rtcp_app_poc1_qsresp_priority_vals),
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_app_poc1_request_ts,
+ {
+ "Talk Burst Request Timestamp",
+ "rtcp.app.poc1.request.ts",
+ FT_ABSOLUTE_TIME,
+ ABSOLUTE_TIME_UTC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_app_poc1_stt,
+ {
+ "Stop talking timer",
+ "rtcp.app.poc1.stt",
+ FT_UINT16,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_app_poc1_partic,
+ {
+ "Number of participants",
+ "rtcp.app.poc1.participants",
+ FT_UINT16,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_app_poc1_ssrc_granted,
+ {
+ "SSRC of client granted permission to talk",
+ "rtcp.app.poc1.ssrc.granted",
+ FT_UINT32,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_app_poc1_last_pkt_seq_no,
+ {
+ "Sequence number of last RTP packet",
+ "rtcp.app.poc1.last.pkt.seq.no",
+ FT_UINT16,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_app_poc1_ignore_seq_no,
+ {
+ "Ignore sequence number field",
+ "rtcp.app.poc1.ignore.seq.no",
+ FT_UINT16,
+ BASE_HEX,
+ NULL,
+ 0x8000,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_app_poc1_reason_code1,
+ {
+ "Reason code",
+ "rtcp.app.poc1.reason.code",
+ FT_UINT8,
+ BASE_DEC,
+ VALS(rtcp_app_poc1_reason_code1_vals),
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_app_poc1_reason1_phrase,
+ {
+ "Reason Phrase",
+ "rtcp.app.poc1.reason.phrase",
+ FT_UINT_STRING,
+ BASE_NONE,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_app_poc1_reason_code2,
+ {
+ "Reason code",
+ "rtcp.app.poc1.reason.code",
+ FT_UINT16,
+ BASE_DEC,
+ VALS(rtcp_app_poc1_reason_code2_vals),
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_app_poc1_new_time_request,
+ {
+ "New time client can request (seconds)",
+ "rtcp.app.poc1.new.time.request",
+ FT_UINT16,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ "Time in seconds client can request for", HFILL
+ }
+ },
+ {
+ &hf_rtcp_app_poc1_ack_subtype,
+ {
+ "Subtype",
+ "rtcp.app.poc1.ack.subtype",
+ FT_UINT8,
+ BASE_DEC,
+ VALS(rtcp_app_poc1_floor_cnt_type_vals),
+ 0xf8,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_app_poc1_ack_reason_code,
+ {
+ "Reason code",
+ "rtcp.app.poc1.ack.reason.code",
+ FT_UINT16,
+ BASE_DEC,
+ VALS(rtcp_app_poc1_reason_code_ack_vals),
+ 0x07ff,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_app_poc1_qsresp_priority,
+ {
+ "Priority",
+ "rtcp.app.poc1.qsresp.priority",
+ FT_UINT8,
+ BASE_DEC,
+ VALS(rtcp_app_poc1_qsresp_priority_vals),
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_app_poc1_qsresp_position,
+ {
+ "Position (number of clients ahead)",
+ "rtcp.app.poc1.qsresp.position",
+ FT_UINT16,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_app_poc1_conn_content[0],
+ {
+ "Identity of inviting client",
+ "rtcp.app.poc1.conn.content.a.id",
+ FT_BOOLEAN,
+ 16,
+ NULL,
+ 0x8000,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_app_poc1_conn_content[1],
+ {
+ "Nick name of inviting client",
+ "rtcp.app.poc1.conn.content.a.dn",
+ FT_BOOLEAN,
+ 16,
+ NULL,
+ 0x4000,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_app_poc1_conn_content[2],
+ {
+ "Session identity",
+ "rtcp.app.poc1.conn.content.sess.id",
+ FT_BOOLEAN,
+ 16,
+ NULL,
+ 0x2000,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_app_poc1_conn_content[3],
+ {
+ "Group name",
+ "rtcp.app.poc1.conn.content.grp.dn",
+ FT_BOOLEAN,
+ 16,
+ NULL,
+ 0x1000,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_app_poc1_conn_content[4],
+ {
+ "Group identity",
+ "rtcp.app.poc1.conn.content.grp.id",
+ FT_BOOLEAN,
+ 16,
+ NULL,
+ 0x0800,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_app_poc1_conn_session_type,
+ {
+ "Session type",
+ "rtcp.app.poc1.conn.session.type",
+ FT_UINT8,
+ BASE_DEC,
+ VALS(rtcp_app_poc1_conn_sess_type_vals),
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_app_poc1_conn_add_ind_mao,
+ {
+ "Manual answer override",
+ "rtcp.app.poc1.conn.add.ind.mao",
+ FT_BOOLEAN,
+ 8,
+ NULL,
+ 0x80,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_app_poc1_conn_sdes_items[0],
+ {
+ "Identity of inviting client",
+ "rtcp.app.poc1.conn.sdes.a.id",
+ FT_UINT_STRING,
+ BASE_NONE,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_app_poc1_conn_sdes_items[1],
+ {
+ "Nick name of inviting client",
+ "rtcp.app.poc1.conn.sdes.a.dn",
+ FT_UINT_STRING,
+ BASE_NONE,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_app_poc1_conn_sdes_items[2],
+ {
+ "Session identity",
+ "rtcp.app.poc1.conn.sdes.sess.id",
+ FT_UINT_STRING,
+ BASE_NONE,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_app_poc1_conn_sdes_items[3],
+ {
+ "Group Name",
+ "rtcp.app.poc1.conn.sdes.grp.dn",
+ FT_UINT_STRING,
+ BASE_NONE,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_app_poc1_conn_sdes_items[4],
+ {
+ "Group identity",
+ "rtcp.app.poc1.conn.sdes.grp.id",
+ FT_UINT_STRING,
+ BASE_NONE,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_app_mux,
+ {
+ "RtpMux Application specific data",
+ "rtcp.app.mux",
+ FT_NONE,
+ BASE_NONE,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_app_mux_mux,
+ {
+ "Multiplexing supported",
+ "rtcp.app.mux.mux",
+ FT_BOOLEAN,
+ BASE_NONE,
+ NULL,
+ 0x80,
+ NULL, HFILL
+ }
},
- {
- &hf_rtcp_app_mux_cp,
- {
- "Header compression supported",
- "rtcp.app.mux.cp",
- FT_BOOLEAN,
- BASE_NONE,
- NULL,
- 0x40,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_app_mux_selection,
- {
- "Multiplexing selection",
- "rtcp.app.mux.selection",
- FT_UINT8,
- BASE_DEC,
- VALS(rtcp_app_mux_selection_vals),
- 0x30,
- NULL, HFILL
- }
- },
+ {
+ &hf_rtcp_app_mux_cp,
+ {
+ "Header compression supported",
+ "rtcp.app.mux.cp",
+ FT_BOOLEAN,
+ BASE_NONE,
+ NULL,
+ 0x40,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_app_mux_selection,
+ {
+ "Multiplexing selection",
+ "rtcp.app.mux.selection",
+ FT_UINT8,
+ BASE_DEC,
+ VALS(rtcp_app_mux_selection_vals),
+ 0x30,
+ NULL, HFILL
+ }
+ },
{
- &hf_rtcp_app_mux_localmuxport,
- {
- "Local Mux Port",
- "rtcp.app.mux.muxport",
- FT_UINT16,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_fsn,
- {
- "First sequence number",
- "rtcp.nack.fsn",
- FT_UINT16,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_blp,
- {
- "Bitmask of following lost packets",
- "rtcp.nack.blp",
- FT_UINT16,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_padding_count,
- {
- "Padding count",
- "rtcp.padding.count",
- FT_UINT8,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_padding_data,
- {
- "Padding data",
- "rtcp.padding.data",
- FT_BYTES,
- BASE_NONE,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_profile_specific_extension,
- {
- "Profile-specific extension",
- "rtcp.profile-specific-extension",
- FT_BYTES,
- BASE_NONE,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_setup,
- {
- "Stream setup",
- "rtcp.setup",
- FT_STRING,
- BASE_NONE,
- NULL,
- 0x0,
- "Stream setup, method and frame number", HFILL
- }
- },
- {
- &hf_rtcp_setup_frame,
- {
- "Setup frame",
- "rtcp.setup-frame",
- FT_FRAMENUM,
- BASE_NONE,
- NULL,
- 0x0,
- "Frame that set up this stream", HFILL
- }
- },
- {
- &hf_rtcp_setup_method,
- {
- "Setup Method",
- "rtcp.setup-method",
- FT_STRING,
- BASE_NONE,
- NULL,
- 0x0,
- "Method used to set up this stream", HFILL
- }
- },
- {
- &hf_rtcp_last_sr_timestamp_frame,
- {
- "Frame matching Last SR timestamp",
- "rtcp.lsr-frame",
- FT_FRAMENUM,
- BASE_NONE,
- NULL,
- 0x0,
- "Frame matching LSR field (used to calculate roundtrip delay)", HFILL
- }
- },
- {
- &hf_rtcp_time_since_last_sr,
- {
- "Time since Last SR captured",
- "rtcp.lsr-frame-captured",
- FT_UINT32,
- BASE_DEC,
- NULL,
- 0x0,
- "Time since frame matching LSR field was captured", HFILL
- }
- },
- {
- &hf_rtcp_roundtrip_delay,
- {
- "Roundtrip Delay(ms)",
- "rtcp.roundtrip-delay",
- FT_INT32,
- BASE_DEC,
- NULL,
- 0x0,
- "Calculated roundtrip delay in ms", HFILL
- }
- },
- {
- &hf_rtcp_xr_block_type,
- {
- "Type",
- "rtcp.xr.bt",
- FT_UINT8,
- BASE_DEC,
- VALS(rtcp_xr_type_vals),
- 0x0,
- "Block Type", HFILL
- }
- },
- {
- &hf_rtcp_xr_block_specific,
- {
- "Type Specific",
- "rtcp.xr.bs",
- FT_UINT8,
- BASE_DEC,
- NULL,
- 0x0,
- "Reserved", HFILL
- }
- },
- {
- &hf_rtcp_xr_block_length,
- {
- "Length",
- "rtcp.xr.bl",
- FT_UINT16,
- BASE_DEC,
- NULL,
- 0x0,
- "Block Length", HFILL
- }
- },
- {
- &hf_rtcp_ssrc_discarded,
- {
- "Fraction discarded",
- "rtcp.ssrc.discarded",
- FT_UINT8,
- BASE_DEC,
- NULL,
- 0x0,
- "Discard Rate", HFILL
- }
- },
- {
- &hf_rtcp_xr_voip_metrics_burst_density,
- {
- "Burst Density",
- "rtcp.xr.voipmetrics.burstdensity",
- FT_UINT8,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_xr_voip_metrics_gap_density,
- {
- "Gap Density",
- "rtcp.xr.voipmetrics.gapdensity",
- FT_UINT8,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_xr_voip_metrics_burst_duration,
- {
- "Burst Duration(ms)",
- "rtcp.xr.voipmetrics.burstduration",
- FT_UINT16,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_xr_voip_metrics_gap_duration,
- {
- "Gap Duration(ms)",
- "rtcp.xr.voipmetrics.gapduration",
- FT_UINT16,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_xr_voip_metrics_rtdelay,
- {
- "Round Trip Delay(ms)",
- "rtcp.xr.voipmetrics.rtdelay",
- FT_UINT16,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_xr_voip_metrics_esdelay,
- {
- "End System Delay(ms)",
- "rtcp.xr.voipmetrics.esdelay",
- FT_UINT16,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_xr_voip_metrics_siglevel,
- {
- "Signal Level",
- "rtcp.xr.voipmetrics.signallevel",
- FT_INT8,
- BASE_DEC,
- NULL,
- 0x0,
- "Signal level of 127 indicates this parameter is unavailable", HFILL
- }
- },
- {
- &hf_rtcp_xr_voip_metrics_noiselevel,
- {
- "Noise Level",
- "rtcp.xr.voipmetrics.noiselevel",
- FT_INT8,
- BASE_DEC,
- NULL,
- 0x0,
- "Noise level of 127 indicates this parameter is unavailable", HFILL
- }
- },
- {
- &hf_rtcp_xr_voip_metrics_rerl,
- {
- "Residual Echo Return Loss",
- "rtcp.xr.voipmetrics.rerl",
- FT_UINT8,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_xr_voip_metrics_gmin,
- {
- "Gmin",
- "rtcp.xr.voipmetrics.gmin",
- FT_UINT8,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_xr_voip_metrics_rfactor,
- {
- "R Factor",
- "rtcp.xr.voipmetrics.rfactor",
- FT_UINT8,
- BASE_DEC,
- NULL,
- 0x0,
- "R Factor is in the range of 0 to 100; 127 indicates this parameter is unavailable", HFILL
- }
- },
- {
- &hf_rtcp_xr_voip_metrics_extrfactor,
- {
- "External R Factor",
- "rtcp.xr.voipmetrics.extrfactor",
- FT_UINT8,
- BASE_DEC,
- NULL,
- 0x0,
- "R Factor is in the range of 0 to 100; 127 indicates this parameter is unavailable", HFILL
- }
- },
- {
- &hf_rtcp_xr_voip_metrics_moslq,
- {
- "MOS - Listening Quality",
- "rtcp.xr.voipmetrics.moslq",
- FT_FLOAT,
- BASE_NONE,
- NULL,
- 0x0,
- "MOS is in the range of 1 to 5; 127 indicates this parameter is unavailable", HFILL
- }
- },
- {
- &hf_rtcp_xr_voip_metrics_moscq,
- {
- "MOS - Conversational Quality",
- "rtcp.xr.voipmetrics.moscq",
- FT_FLOAT,
- BASE_NONE,
- NULL,
- 0x0,
- "MOS is in the range of 1 to 5; 127 indicates this parameter is unavailable", HFILL
- }
- },
- {
- &hf_rtcp_xr_voip_metrics_plc,
- {
- "Packet Loss Concealment Algorithm",
- "rtcp.xr.voipmetrics.plc",
- FT_UINT8,
- BASE_DEC,
- VALS(rtcp_xr_plc_algo_vals),
- 0xC0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_xr_voip_metrics_jbadaptive,
- {
- "Adaptive Jitter Buffer Algorithm",
- "rtcp.xr.voipmetrics.jba",
- FT_UINT8,
- BASE_DEC,
- VALS(rtcp_xr_jb_adaptive_vals),
- 0x30,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_xr_voip_metrics_jbrate,
- {
- "Jitter Buffer Rate",
- "rtcp.xr.voipmetrics.jbrate",
- FT_UINT8,
- BASE_DEC,
- NULL,
- 0x0F,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_xr_voip_metrics_jbnominal,
- {
- "Nominal Jitter Buffer Size",
- "rtcp.xr.voipmetrics.jbnominal",
- FT_UINT16,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_xr_voip_metrics_jbmax,
- {
- "Maximum Jitter Buffer Size",
- "rtcp.xr.voipmetrics.jbmax",
- FT_UINT16,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_xr_voip_metrics_jbabsmax,
- {
- "Absolute Maximum Jitter Buffer Size",
- "rtcp.xr.voipmetrics.jbabsmax",
- FT_UINT16,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_xr_thinning,
- {
- "Thinning factor",
- "rtcp.xr.tf",
- FT_UINT8,
- BASE_DEC,
+ &hf_rtcp_app_mux_localmuxport,
+ {
+ "Local Mux Port",
+ "rtcp.app.mux.muxport",
+ FT_UINT16,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_fsn,
+ {
+ "First sequence number",
+ "rtcp.nack.fsn",
+ FT_UINT16,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_blp,
+ {
+ "Bitmask of following lost packets",
+ "rtcp.nack.blp",
+ FT_UINT16,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_padding_count,
+ {
+ "Padding count",
+ "rtcp.padding.count",
+ FT_UINT8,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_padding_data,
+ {
+ "Padding data",
+ "rtcp.padding.data",
+ FT_BYTES,
+ BASE_NONE,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_profile_specific_extension,
+ {
+ "Profile-specific extension",
+ "rtcp.profile-specific-extension",
+ FT_BYTES,
+ BASE_NONE,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_setup,
+ {
+ "Stream setup",
+ "rtcp.setup",
+ FT_STRING,
+ BASE_NONE,
+ NULL,
+ 0x0,
+ "Stream setup, method and frame number", HFILL
+ }
+ },
+ {
+ &hf_rtcp_setup_frame,
+ {
+ "Setup frame",
+ "rtcp.setup-frame",
+ FT_FRAMENUM,
+ BASE_NONE,
+ NULL,
+ 0x0,
+ "Frame that set up this stream", HFILL
+ }
+ },
+ {
+ &hf_rtcp_setup_method,
+ {
+ "Setup Method",
+ "rtcp.setup-method",
+ FT_STRING,
+ BASE_NONE,
+ NULL,
+ 0x0,
+ "Method used to set up this stream", HFILL
+ }
+ },
+ {
+ &hf_rtcp_last_sr_timestamp_frame,
+ {
+ "Frame matching Last SR timestamp",
+ "rtcp.lsr-frame",
+ FT_FRAMENUM,
+ BASE_NONE,
+ NULL,
+ 0x0,
+ "Frame matching LSR field (used to calculate roundtrip delay)", HFILL
+ }
+ },
+ {
+ &hf_rtcp_time_since_last_sr,
+ {
+ "Time since Last SR captured",
+ "rtcp.lsr-frame-captured",
+ FT_UINT32,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ "Time since frame matching LSR field was captured", HFILL
+ }
+ },
+ {
+ &hf_rtcp_roundtrip_delay,
+ {
+ "Roundtrip Delay(ms)",
+ "rtcp.roundtrip-delay",
+ FT_INT32,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ "Calculated roundtrip delay in ms", HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_block_type,
+ {
+ "Type",
+ "rtcp.xr.bt",
+ FT_UINT8,
+ BASE_DEC,
+ VALS(rtcp_xr_type_vals),
+ 0x0,
+ "Block Type", HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_block_specific,
+ {
+ "Type Specific",
+ "rtcp.xr.bs",
+ FT_UINT8,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ "Reserved", HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_block_length,
+ {
+ "Length",
+ "rtcp.xr.bl",
+ FT_UINT16,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ "Block Length", HFILL
+ }
+ },
+ {
+ &hf_rtcp_ssrc_discarded,
+ {
+ "Fraction discarded",
+ "rtcp.ssrc.discarded",
+ FT_UINT8,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ "Discard Rate", HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_voip_metrics_burst_density,
+ {
+ "Burst Density",
+ "rtcp.xr.voipmetrics.burstdensity",
+ FT_UINT8,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_voip_metrics_gap_density,
+ {
+ "Gap Density",
+ "rtcp.xr.voipmetrics.gapdensity",
+ FT_UINT8,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_voip_metrics_burst_duration,
+ {
+ "Burst Duration(ms)",
+ "rtcp.xr.voipmetrics.burstduration",
+ FT_UINT16,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_voip_metrics_gap_duration,
+ {
+ "Gap Duration(ms)",
+ "rtcp.xr.voipmetrics.gapduration",
+ FT_UINT16,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_voip_metrics_rtdelay,
+ {
+ "Round Trip Delay(ms)",
+ "rtcp.xr.voipmetrics.rtdelay",
+ FT_UINT16,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_voip_metrics_esdelay,
+ {
+ "End System Delay(ms)",
+ "rtcp.xr.voipmetrics.esdelay",
+ FT_UINT16,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_voip_metrics_siglevel,
+ {
+ "Signal Level",
+ "rtcp.xr.voipmetrics.signallevel",
+ FT_INT8,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ "Signal level of 127 indicates this parameter is unavailable", HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_voip_metrics_noiselevel,
+ {
+ "Noise Level",
+ "rtcp.xr.voipmetrics.noiselevel",
+ FT_INT8,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ "Noise level of 127 indicates this parameter is unavailable", HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_voip_metrics_rerl,
+ {
+ "Residual Echo Return Loss",
+ "rtcp.xr.voipmetrics.rerl",
+ FT_UINT8,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_voip_metrics_gmin,
+ {
+ "Gmin",
+ "rtcp.xr.voipmetrics.gmin",
+ FT_UINT8,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_voip_metrics_rfactor,
+ {
+ "R Factor",
+ "rtcp.xr.voipmetrics.rfactor",
+ FT_UINT8,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ "R Factor is in the range of 0 to 100; 127 indicates this parameter is unavailable", HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_voip_metrics_extrfactor,
+ {
+ "External R Factor",
+ "rtcp.xr.voipmetrics.extrfactor",
+ FT_UINT8,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ "R Factor is in the range of 0 to 100; 127 indicates this parameter is unavailable", HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_voip_metrics_moslq,
+ {
+ "MOS - Listening Quality",
+ "rtcp.xr.voipmetrics.moslq",
+ FT_FLOAT,
+ BASE_NONE,
+ NULL,
+ 0x0,
+ "MOS is in the range of 1 to 5; 127 indicates this parameter is unavailable", HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_voip_metrics_moscq,
+ {
+ "MOS - Conversational Quality",
+ "rtcp.xr.voipmetrics.moscq",
+ FT_FLOAT,
+ BASE_NONE,
+ NULL,
+ 0x0,
+ "MOS is in the range of 1 to 5; 127 indicates this parameter is unavailable", HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_voip_metrics_plc,
+ {
+ "Packet Loss Concealment Algorithm",
+ "rtcp.xr.voipmetrics.plc",
+ FT_UINT8,
+ BASE_DEC,
+ VALS(rtcp_xr_plc_algo_vals),
+ 0xC0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_voip_metrics_jbadaptive,
+ {
+ "Adaptive Jitter Buffer Algorithm",
+ "rtcp.xr.voipmetrics.jba",
+ FT_UINT8,
+ BASE_DEC,
+ VALS(rtcp_xr_jb_adaptive_vals),
+ 0x30,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_voip_metrics_jbrate,
+ {
+ "Jitter Buffer Rate",
+ "rtcp.xr.voipmetrics.jbrate",
+ FT_UINT8,
+ BASE_DEC,
+ NULL,
+ 0x0F,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_voip_metrics_jbnominal,
+ {
+ "Nominal Jitter Buffer Size",
+ "rtcp.xr.voipmetrics.jbnominal",
+ FT_UINT16,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_voip_metrics_jbmax,
+ {
+ "Maximum Jitter Buffer Size",
+ "rtcp.xr.voipmetrics.jbmax",
+ FT_UINT16,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_voip_metrics_jbabsmax,
+ {
+ "Absolute Maximum Jitter Buffer Size",
+ "rtcp.xr.voipmetrics.jbabsmax",
+ FT_UINT16,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_thinning,
+ {
+ "Thinning factor",
+ "rtcp.xr.tf",
+ FT_UINT8,
+ BASE_DEC,
NULL,
- 0x0F,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_xr_stats_loss_flag,
- {
- "Loss Report Flag",
- "rtcp.xr.stats.lrflag",
- FT_BOOLEAN,
- 8,
- NULL,
- 0x80,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_xr_stats_dup_flag,
- {
- "Duplicates Report Flag",
- "rtcp.xr.stats.dupflag",
- FT_BOOLEAN,
- 8,
- NULL,
- 0x40,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_xr_stats_jitter_flag,
- {
- "Jitter Report Flag",
- "rtcp.xr.stats.jitterflag",
- FT_BOOLEAN,
- 8,
- NULL,
- 0x20,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_xr_stats_ttl,
- {
- "TTL or Hop Limit Flag",
- "rtcp.xr.stats.ttl",
- FT_UINT8,
- BASE_DEC,
- VALS(rtcp_xr_ip_ttl_vals),
- 0x18,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_xr_endseq,
- {
- "End Sequence Number",
- "rtcp.xr.endseq",
- FT_UINT16,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_xr_beginseq,
- {
- "Begin Sequence Number",
- "rtcp.xr.beginseq",
- FT_UINT16,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_xr_stats_lost,
- {
- "Lost Packets",
- "rtcp.xr.stats.lost",
- FT_UINT32,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_xr_stats_dups,
- {
- "Duplicate Packets",
- "rtcp.xr.stats.dups",
- FT_UINT32,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_xr_stats_minjitter,
- {
- "Minimum Jitter",
- "rtcp.xr.stats.minjitter",
- FT_UINT32,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_xr_stats_maxjitter,
- {
- "Maximum Jitter",
- "rtcp.xr.stats.maxjitter",
- FT_UINT32,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_xr_stats_meanjitter,
- {
- "Mean Jitter",
- "rtcp.xr.stats.meanjitter",
- FT_UINT32,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_xr_stats_devjitter,
- {
- "Standard Deviation of Jitter",
- "rtcp.xr.stats.devjitter",
- FT_UINT32,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_xr_stats_minttl,
- {
- "Minimum TTL or Hop Limit",
- "rtcp.xr.stats.minttl",
- FT_UINT8,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_xr_stats_maxttl,
- {
- "Maximum TTL or Hop Limit",
- "rtcp.xr.stats.maxttl",
- FT_UINT8,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_xr_stats_meanttl,
- {
- "Mean TTL or Hop Limit",
- "rtcp.xr.stats.meanttl",
- FT_UINT8,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_xr_stats_devttl,
- {
- "Standard Deviation of TTL",
- "rtcp.xr.stats.devttl",
- FT_UINT8,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_xr_lrr,
- {
- "Last RR timestamp",
- "rtcp.xr.lrr",
- FT_UINT32,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_xr_dlrr,
- {
- "Delay since last RR timestamp",
- "rtcp.xr.dlrr",
- FT_UINT32,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_length_check,
- {
- "RTCP frame length check",
- "rtcp.length_check",
- FT_BOOLEAN,
- BASE_NONE,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_bye_reason_not_padded,
- {
- "BYE reason string not NULL padded",
- "rtcp.bye_reason_not_padded",
- FT_NONE,
- BASE_NONE,
- NULL,
- 0x0,
- "RTCP BYE reason string not padded", HFILL
- }
- },
- {
- &hf_rtcp_rtpfb_fmt,
- {
- "RTCP Feedback message type (FMT)",
- "rtcp.rtpfb.fmt",
- FT_UINT8,
- BASE_DEC,
- VALS(rtcp_rtpfb_fmt_vals),
- 0x1f,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_psfb_fmt,
- {
- "RTCP Feedback message type (FMT)",
- "rtcp.psfb.fmt",
- FT_UINT8,
- BASE_DEC,
- VALS(rtcp_psfb_fmt_vals),
- 0x1f,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_rtpfb_nack_pid,
- {
- "RTCP Transport Feedback NACK",
- "rtcp.rtpfb.nack",
- FT_UINT16,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_rtpfb_nack_blp,
- {
- "RTCP Transport Feedback NACK BLP",
- "rtcp.rtpfb.nack.blp",
- FT_UINT16,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_fci,
- {
- "Feedback Control Information (FCI)",
- "rtcp.fci",
- FT_BYTES,
- BASE_NONE,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_xr_idms_spst,
- {
- "Syncronization Packet Sender Type",
- "rtcp.xr.idms.spst",
- FT_UINT8,
- BASE_DEC,
+ 0x0F,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_stats_loss_flag,
+ {
+ "Loss Report Flag",
+ "rtcp.xr.stats.lrflag",
+ FT_BOOLEAN,
+ 8,
+ NULL,
+ 0x80,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_stats_dup_flag,
+ {
+ "Duplicates Report Flag",
+ "rtcp.xr.stats.dupflag",
+ FT_BOOLEAN,
+ 8,
+ NULL,
+ 0x40,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_stats_jitter_flag,
+ {
+ "Jitter Report Flag",
+ "rtcp.xr.stats.jitterflag",
+ FT_BOOLEAN,
+ 8,
+ NULL,
+ 0x20,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_stats_ttl,
+ {
+ "TTL or Hop Limit Flag",
+ "rtcp.xr.stats.ttl",
+ FT_UINT8,
+ BASE_DEC,
+ VALS(rtcp_xr_ip_ttl_vals),
+ 0x18,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_endseq,
+ {
+ "End Sequence Number",
+ "rtcp.xr.endseq",
+ FT_UINT16,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_beginseq,
+ {
+ "Begin Sequence Number",
+ "rtcp.xr.beginseq",
+ FT_UINT16,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_stats_lost,
+ {
+ "Lost Packets",
+ "rtcp.xr.stats.lost",
+ FT_UINT32,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_stats_dups,
+ {
+ "Duplicate Packets",
+ "rtcp.xr.stats.dups",
+ FT_UINT32,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_stats_minjitter,
+ {
+ "Minimum Jitter",
+ "rtcp.xr.stats.minjitter",
+ FT_UINT32,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_stats_maxjitter,
+ {
+ "Maximum Jitter",
+ "rtcp.xr.stats.maxjitter",
+ FT_UINT32,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_stats_meanjitter,
+ {
+ "Mean Jitter",
+ "rtcp.xr.stats.meanjitter",
+ FT_UINT32,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_stats_devjitter,
+ {
+ "Standard Deviation of Jitter",
+ "rtcp.xr.stats.devjitter",
+ FT_UINT32,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_stats_minttl,
+ {
+ "Minimum TTL or Hop Limit",
+ "rtcp.xr.stats.minttl",
+ FT_UINT8,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_stats_maxttl,
+ {
+ "Maximum TTL or Hop Limit",
+ "rtcp.xr.stats.maxttl",
+ FT_UINT8,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_stats_meanttl,
+ {
+ "Mean TTL or Hop Limit",
+ "rtcp.xr.stats.meanttl",
+ FT_UINT8,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_stats_devttl,
+ {
+ "Standard Deviation of TTL",
+ "rtcp.xr.stats.devttl",
+ FT_UINT8,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_lrr,
+ {
+ "Last RR timestamp",
+ "rtcp.xr.lrr",
+ FT_UINT32,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_dlrr,
+ {
+ "Delay since last RR timestamp",
+ "rtcp.xr.dlrr",
+ FT_UINT32,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_length_check,
+ {
+ "RTCP frame length check",
+ "rtcp.length_check",
+ FT_BOOLEAN,
+ BASE_NONE,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_bye_reason_not_padded,
+ {
+ "BYE reason string not NULL padded",
+ "rtcp.bye_reason_not_padded",
+ FT_NONE,
+ BASE_NONE,
+ NULL,
+ 0x0,
+ "RTCP BYE reason string not padded", HFILL
+ }
+ },
+ {
+ &hf_rtcp_rtpfb_fmt,
+ {
+ "RTCP Feedback message type (FMT)",
+ "rtcp.rtpfb.fmt",
+ FT_UINT8,
+ BASE_DEC,
+ VALS(rtcp_rtpfb_fmt_vals),
+ 0x1f,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_psfb_fmt,
+ {
+ "RTCP Feedback message type (FMT)",
+ "rtcp.psfb.fmt",
+ FT_UINT8,
+ BASE_DEC,
+ VALS(rtcp_psfb_fmt_vals),
+ 0x1f,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_rtpfb_nack_pid,
+ {
+ "RTCP Transport Feedback NACK",
+ "rtcp.rtpfb.nack",
+ FT_UINT16,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_rtpfb_nack_blp,
+ {
+ "RTCP Transport Feedback NACK BLP",
+ "rtcp.rtpfb.nack.blp",
+ FT_UINT16,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_fci,
+ {
+ "Feedback Control Information (FCI)",
+ "rtcp.fci",
+ FT_BYTES,
+ BASE_NONE,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_idms_spst,
+ {
+ "Syncronization Packet Sender Type",
+ "rtcp.xr.idms.spst",
+ FT_UINT8,
+ BASE_DEC,
NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_xr_idms_pt,
- {
- "Payload Type",
- "rtcp.xr.idms.pt",
- FT_UINT8,
- BASE_DEC,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_idms_pt,
+ {
+ "Payload Type",
+ "rtcp.xr.idms.pt",
+ FT_UINT8,
+ BASE_DEC,
NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_xr_idms_msci,
- {
- "Media Stream Correlation Identifier",
- "rtcp.xr.idms.msci",
- FT_UINT32,
- BASE_DEC,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_idms_msci,
+ {
+ "Media Stream Correlation Identifier",
+ "rtcp.xr.idms.msci",
+ FT_UINT32,
+ BASE_DEC,
NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_xr_idms_source_ssrc,
- {
- "Source SSRC",
- "rtcp.xr.idms.source_ssrc",
- FT_UINT32,
- BASE_DEC,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_idms_source_ssrc,
+ {
+ "Source SSRC",
+ "rtcp.xr.idms.source_ssrc",
+ FT_UINT32,
+ BASE_DEC,
NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_xr_idms_ntp_rcv_ts_msw,
- {
- "NTP Timestamp of packet reception (msw)",
- "rtcp.xr.idms.ntp_rcv_ts_msw",
- FT_UINT32,
- BASE_DEC,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_idms_ntp_rcv_ts_msw,
+ {
+ "NTP Timestamp of packet reception (msw)",
+ "rtcp.xr.idms.ntp_rcv_ts_msw",
+ FT_UINT32,
+ BASE_DEC,
NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_xr_idms_ntp_rcv_ts_lsw,
- {
- "NTP Timestamp of packet reception (lsw)",
- "rtcp.xr.idms.ntp_rcv_ts_lsw",
- FT_UINT32,
- BASE_DEC,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_idms_ntp_rcv_ts_lsw,
+ {
+ "NTP Timestamp of packet reception (lsw)",
+ "rtcp.xr.idms.ntp_rcv_ts_lsw",
+ FT_UINT32,
+ BASE_DEC,
NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_xr_idms_rtp_ts,
- {
- "RTP Timestamp of packet",
- "rtcp.xr.idms.rtp_ts",
- FT_UINT32,
- BASE_DEC,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_idms_rtp_ts,
+ {
+ "RTP Timestamp of packet",
+ "rtcp.xr.idms.rtp_ts",
+ FT_UINT32,
+ BASE_DEC,
NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_xr_idms_ntp_pres_ts,
- {
- "NTP Timestamp of presentation",
- "rtcp.xr.idms.ntp_pres_ts",
- FT_UINT32,
- BASE_DEC,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_idms_ntp_pres_ts,
+ {
+ "NTP Timestamp of presentation",
+ "rtcp.xr.idms.ntp_pres_ts",
+ FT_UINT32,
+ BASE_DEC,
NULL,
- 0x0,
- NULL, HFILL
- }
- },
+ 0x0,
+ NULL, HFILL
+ }
+ },
{
&hf_rtcp_psfb_fir_fci_ssrc,
- {
- "SSRC",
- "rtcp.psfb.fir.fci.ssrc",
- FT_UINT32,
- BASE_HEX_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
+ {
+ "SSRC",
+ "rtcp.psfb.fir.fci.ssrc",
+ FT_UINT32,
+ BASE_HEX_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
{
&hf_rtcp_psfb_fir_fci_csn,
- {
- "Command Sequence Number",
- "rtcp.psfb.fir.fci.csn",
- FT_UINT8,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
+ {
+ "Command Sequence Number",
+ "rtcp.psfb.fir.fci.csn",
+ FT_UINT8,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
{
&hf_rtcp_psfb_fir_fci_reserved,
- {
- "Reserved",
- "rtcp.psfb.fir.fci.reserved",
- FT_UINT32,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
+ {
+ "Reserved",
+ "rtcp.psfb.fir.fci.reserved",
+ FT_UINT32,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
{
&hf_rtcp_rtpfb_tmbbr_fci_ssrc,
- {
- "SSRC",
- "rtcp.rtpfb.tmmbr.fci.ssrc",
- FT_UINT32,
- BASE_HEX_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
+ {
+ "SSRC",
+ "rtcp.rtpfb.tmmbr.fci.ssrc",
+ FT_UINT32,
+ BASE_HEX_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
{
&hf_rtcp_rtpfb_tmbbr_fci_exp,
- {
- "MxTBR Exp",
- "rtcp.rtpfb.tmmbr.fci.exp",
- FT_UINT8,
- BASE_DEC,
- NULL,
- 0xfc,
- NULL, HFILL
- }
- },
+ {
+ "MxTBR Exp",
+ "rtcp.rtpfb.tmmbr.fci.exp",
+ FT_UINT8,
+ BASE_DEC,
+ NULL,
+ 0xfc,
+ NULL, HFILL
+ }
+ },
{
&hf_rtcp_rtpfb_tmbbr_fci_mantissa,
- {
- "MxTBR Mantissa",
- "rtcp.rtpfb.tmmbr.fci.mantissa",
- FT_UINT32,
- BASE_DEC,
- NULL,
- 0x3fffe,
- NULL, HFILL
- }
- },
+ {
+ "MxTBR Mantissa",
+ "rtcp.rtpfb.tmmbr.fci.mantissa",
+ FT_UINT32,
+ BASE_DEC,
+ NULL,
+ 0x3fffe,
+ NULL, HFILL
+ }
+ },
{
&hf_rtcp_rtpfb_tmbbr_fci_bitrate,
- {
- "Maximum total media bit rate",
- "rtcp.rtpfb.tmmbr.fci.bitrate",
- FT_STRING,
- BASE_NONE,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
+ {
+ "Maximum total media bit rate",
+ "rtcp.rtpfb.tmmbr.fci.bitrate",
+ FT_STRING,
+ BASE_NONE,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
{
&hf_rtcp_rtpfb_tmbbr_fci_measuredoverhead,
- {
- "Measured Overhead",
- "rtcp.rtpfb.tmmbr.fci.measuredoverhead",
- FT_UINT16,
- BASE_DEC,
- NULL,
- 0x1ff,
- NULL, HFILL
- }
- },
-
-
- {
- &hf_srtcp_e,
- {
- "SRTCP E flag",
- "srtcp.e",
- FT_BOOLEAN,
- 32,
- NULL,
- 0x80000000,
- "SRTCP Encryption Flag", HFILL
- }
- },
- {
- &hf_srtcp_index,
- {
- "SRTCP Index",
- "srtcp.index",
- FT_UINT32,
- BASE_DEC_HEX,
- NULL,
- 0x7fffffff,
- NULL, HFILL
- }
- },
- {
- &hf_srtcp_mki,
- {
- "SRTCP MKI",
- "srtcp.mki",
- FT_BYTES,
- BASE_NONE,
- NULL,
- 0,
- "SRTCP Master Key Index", HFILL
- }
- },
- {
- &hf_srtcp_auth_tag,
- {
- "SRTCP Auth Tag",
- "srtcp.auth_tag",
- FT_BYTES,
- BASE_NONE,
- NULL,
- 0,
- "SRTCP Authentication Tag", HFILL
- }
- },
- /* additions for BT XNQ block as defined in RFC5093 */
- {
- &hf_rtcp_xr_btxnq_begseq,
- {
- "Starting sequence number",
- "rtcp.xr.btxnq.begseq",
- FT_UINT16,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_xr_btxnq_endseq,
- {
- "Last sequence number",
- "rtcp.xr.btxnq.endseq",
- FT_UINT16,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_xr_btxnq_vmaxdiff,
- {
- "Maximum IPDV difference in 1 cycle",
- "rtcp.xr.btxnq.vmaxdiff",
- FT_UINT16,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_xr_btxnq_vrange,
- {
- "Maximum IPDV difference seen to date",
- "rtcp.xr.btxnq.vrange",
- FT_UINT16,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_xr_btxnq_vsum,
- {
- "Sum of peak IPDV differences to date",
- "rtcp.xr.btxnq.vsum",
- FT_UINT32,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_xr_btxnq_cycles,
- {
- "Number of cycles in calculation",
- "rtcp.xr.btxnq.cycles",
- FT_UINT16,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_xr_btxnq_jbevents,
- {
- "Number of jitter buffer adaptations to date",
- "rtcp.xr.btxnq.jbevents",
- FT_UINT16,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_xr_btxnq_spare,
- {
- "Spare/reserved bits",
- "rtcp.xr.btxnq.spare",
- FT_STRING,
- BASE_NONE,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_xr_btxnq_tdegnet,
- {
- "Time degraded by packet loss or late delivery",
- "rtcp.xr.btxnq.tdegnet",
- FT_UINT32,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_xr_btxnq_tdegjit,
- {
- "Time degraded by jitter buffer adaptation events",
- "rtcp.xr.btxnq.tdegjit",
- FT_UINT32,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_xr_btxnq_es,
- {
- "ES due to unavailable packet events",
- "rtcp.xr.btxnq.es",
- FT_UINT32,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- {
- &hf_rtcp_xr_btxnq_ses,
- {
- "SES due to unavailable packet events",
- "rtcp.xr.btxnq.ses",
- FT_UINT32,
- BASE_DEC,
- NULL,
- 0x0,
- NULL, HFILL
- }
- },
- };
-
- static gint *ett[] =
- {
- &ett_rtcp,
- &ett_rtcp_sr,
- &ett_rtcp_rr,
- &ett_rtcp_sdes,
- &ett_rtcp_bye,
- &ett_rtcp_app,
- &ett_rtcp_rtpfb,
- &ett_rtcp_psfb,
- &ett_rtcp_xr,
- &ett_rtcp_fir,
- &ett_rtcp_nack,
- &ett_ssrc,
- &ett_ssrc_item,
- &ett_ssrc_ext_high,
- &ett_sdes,
- &ett_sdes_item,
- &ett_PoC1,
+ {
+ "Measured Overhead",
+ "rtcp.rtpfb.tmmbr.fci.measuredoverhead",
+ FT_UINT16,
+ BASE_DEC,
+ NULL,
+ 0x1ff,
+ NULL, HFILL
+ }
+ },
+
+
+ {
+ &hf_srtcp_e,
+ {
+ "SRTCP E flag",
+ "srtcp.e",
+ FT_BOOLEAN,
+ 32,
+ NULL,
+ 0x80000000,
+ "SRTCP Encryption Flag", HFILL
+ }
+ },
+ {
+ &hf_srtcp_index,
+ {
+ "SRTCP Index",
+ "srtcp.index",
+ FT_UINT32,
+ BASE_DEC_HEX,
+ NULL,
+ 0x7fffffff,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_srtcp_mki,
+ {
+ "SRTCP MKI",
+ "srtcp.mki",
+ FT_BYTES,
+ BASE_NONE,
+ NULL,
+ 0,
+ "SRTCP Master Key Index", HFILL
+ }
+ },
+ {
+ &hf_srtcp_auth_tag,
+ {
+ "SRTCP Auth Tag",
+ "srtcp.auth_tag",
+ FT_BYTES,
+ BASE_NONE,
+ NULL,
+ 0,
+ "SRTCP Authentication Tag", HFILL
+ }
+ },
+ /* additions for BT XNQ block as defined in RFC5093 */
+ {
+ &hf_rtcp_xr_btxnq_begseq,
+ {
+ "Starting sequence number",
+ "rtcp.xr.btxnq.begseq",
+ FT_UINT16,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_btxnq_endseq,
+ {
+ "Last sequence number",
+ "rtcp.xr.btxnq.endseq",
+ FT_UINT16,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_btxnq_vmaxdiff,
+ {
+ "Maximum IPDV difference in 1 cycle",
+ "rtcp.xr.btxnq.vmaxdiff",
+ FT_UINT16,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_btxnq_vrange,
+ {
+ "Maximum IPDV difference seen to date",
+ "rtcp.xr.btxnq.vrange",
+ FT_UINT16,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_btxnq_vsum,
+ {
+ "Sum of peak IPDV differences to date",
+ "rtcp.xr.btxnq.vsum",
+ FT_UINT32,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_btxnq_cycles,
+ {
+ "Number of cycles in calculation",
+ "rtcp.xr.btxnq.cycles",
+ FT_UINT16,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_btxnq_jbevents,
+ {
+ "Number of jitter buffer adaptations to date",
+ "rtcp.xr.btxnq.jbevents",
+ FT_UINT16,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_btxnq_spare,
+ {
+ "Spare/reserved bits",
+ "rtcp.xr.btxnq.spare",
+ FT_STRING,
+ BASE_NONE,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_btxnq_tdegnet,
+ {
+ "Time degraded by packet loss or late delivery",
+ "rtcp.xr.btxnq.tdegnet",
+ FT_UINT32,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_btxnq_tdegjit,
+ {
+ "Time degraded by jitter buffer adaptation events",
+ "rtcp.xr.btxnq.tdegjit",
+ FT_UINT32,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_btxnq_es,
+ {
+ "ES due to unavailable packet events",
+ "rtcp.xr.btxnq.es",
+ FT_UINT32,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_rtcp_xr_btxnq_ses,
+ {
+ "SES due to unavailable packet events",
+ "rtcp.xr.btxnq.ses",
+ FT_UINT32,
+ BASE_DEC,
+ NULL,
+ 0x0,
+ NULL, HFILL
+ }
+ },
+ };
+
+ static gint *ett[] =
+ {
+ &ett_rtcp,
+ &ett_rtcp_sr,
+ &ett_rtcp_rr,
+ &ett_rtcp_sdes,
+ &ett_rtcp_bye,
+ &ett_rtcp_app,
+ &ett_rtcp_rtpfb,
+ &ett_rtcp_psfb,
+ &ett_rtcp_xr,
+ &ett_rtcp_fir,
+ &ett_rtcp_nack,
+ &ett_ssrc,
+ &ett_ssrc_item,
+ &ett_ssrc_ext_high,
+ &ett_sdes,
+ &ett_sdes_item,
+ &ett_PoC1,
&ett_mux,
- &ett_rtcp_setup,
- &ett_rtcp_roundtrip_delay,
- &ett_xr_block,
- &ett_xr_block_contents,
- &ett_xr_ssrc,
- &ett_xr_loss_chunk,
- &ett_poc1_conn_contents,
- &ett_rtcp_nack_blp,
- };
-
- module_t *rtcp_module;
-
- proto_rtcp = proto_register_protocol("Real-time Transport Control Protocol",
+ &ett_rtcp_setup,
+ &ett_rtcp_roundtrip_delay,
+ &ett_xr_block,
+ &ett_xr_block_contents,
+ &ett_xr_ssrc,
+ &ett_xr_loss_chunk,
+ &ett_poc1_conn_contents,
+ &ett_rtcp_nack_blp,
+ };
+
+ module_t *rtcp_module;
+
+ proto_rtcp = proto_register_protocol("Real-time Transport Control Protocol",
"RTCP", "rtcp");
- proto_register_field_array(proto_rtcp, hf, array_length(hf));
- proto_register_subtree_array(ett, array_length(ett));
+ proto_register_field_array(proto_rtcp, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
- register_dissector("rtcp", dissect_rtcp, proto_rtcp);
+ register_dissector("rtcp", dissect_rtcp, proto_rtcp);
- rtcp_module = prefs_register_protocol(proto_rtcp, NULL);
+ rtcp_module = prefs_register_protocol(proto_rtcp, NULL);
- prefs_register_bool_preference(rtcp_module, "show_setup_info",
- "Show stream setup information",
- "Where available, show which protocol and frame caused "
- "this RTCP stream to be created",
- &global_rtcp_show_setup_info);
+ prefs_register_bool_preference(rtcp_module, "show_setup_info",
+ "Show stream setup information",
+ "Where available, show which protocol and frame caused "
+ "this RTCP stream to be created",
+ &global_rtcp_show_setup_info);
- prefs_register_bool_preference(rtcp_module, "heuristic_rtcp",
- "Try to decode RTCP outside of conversations",
- "If call control SIP/H.323/RTSP/.. messages are missing in the trace, "
- "RTCP isn't decoded without this",
- &global_rtcp_heur);
+ prefs_register_bool_preference(rtcp_module, "heuristic_rtcp",
+ "Try to decode RTCP outside of conversations",
+ "If call control SIP/H.323/RTSP/.. messages are missing in the trace, "
+ "RTCP isn't decoded without this",
+ &global_rtcp_heur);
- prefs_register_bool_preference(rtcp_module, "show_roundtrip_calculation",
- "Show relative roundtrip calculations",
- "Try to work out network delay by comparing time between packets "
- "as captured and delays as seen by endpoint",
- &global_rtcp_show_roundtrip_calculation);
+ prefs_register_bool_preference(rtcp_module, "show_roundtrip_calculation",
+ "Show relative roundtrip calculations",
+ "Try to work out network delay by comparing time between packets "
+ "as captured and delays as seen by endpoint",
+ &global_rtcp_show_roundtrip_calculation);
- prefs_register_uint_preference(rtcp_module, "roundtrip_min_threshhold",
- "Minimum roundtrip calculation to report (ms)",
- "Minimum (absolute) calculated roundtrip delay time in milliseconds that "
- "should be reported",
- 10, &global_rtcp_show_roundtrip_calculation_minimum);
+ prefs_register_uint_preference(rtcp_module, "roundtrip_min_threshhold",
+ "Minimum roundtrip calculation to report (ms)",
+ "Minimum (absolute) calculated roundtrip delay time in milliseconds that "
+ "should be reported",
+ 10, &global_rtcp_show_roundtrip_calculation_minimum);
- /* Register table for sub-dissetors */
- rtcp_dissector_table = register_dissector_table("rtcp.app.name", "RTCP Application Name", FT_STRING, BASE_NONE);
+ /* Register table for sub-dissetors */
+ rtcp_dissector_table = register_dissector_table("rtcp.app.name", "RTCP Application Name", FT_STRING, BASE_NONE);
}
void
proto_reg_handoff_rtcp(void)
{
- /*
- * Register this dissector as one that can be selected by a
- * UDP port number.
- */
- rtcp_handle = find_dissector("rtcp");
- dissector_add_handle("udp.port", rtcp_handle);
-
- heur_dissector_add( "udp", dissect_rtcp_heur, proto_rtcp);
+ /*
+ * Register this dissector as one that can be selected by a
+ * UDP port number.
+ */
+ rtcp_handle = find_dissector("rtcp");
+ dissector_add_handle("udp.port", rtcp_handle);
+
+ heur_dissector_add( "udp", dissect_rtcp_heur, proto_rtcp);
heur_dissector_add("stun", dissect_rtcp_heur, proto_rtcp);
}
diff --git a/epan/dissectors/packet-sflow.c b/epan/dissectors/packet-sflow.c
index 17797969af..265defc7ef 100644
--- a/epan/dissectors/packet-sflow.c
+++ b/epan/dissectors/packet-sflow.c
@@ -876,11 +876,11 @@ dissect_sflow_245_address_type(tvbuff_t *tvb, proto_tree *tree, gint offset,
switch (addr_type) {
case ADDR_TYPE_IPV4:
len = 4;
- proto_tree_add_item(tree, hf_type->hf_addr_v4, tvb, offset, 4, FALSE);
+ proto_tree_add_item(tree, hf_type->hf_addr_v4, tvb, offset, 4, ENC_BIG_ENDIAN);
break;
case ADDR_TYPE_IPV6:
len = 16;
- proto_tree_add_item(tree, hf_type->hf_addr_v6, tvb, offset, 16, FALSE);
+ proto_tree_add_item(tree, hf_type->hf_addr_v6, tvb, offset, 16, ENC_NA);
break;
default:
/* acferen: November 10, 2010
diff --git a/epan/dissectors/packet-ucp.c b/epan/dissectors/packet-ucp.c
index 739c8c1966..1e1fa9f447 100644
--- a/epan/dissectors/packet-ucp.c
+++ b/epan/dissectors/packet-ucp.c
@@ -798,7 +798,7 @@ ucp_handle_string(proto_tree *tree, tvbuff_t *tvb, int field, int *offset)
} else
len = idx - *offset;
if (len > 0)
- proto_tree_add_item(tree, field, tvb, *offset, len, FALSE);
+ proto_tree_add_item(tree, field, tvb, *offset, len, ENC_ASCII|ENC_NA);
*offset += len;
if (idx != -1)
*offset += 1; /* skip terminating '/' */