aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-gsm_a_bssmap.c
diff options
context:
space:
mode:
authorBill Meier <wmeier@newsguy.com>2010-05-11 16:54:55 +0000
committerBill Meier <wmeier@newsguy.com>2010-05-11 16:54:55 +0000
commit0fc91157051cbd3013d972cf6c82274ab09ab36c (patch)
treea3a5973157b3245a4fa38e847c9a709d3bedda02 /epan/dissectors/packet-gsm_a_bssmap.c
parent1a474d8264adc87bc225b451c2727e95da066ca4 (diff)
Use consistent indentation; Whitesapce & formatting cleanup.
svn path=/trunk/; revision=32755
Diffstat (limited to 'epan/dissectors/packet-gsm_a_bssmap.c')
-rw-r--r--epan/dissectors/packet-gsm_a_bssmap.c8388
1 files changed, 4194 insertions, 4194 deletions
diff --git a/epan/dissectors/packet-gsm_a_bssmap.c b/epan/dissectors/packet-gsm_a_bssmap.c
index f5dff1a18a..9c199dcced 100644
--- a/epan/dissectors/packet-gsm_a_bssmap.c
+++ b/epan/dissectors/packet-gsm_a_bssmap.c
@@ -6,13 +6,13 @@
*
* Updated to 3GPP TS 48.008 version 8.4.0 Release 8
* Copyrigt 2008, Anders Broman <anders.broman [at] ericsson.com
- * Title 3GPP Other
+ * Title 3GPP Other
*
* Reference [2]
* Mobile-services Switching Centre - Base Station System
* (MSC - BSS) interface;
* Layer 3 specification
- * (GSM 08.08 version 7.7.0 Release 1998) TS 100 590 v7.7.0
+ * (GSM 08.08 version 7.7.0 Release 1998) TS 100 590 v7.7.0
* 3GPP TS 48.008 version 8.4.0 Release 8
*
* $Id$
@@ -58,273 +58,273 @@
/* PROTOTYPES/FORWARDS */
const value_string gsm_a_bssmap_msg_strings[] = {
- { 0x01, "Assignment Request" },
- { 0x02, "Assignment Complete" },
- { 0x03, "Assignment Failure" },
- { 0x08, "Channel Modify request" },
- { 0x10, "Handover Request" },
- { 0x11, "Handover Required" },
- { 0x12, "Handover Request Acknowledge" },
- { 0x13, "Handover Command" },
- { 0x14, "Handover Complete" },
- { 0x15, "Handover Succeeded" },
- { 0x16, "Handover Failure" },
- { 0x17, "Handover Performed" },
- { 0x18, "Handover Candidate Enquire" },
- { 0x19, "Handover Candidate Response" },
- { 0x1a, "Handover Required Reject" },
- { 0x1b, "Handover Detect" },
- { 0x1c, "Internal Handover Required" },
- { 0x1d, "Internal Handover Required Reject" },
- { 0x1e, "Internal Handover Command" },
- { 0x1f, "Internal Handover Enquiry" },
- { 0x20, "Clear Command" },
- { 0x21, "Clear Complete" },
- { 0x22, "Clear Request" },
- { 0x23, "Reserved" },
- { 0x24, "Reserved" },
- { 0x25, "SAPI 'n' Reject" },
- { 0x26, "Confusion" },
- { 0x28, "Suspend" },
- { 0x29, "Resume" },
- { 0x2a, "Connection Oriented Information" },
- { 0x2b, "Perform Location Request" },
- { 0x2c, "LSA Information" },
- { 0x2d, "Perform Location Response" },
- { 0x2e, "Perform Location Abort" },
- { 0x2f, "Common Id" },
- { 0x30, "Reset" },
- { 0x31, "Reset Acknowledge" },
- { 0x32, "Overload" },
- { 0x33, "Reserved" },
- { 0x34, "Reset Circuit" },
- { 0x35, "Reset Circuit Acknowledge" },
- { 0x36, "MSC Invoke Trace" },
- { 0x37, "BSS Invoke Trace" },
- { 0x3a, "Connectionless Information" },
- { 0x3c, "Reset Resource" },
- { 0x3d, "Reset Resource Acknowledge" },
- { 0x40, "Block" },
- { 0x41, "Blocking Acknowledge" },
- { 0x42, "Unblock" },
- { 0x43, "Unblocking Acknowledge" },
- { 0x44, "Circuit Group Block" },
- { 0x45, "Circuit Group Blocking Acknowledge" },
- { 0x46, "Circuit Group Unblock" },
- { 0x47, "Circuit Group Unblocking Acknowledge" },
- { 0x48, "Unequipped Circuit" },
- { 0x4e, "Change Circuit" },
- { 0x4f, "Change Circuit Acknowledge" },
- { 0x50, "Resource Request" },
- { 0x51, "Resource Indication" },
- { 0x52, "Paging" },
- { 0x53, "Cipher Mode Command" },
- { 0x54, "Classmark Update" },
- { 0x55, "Cipher Mode Complete" },
- { 0x56, "Queuing Indication" },
- { 0x57, "Complete Layer 3 Information" },
- { 0x58, "Classmark Request" },
- { 0x59, "Cipher Mode Reject" },
- { 0x5a, "Load Indication" },
- { 0x04, "VGCS/VBS Setup" },
- { 0x05, "VGCS/VBS Setup Ack" },
- { 0x06, "VGCS/VBS Setup Refuse" },
- { 0x07, "VGCS/VBS Assignment Request" },
- { 0x1c, "VGCS/VBS Assignment Result" },
- { 0x1d, "VGCS/VBS Assignment Failure" },
- { 0x1e, "VGCS/VBS Queuing Indication" },
- { 0x1f, "Uplink Request" },
- { 0x27, "Uplink Request Acknowledge" },
- { 0x49, "Uplink Request Confirmation" },
- { 0x4a, "Uplink Release Indication" },
- { 0x4b, "Uplink Reject Command" },
- { 0x4c, "Uplink Release Command" },
- { 0x4d, "Uplink Seized Command" },
- { 0x50, "VGCS Additional Information" },
- { 0x51, "VGCS SMS" },
- { 0x52, "Notification Data" },
- { 0x53, "Uplink Application Data" },
-
- { 0, NULL }
+ { 0x01, "Assignment Request" },
+ { 0x02, "Assignment Complete" },
+ { 0x03, "Assignment Failure" },
+ { 0x08, "Channel Modify request" },
+ { 0x10, "Handover Request" },
+ { 0x11, "Handover Required" },
+ { 0x12, "Handover Request Acknowledge" },
+ { 0x13, "Handover Command" },
+ { 0x14, "Handover Complete" },
+ { 0x15, "Handover Succeeded" },
+ { 0x16, "Handover Failure" },
+ { 0x17, "Handover Performed" },
+ { 0x18, "Handover Candidate Enquire" },
+ { 0x19, "Handover Candidate Response" },
+ { 0x1a, "Handover Required Reject" },
+ { 0x1b, "Handover Detect" },
+ { 0x1c, "Internal Handover Required" },
+ { 0x1d, "Internal Handover Required Reject" },
+ { 0x1e, "Internal Handover Command" },
+ { 0x1f, "Internal Handover Enquiry" },
+ { 0x20, "Clear Command" },
+ { 0x21, "Clear Complete" },
+ { 0x22, "Clear Request" },
+ { 0x23, "Reserved" },
+ { 0x24, "Reserved" },
+ { 0x25, "SAPI 'n' Reject" },
+ { 0x26, "Confusion" },
+ { 0x28, "Suspend" },
+ { 0x29, "Resume" },
+ { 0x2a, "Connection Oriented Information" },
+ { 0x2b, "Perform Location Request" },
+ { 0x2c, "LSA Information" },
+ { 0x2d, "Perform Location Response" },
+ { 0x2e, "Perform Location Abort" },
+ { 0x2f, "Common Id" },
+ { 0x30, "Reset" },
+ { 0x31, "Reset Acknowledge" },
+ { 0x32, "Overload" },
+ { 0x33, "Reserved" },
+ { 0x34, "Reset Circuit" },
+ { 0x35, "Reset Circuit Acknowledge" },
+ { 0x36, "MSC Invoke Trace" },
+ { 0x37, "BSS Invoke Trace" },
+ { 0x3a, "Connectionless Information" },
+ { 0x3c, "Reset Resource" },
+ { 0x3d, "Reset Resource Acknowledge" },
+ { 0x40, "Block" },
+ { 0x41, "Blocking Acknowledge" },
+ { 0x42, "Unblock" },
+ { 0x43, "Unblocking Acknowledge" },
+ { 0x44, "Circuit Group Block" },
+ { 0x45, "Circuit Group Blocking Acknowledge" },
+ { 0x46, "Circuit Group Unblock" },
+ { 0x47, "Circuit Group Unblocking Acknowledge" },
+ { 0x48, "Unequipped Circuit" },
+ { 0x4e, "Change Circuit" },
+ { 0x4f, "Change Circuit Acknowledge" },
+ { 0x50, "Resource Request" },
+ { 0x51, "Resource Indication" },
+ { 0x52, "Paging" },
+ { 0x53, "Cipher Mode Command" },
+ { 0x54, "Classmark Update" },
+ { 0x55, "Cipher Mode Complete" },
+ { 0x56, "Queuing Indication" },
+ { 0x57, "Complete Layer 3 Information" },
+ { 0x58, "Classmark Request" },
+ { 0x59, "Cipher Mode Reject" },
+ { 0x5a, "Load Indication" },
+ { 0x04, "VGCS/VBS Setup" },
+ { 0x05, "VGCS/VBS Setup Ack" },
+ { 0x06, "VGCS/VBS Setup Refuse" },
+ { 0x07, "VGCS/VBS Assignment Request" },
+ { 0x1c, "VGCS/VBS Assignment Result" },
+ { 0x1d, "VGCS/VBS Assignment Failure" },
+ { 0x1e, "VGCS/VBS Queuing Indication" },
+ { 0x1f, "Uplink Request" },
+ { 0x27, "Uplink Request Acknowledge" },
+ { 0x49, "Uplink Request Confirmation" },
+ { 0x4a, "Uplink Release Indication" },
+ { 0x4b, "Uplink Reject Command" },
+ { 0x4c, "Uplink Release Command" },
+ { 0x4d, "Uplink Seized Command" },
+ { 0x50, "VGCS Additional Information" },
+ { 0x51, "VGCS SMS" },
+ { 0x52, "Notification Data" },
+ { 0x53, "Uplink Application Data" },
+
+ { 0, NULL }
};
const value_string gsm_bssmap_elem_strings[] = {
- { 0x01, "Circuit Identity Code" },
- { 0x02, "Reserved" },
- { 0x03, "Resource Available" },
- { 0x04, "Cause" },
- { 0x05, "Cell Identifier" },
- { 0x06, "Priority" },
- { 0x07, "Layer 3 Header Information" },
- { 0x08, "IMSI" },
- { 0x09, "TMSI" },
- { 0x0a, "Encryption Information" },
- { 0x0b, "Channel Type" },
- { 0x0c, "Periodicity" },
- { 0x0d, "Extended Resource Indicator" },
- { 0x0e, "Number Of MSs" },
- { 0x0f, "Reserved" },
- { 0x10, "Reserved" },
- { 0x11, "Reserved" },
- { 0x12, "Classmark Information Type 2" },
- { 0x13, "Classmark Information Type 3" },
- { 0x14, "Interference Band To Be Used" },
- { 0x15, "RR Cause" },
- { 0x16, "Reserved" },
- { 0x17, "Layer 3 Information" },
- { 0x18, "DLCI" },
- { 0x19, "Downlink DTX Flag" },
- { 0x1a, "Cell Identifier List" },
- { 0x1b, "Response Request" },
- { 0x1c, "Resource Indication Method" },
- { 0x1d, "Classmark Information Type 1" },
- { 0x1e, "Circuit Identity Code List" },
- { 0x1f, "Diagnostic" },
- { 0x20, "Layer 3 Message Contents" },
- { 0x21, "Chosen Channel" },
- { 0x22, "Total Resource Accessible" },
- { 0x23, "Cipher Response Mode" },
- { 0x24, "Channel Needed" },
- { 0x25, "Trace Type" },
- { 0x26, "TriggerID" },
- { 0x27, "Trace Reference" },
- { 0x28, "TransactionID" },
- { 0x29, "Mobile Identity" },
- { 0x2a, "OMCID" },
- { 0x2b, "Forward Indicator" },
- { 0x2c, "Chosen Encryption Algorithm" },
- { 0x2d, "Circuit Pool" },
- { 0x2e, "Circuit Pool List" },
- { 0x2f, "Time Indication" },
- { 0x30, "Resource Situation" },
- { 0x31, "Current Channel Type 1" },
- { 0x32, "Queuing Indicator" },
- { 0x40, "Speech Version" },
- { 0x33, "Assignment Requirement" },
- { 0x35, "Talker Flag" },
- { 0x36, "Connection Release Requested" },
- { 0x37, "Group Call Reference" },
- { 0x38, "eMLPP Priority" },
- { 0x39, "Configuration Evolution Indication" },
- { 0x3a, "Old BSS to New BSS Information" },
- { 0x3b, "LSA Identifier" },
- { 0x3c, "LSA Identifier List" },
- { 0x3d, "LSA Information" },
- { 0x3e, "LCS QoS" },
- { 0x3f, "LSA access control suppression" },
- { 0x43, "LCS Priority" },
- { 0x44, "Location Type" },
- { 0x45, "Location Estimate" },
- { 0x46, "Positioning Data" },
- { 0x47, "LCS Cause" },
- { 0x48, "LCS Client Type" },
- { GSM_BSSMAP_APDU_IE, "APDU" },
- { 0x4a, "Network Element Identity" },
- { 0x4b, "GPS Assistance Data" },
- { 0x4c, "Deciphering Keys" },
- { 0x4d, "Return Error Request" },
- { 0x4e, "Return Error Cause" },
- { 0x4f, "Segmentation" },
- { 0x50, "Service Handover" },
- { 0x51, "Source RNC to target RNC transparent information (UMTS)" },
- { 0x52, "Source RNC to target RNC transparent information (cdma2000)" },
- { 0x53, "GERAN Classmark" },
- { 0x54, "GERAN BSC Container" },
- { 0x61, "New BSS to Old BSS Information" },
- { 0x63, "Inter-System Information" },
- { 0x64, "SNA Access Information" },
- { 0x65, "VSTK_RAND Information" },
- { 0x66, "VSTK Information" },
- { 0x67, "Paging Information" },
- { 0x68, "IMEI" },
- { 0x55, "Velocity Estimate" },
- { 0x69, "VGCS Feature Flags" },
- { 0x6a, "Talker Priority" },
- { 0x6b, "Emergency Set Indication" },
- { 0x6c, "Talker Identity" },
- { 0x6d, "Cell Identifier List Segment" },
- { 0x6e, "SMS to VGCS" },
- { 0x6f, "VGCS Talker Mode" },
- { 0x70, "VGCS/VBS Cell Status" },
- { 0x71, "Cell Identifier List Segment for established cells" },
- { 0x72, "Cell Identifier List Segment for cells to be established" },
- { 0x73, "Cell Identifier List Segment for released cells - no user present" },
- { 0x74, "Cell Identifier List Segment for not established cells - no establishment possible" },
- { 0x75, "GANSS Assistance Data" },
- { 0x76, "GANSS Positioning Data" },
- { 0x77, "GANSS Location Type" },
- { 0x78, "Application Data" },
- { 0x79, "Data Identity" },
- { 0x7a, "Application Data Information" },
- { 0x7b, "MSISDN" },
- { 0x7c, "AoIP Transport Layer Address" },
- { 0x7d, "Speech Codec List" },
- { 0x7e, "Speech Codec" },
- { 0x7f, "Call Identifier" },
- { 0x80, "Call Identifier List" },
- { 0, NULL }
+ { 0x01, "Circuit Identity Code" },
+ { 0x02, "Reserved" },
+ { 0x03, "Resource Available" },
+ { 0x04, "Cause" },
+ { 0x05, "Cell Identifier" },
+ { 0x06, "Priority" },
+ { 0x07, "Layer 3 Header Information" },
+ { 0x08, "IMSI" },
+ { 0x09, "TMSI" },
+ { 0x0a, "Encryption Information" },
+ { 0x0b, "Channel Type" },
+ { 0x0c, "Periodicity" },
+ { 0x0d, "Extended Resource Indicator" },
+ { 0x0e, "Number Of MSs" },
+ { 0x0f, "Reserved" },
+ { 0x10, "Reserved" },
+ { 0x11, "Reserved" },
+ { 0x12, "Classmark Information Type 2" },
+ { 0x13, "Classmark Information Type 3" },
+ { 0x14, "Interference Band To Be Used" },
+ { 0x15, "RR Cause" },
+ { 0x16, "Reserved" },
+ { 0x17, "Layer 3 Information" },
+ { 0x18, "DLCI" },
+ { 0x19, "Downlink DTX Flag" },
+ { 0x1a, "Cell Identifier List" },
+ { 0x1b, "Response Request" },
+ { 0x1c, "Resource Indication Method" },
+ { 0x1d, "Classmark Information Type 1" },
+ { 0x1e, "Circuit Identity Code List" },
+ { 0x1f, "Diagnostic" },
+ { 0x20, "Layer 3 Message Contents" },
+ { 0x21, "Chosen Channel" },
+ { 0x22, "Total Resource Accessible" },
+ { 0x23, "Cipher Response Mode" },
+ { 0x24, "Channel Needed" },
+ { 0x25, "Trace Type" },
+ { 0x26, "TriggerID" },
+ { 0x27, "Trace Reference" },
+ { 0x28, "TransactionID" },
+ { 0x29, "Mobile Identity" },
+ { 0x2a, "OMCID" },
+ { 0x2b, "Forward Indicator" },
+ { 0x2c, "Chosen Encryption Algorithm" },
+ { 0x2d, "Circuit Pool" },
+ { 0x2e, "Circuit Pool List" },
+ { 0x2f, "Time Indication" },
+ { 0x30, "Resource Situation" },
+ { 0x31, "Current Channel Type 1" },
+ { 0x32, "Queuing Indicator" },
+ { 0x40, "Speech Version" },
+ { 0x33, "Assignment Requirement" },
+ { 0x35, "Talker Flag" },
+ { 0x36, "Connection Release Requested" },
+ { 0x37, "Group Call Reference" },
+ { 0x38, "eMLPP Priority" },
+ { 0x39, "Configuration Evolution Indication" },
+ { 0x3a, "Old BSS to New BSS Information" },
+ { 0x3b, "LSA Identifier" },
+ { 0x3c, "LSA Identifier List" },
+ { 0x3d, "LSA Information" },
+ { 0x3e, "LCS QoS" },
+ { 0x3f, "LSA access control suppression" },
+ { 0x43, "LCS Priority" },
+ { 0x44, "Location Type" },
+ { 0x45, "Location Estimate" },
+ { 0x46, "Positioning Data" },
+ { 0x47, "LCS Cause" },
+ { 0x48, "LCS Client Type" },
+ { GSM_BSSMAP_APDU_IE, "APDU" },
+ { 0x4a, "Network Element Identity" },
+ { 0x4b, "GPS Assistance Data" },
+ { 0x4c, "Deciphering Keys" },
+ { 0x4d, "Return Error Request" },
+ { 0x4e, "Return Error Cause" },
+ { 0x4f, "Segmentation" },
+ { 0x50, "Service Handover" },
+ { 0x51, "Source RNC to target RNC transparent information (UMTS)" },
+ { 0x52, "Source RNC to target RNC transparent information (cdma2000)" },
+ { 0x53, "GERAN Classmark" },
+ { 0x54, "GERAN BSC Container" },
+ { 0x61, "New BSS to Old BSS Information" },
+ { 0x63, "Inter-System Information" },
+ { 0x64, "SNA Access Information" },
+ { 0x65, "VSTK_RAND Information" },
+ { 0x66, "VSTK Information" },
+ { 0x67, "Paging Information" },
+ { 0x68, "IMEI" },
+ { 0x55, "Velocity Estimate" },
+ { 0x69, "VGCS Feature Flags" },
+ { 0x6a, "Talker Priority" },
+ { 0x6b, "Emergency Set Indication" },
+ { 0x6c, "Talker Identity" },
+ { 0x6d, "Cell Identifier List Segment" },
+ { 0x6e, "SMS to VGCS" },
+ { 0x6f, "VGCS Talker Mode" },
+ { 0x70, "VGCS/VBS Cell Status" },
+ { 0x71, "Cell Identifier List Segment for established cells" },
+ { 0x72, "Cell Identifier List Segment for cells to be established" },
+ { 0x73, "Cell Identifier List Segment for released cells - no user present" },
+ { 0x74, "Cell Identifier List Segment for not established cells - no establishment possible" },
+ { 0x75, "GANSS Assistance Data" },
+ { 0x76, "GANSS Positioning Data" },
+ { 0x77, "GANSS Location Type" },
+ { 0x78, "Application Data" },
+ { 0x79, "Data Identity" },
+ { 0x7a, "Application Data Information" },
+ { 0x7b, "MSISDN" },
+ { 0x7c, "AoIP Transport Layer Address" },
+ { 0x7d, "Speech Codec List" },
+ { 0x7e, "Speech Codec" },
+ { 0x7f, "Call Identifier" },
+ { 0x80, "Call Identifier List" },
+ { 0, NULL }
};
/* 3.2.3 Signalling Field Element Coding */
static const value_string bssmap_field_element_ids[] = {
- { 0x1, "BSSMAP Field Element: Extra information" }, /* 3.2.3.1 */
- { 0x2, "BSSMAP Field Element: Current Channel Type 2" }, /* 3.2.2.2 */
- { 0x3, "BSSMAP Field Element: Target cell radio information" }, /* 3.2.3.3 */
- { 0x4, "BSSMAP Field Element: GPRS Suspend information" }, /* 3.2.3.4 */
- { 0x5, "BSSMAP Field Element: MultiRate configuration information" }, /* 3.2.3.5 */
- { 0x6, "BSSMAP Field Element: Dual Transfer Mode information" }, /* 3.2.3.6 */
- { 0x7, "BSSMAP Field Element: Inter RAT Handover Info" }, /* 3.2.3.7 */
- /*{ 0x7, "UE Capability information" },*/ /* 3.2.3.7 */
- { 0x8, "BSSMAP Field Element: cdma2000 Capability Information" }, /* 3.2.3.8 */
- { 0x9, "BSSMAP Field Element: Downlink Cell Load Information" }, /* 3.2.3.9 */
- { 0xa, "BSSMAP Field Element: Uplink Cell Load Information" }, /* 3.2.3.10 */
- { 0xb, "BSSMAP Field Element: Cell Load Information Group" }, /* 3.2.3.11 */
- { 0xc, "BSSMAP Field Element: Cell Load Information" }, /* 3.2.3.12 */
- { 0x0d, "BSSMAP Field Element: PS Indication" }, /* 3.2.3.13 */
- { 0x0e, "BSSMAP Field Element: DTM Handover Command Indication" }, /* 3.2.3.14 */
- { 0x6f, "VGCS talker mode" }, /* although technically not a Field Element,
+ { 0x1, "BSSMAP Field Element: Extra information" }, /* 3.2.3.1 */
+ { 0x2, "BSSMAP Field Element: Current Channel Type 2" }, /* 3.2.2.2 */
+ { 0x3, "BSSMAP Field Element: Target cell radio information" }, /* 3.2.3.3 */
+ { 0x4, "BSSMAP Field Element: GPRS Suspend information" }, /* 3.2.3.4 */
+ { 0x5, "BSSMAP Field Element: MultiRate configuration information" }, /* 3.2.3.5 */
+ { 0x6, "BSSMAP Field Element: Dual Transfer Mode information" }, /* 3.2.3.6 */
+ { 0x7, "BSSMAP Field Element: Inter RAT Handover Info" }, /* 3.2.3.7 */
+ /*{ 0x7, "UE Capability information" },*/ /* 3.2.3.7 */
+ { 0x8, "BSSMAP Field Element: cdma2000 Capability Information" }, /* 3.2.3.8 */
+ { 0x9, "BSSMAP Field Element: Downlink Cell Load Information" }, /* 3.2.3.9 */
+ { 0xa, "BSSMAP Field Element: Uplink Cell Load Information" }, /* 3.2.3.10 */
+ { 0xb, "BSSMAP Field Element: Cell Load Information Group" }, /* 3.2.3.11 */
+ { 0xc, "BSSMAP Field Element: Cell Load Information" }, /* 3.2.3.12 */
+ { 0x0d, "BSSMAP Field Element: PS Indication" }, /* 3.2.3.13 */
+ { 0x0e, "BSSMAP Field Element: DTM Handover Command Indication" }, /* 3.2.3.14 */
+ { 0x6f, "VGCS talker mode" }, /* although technically not a Field Element,
this IE can appear in Old BSS to New BSS information */
- { 0, NULL }
+ { 0, NULL }
};
static const value_string bssap_cc_values[] = {
- { 0x00, "not further specified" },
- { 0x80, "FACCH or SDCCH" },
- { 0xc0, "SACCH" },
- { 0, NULL } };
+ { 0x00, "not further specified" },
+ { 0x80, "FACCH or SDCCH" },
+ { 0xc0, "SACCH" },
+ { 0, NULL } };
static const value_string bssap_sapi_values[] = {
- { 0x00, "RR/MM/CC" },
- { 0x03, "SMS" },
- { 0, NULL } };
+ { 0x00, "RR/MM/CC" },
+ { 0x03, "SMS" },
+ { 0, NULL } };
static const value_string gsm_a_be_cell_id_disc_vals[] = {
- { 0, "The whole Cell Global Identification, CGI, is used to identify the cells."},
- { 1, "Location Area Code, LAC, and Cell Identify, CI, is used to identify the cells."},
- { 2, "Cell Identity, CI, is used to identify the cells."},
- { 3, "No cell is associated with the transaction."},
- { 4, "Location Area Identification, LAI, is used to identify all cells within a Location Area."},
- { 5, "Location Area Code, LAC, is used to identify all cells within a location area."},
- { 6, "All cells on the BSS are identified."},
- { 7, "Reserved"},
- { 8, "Intersystem Handover to UTRAN or cdma2000. PLMN-ID, LAC, and RNC-ID, are encoded to identify the target RNC."},
- { 9, "Intersystem Handover to UTRAN or cdma2000. The RNC-ID is coded to identify the target RNC."},
- { 10, "Intersystem Handover to UTRAN or cdma2000. LAC and RNC-ID are encoded to identify the target RNC."},
- { 11, "Serving Area Identity, SAI, is used to identify the Serving Area of UE within UTRAN or cdma2000"},
- { 12, "LAC, RNC-ID (or Extended RNC-ID) and Cell Identity, CI, is used to identify a UTRAN cell for cell load information"},
- { 13, "Reserved"},
- { 14, "Reserved"},
- { 15, "Reserved"},
- { 0, NULL }
+ { 0, "The whole Cell Global Identification, CGI, is used to identify the cells."},
+ { 1, "Location Area Code, LAC, and Cell Identify, CI, is used to identify the cells."},
+ { 2, "Cell Identity, CI, is used to identify the cells."},
+ { 3, "No cell is associated with the transaction."},
+ { 4, "Location Area Identification, LAI, is used to identify all cells within a Location Area."},
+ { 5, "Location Area Code, LAC, is used to identify all cells within a location area."},
+ { 6, "All cells on the BSS are identified."},
+ { 7, "Reserved"},
+ { 8, "Intersystem Handover to UTRAN or cdma2000. PLMN-ID, LAC, and RNC-ID, are encoded to identify the target RNC."},
+ { 9, "Intersystem Handover to UTRAN or cdma2000. The RNC-ID is coded to identify the target RNC."},
+ { 10, "Intersystem Handover to UTRAN or cdma2000. LAC and RNC-ID are encoded to identify the target RNC."},
+ { 11, "Serving Area Identity, SAI, is used to identify the Serving Area of UE within UTRAN or cdma2000"},
+ { 12, "LAC, RNC-ID (or Extended RNC-ID) and Cell Identity, CI, is used to identify a UTRAN cell for cell load information"},
+ { 13, "Reserved"},
+ { 14, "Reserved"},
+ { 15, "Reserved"},
+ { 0, NULL }
};
static const value_string gsm_a_rr_channel_needed_vals[] = {
-{ 0x00, "Any channel"},
-{ 0x01, "SDCCH"},
-{ 0x02, "TCH/F (Full rate)"},
-{ 0x03, "TCH/H or TCH/F (Dual rate)"},
- { 0, NULL }
+ { 0x00, "Any channel"},
+ { 0x01, "SDCCH"},
+ { 0x02, "TCH/F (Full rate)"},
+ { 0x03, "TCH/H or TCH/F (Dual rate)"},
+ { 0, NULL }
};
static const value_string bssmap_positioning_methods[] = {
@@ -373,13 +373,13 @@ static const value_string bssmap_location_information_vals[] = {
};
static const true_false_string bssmap_chan_type_extension_value = {
- "Additional Octet",
- "Last Octet"
+ "Additional Octet",
+ "Last Octet"
};
static const true_false_string bssmap_cause_extension_value = {
- "Two Octets",
- "One Octet"
+ "Two Octets",
+ "One Octet"
};
/* Current Channel Type */
@@ -528,7 +528,7 @@ static guint8 cell_discriminator = 0x0f; /* tracks whether handover is to UMTS
static guint16
be_field_element_dissect(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_);
-/*
+#if 0
This enum has been moved to packet-gsm_a_common to
make it possible to use element dissecton from this dissector
in other dissectors.
@@ -538,125 +538,125 @@ Note this enum must be of the same size as the element decoding list
typedef enum
{
- BE_CIC, /. Circuit Identity Code ./
- BE_RSVD_1, /. Reserved ./
- BE_RES_AVAIL, /. Resource Available ./
- BE_CAUSE, /. Cause ./
- BE_CELL_ID, /. Cell Identifier ./
- BE_PRIO, /. Priority ./
- BE_L3_HEADER_INFO, /. Layer 3 Header Information ./
- BE_IMSI, /. IMSI ./
- BE_TMSI, /. TMSI ./
- BE_ENC_INFO, /. Encryption Information ./
- BE_CHAN_TYPE, /. Channel Type ./
- BE_PERIODICITY, /. Periodicity ./
- BE_EXT_RES_IND, /. Extended Resource Indicator ./
- BE_NUM_MS, /. Number Of MSs ./
- BE_RSVD_2, /. Reserved ./
- BE_RSVD_3, /. Reserved ./
- BE_RSVD_4, /. Reserved ./
- BE_CM_INFO_2, /. Classmark Information Type 2 ./
- BE_CM_INFO_3, /. Classmark Information Type 3 ./
- BE_INT_BAND, /. Interference Band To Be Used ./
- BE_RR_CAUSE, /. RR Cause ./
- BE_RSVD_5, /. Reserved ./
- BE_L3_INFO, /. Layer 3 Information ./
- BE_DLCI, /. DLCI ./
- BE_DOWN_DTX_FLAG, /. Downlink DTX Flag ./
- BE_CELL_ID_LIST, /. Cell Identifier List ./
- BE_RESP_REQ, /. Response Request ./
- BE_RES_IND_METHOD, /. Resource Indication Method ./
- BE_CM_INFO_1, /. Classmark Information Type 1 ./
- BE_CIC_LIST, /. Circuit Identity Code List ./
- BE_DIAG, /. Diagnostic ./
- BE_L3_MSG, /. Layer 3 Message Contents ./
- BE_CHOSEN_CHAN, /. Chosen Channel ./
- BE_TOT_RES_ACC, /. Total Resource Accessible ./
- BE_CIPH_RESP_MODE, /. Cipher Response Mode ./
- BE_CHAN_NEEDED, /. Channel Needed ./
- BE_TRACE_TYPE, /. Trace Type ./
- BE_TRIGGERID, /. TriggerID ./
- BE_TRACE_REF, /. Trace Reference ./
- BE_TRANSID, /. TransactionID ./
- BE_MID, /. Mobile Identity ./
- BE_OMCID, /. OMCID ./
- BE_FOR_IND, /. Forward Indicator ./
- BE_CHOSEN_ENC_ALG, /. Chosen Encryption Algorithm ./
- BE_CCT_POOL, /. Circuit Pool ./
- BE_CCT_POOL_LIST, /. Circuit Pool List ./
- BE_TIME_IND, /. Time Indication ./
- BE_RES_SIT, /. Resource Situation ./
- BE_CURR_CHAN_1, /. Current Channel Type 1 ./
- BE_QUE_IND, /. Queueing Indicator ./
- BE_SPEECH_VER, /. Speech Version ./
- BE_ASS_REQ, /. Assignment Requirement ./
- BE_TALKER_FLAG, /. Talker Flag ./
- BE_CONN_REL_REQ, /. Connection Release Requested ./
- BE_GROUP_CALL_REF, /. Group Call Reference ./
- BE_EMLPP_PRIO, /. eMLPP Priority ./
- BE_CONF_EVO_IND, /. Configuration Evolution Indication ./
- BE_OLD2NEW_INFO, /. Old BSS to New BSS Information ./
- BE_LSA_ID, /. LSA Identifier ./
- BE_LSA_ID_LIST, /. LSA Identifier List ./
- BE_LSA_INFO, /. LSA Information ./
- BE_LCS_QOS, /. LCS QoS ./
- BE_LSA_ACC_CTRL, /. LSA access control suppression ./
- BE_LCS_PRIO, /. LCS Priority ./
- BE_LOC_TYPE, /. Location Type ./
- BE_LOC_EST, /. Location Estimate ./
- BE_POS_DATA, /. Positioning Data ./
- BE_LCS_CAUSE, /. 3.2.2.66 LCS Cause ./
- BE_LCS_CLIENT, /. LCS Client Type ./
- BE_APDU, /. APDU ./
- BE_NE_ID, /. Network Element Identity ./
- BE_GPS_ASSIST_DATA, /. GPS Assistance Data ./
- BE_DECIPH_KEYS, /. Deciphering Keys ./
- BE_RET_ERR_REQ, /. Return Error Request ./
- BE_RET_ERR_CAUSE, /. Return Error Cause ./
- BE_SEG, /. Segmentation ./
- BE_SERV_HO, /. Service Handover ./
- BE_SRC_RNC_TO_TAR_RNC_UMTS, /. Source RNC to target RNC transparent information (UMTS) ./
- BE_SRC_RNC_TO_TAR_RNC_CDMA, /. Source RNC to target RNC transparent information (cdma2000) ./
- BE_GERAN_CLS_M, /. GERAN Classmark ./
- BE_GRAN_BSC_CONT, /. GERAN BSC Container ./
- BE_NEW_BSS_TO_OLD_BSS_INF, /. New BSS to Old BSS Information ./
- BE_INTER_SYS_INF, /. Inter-System Information ./
- BE_SNA_ACC_INF, /. SNA Access Information ./
- BE_VSTK_RAND_INF, /. VSTK_RAND Information ./
- BE_VSTK_INF, /. VSTK Information ./
- BE_PAGING_INF, /. Paging Information ./
- BE_IMEI, /. IMEI ./
- BE_VEL_EST, /. Velocity Estimate ./
- BE_VGCS_FEAT_FLG, /. VGCS Feature Flags ./
- BE_TALKER_PRI, /. Talker Priority ./
- BE_EMRG_SET_IND, /. Emergency Set Indication ./
- BE_TALKER_ID, /. Talker Identity ./
- BE_CELL_ID_LIST_SEG,/. Cell Identifier List Segment ./
- BE_SMS_TO_VGCS, /. SMS to VGCS ./
- BE_VGCS_TALKER_MOD, /. VGCS Talker Mode ./
- BE_VGS_VBS_CELL_STAT, /. VGCS/VBS Cell Status ./
- BE_CELL_ID_LST_SEG_F_EST_CELLS, /. Cell Identifier List Segment for established cells ./
- BE_CELL_ID_LST_SEG_F_CELL_TB_EST, /. Cell Identifier List Segment for cells to be established ./
- BE_CELL_ID_LST_SEG_F_REL_CELL, /. Cell Identifier List Segment for released cells - no user present ./
- BE_CELL_ID_LST_SEG_F_NOT_EST_CELL, /. Cell Identifier List Segment for not established cells - no establishment possible ./
- BE_GANSS_ASS_DTA, /. GANSS Assistance Data ./
- BE_GANSS_POS_DTA, /. GANSS Positioning Data ./
- BE_GANSS_LOC_TYP, /. GANSS Location Type ./
- BE_APP_DATA, /. Application Data ./
- BE_DATA_ID /. Data Identity ./
- BE_APP_DATA_INF, /. Application Data Information ./
- BE_MSISDN, /. MSISDN ./
- BE_AOIP_TRANS_LAY_ADD, /. AoIP Transport Layer Address ./
- BE_SPEECH_CODEC_LST, /. Speech Codec List ./
- BE_SPEECH_CODEC, /. Speech Codec ./
- BE_CALL_ID, /. Call Identifier ./
- BE_CALL_ID_LST, /. Call Identifier List ./
- BE_NONE /. NONE ./
+ BE_CIC, /. Circuit Identity Code ./
+ BE_RSVD_1, /. Reserved ./
+ BE_RES_AVAIL, /. Resource Available ./
+ BE_CAUSE, /. Cause ./
+ BE_CELL_ID, /. Cell Identifier ./
+ BE_PRIO, /. Priority ./
+ BE_L3_HEADER_INFO, /. Layer 3 Header Information ./
+ BE_IMSI, /. IMSI ./
+ BE_TMSI, /. TMSI ./
+ BE_ENC_INFO, /. Encryption Information ./
+ BE_CHAN_TYPE, /. Channel Type ./
+ BE_PERIODICITY, /. Periodicity ./
+ BE_EXT_RES_IND, /. Extended Resource Indicator ./
+ BE_NUM_MS, /. Number Of MSs ./
+ BE_RSVD_2, /. Reserved ./
+ BE_RSVD_3, /. Reserved ./
+ BE_RSVD_4, /. Reserved ./
+ BE_CM_INFO_2, /. Classmark Information Type 2 ./
+ BE_CM_INFO_3, /. Classmark Information Type 3 ./
+ BE_INT_BAND, /. Interference Band To Be Used ./
+ BE_RR_CAUSE, /. RR Cause ./
+ BE_RSVD_5, /. Reserved ./
+ BE_L3_INFO, /. Layer 3 Information ./
+ BE_DLCI, /. DLCI ./
+ BE_DOWN_DTX_FLAG, /. Downlink DTX Flag ./
+ BE_CELL_ID_LIST, /. Cell Identifier List ./
+ BE_RESP_REQ, /. Response Request ./
+ BE_RES_IND_METHOD, /. Resource Indication Method ./
+ BE_CM_INFO_1, /. Classmark Information Type 1 ./
+ BE_CIC_LIST, /. Circuit Identity Code List ./
+ BE_DIAG, /. Diagnostic ./
+ BE_L3_MSG, /. Layer 3 Message Contents ./
+ BE_CHOSEN_CHAN, /. Chosen Channel ./
+ BE_TOT_RES_ACC, /. Total Resource Accessible ./
+ BE_CIPH_RESP_MODE, /. Cipher Response Mode ./
+ BE_CHAN_NEEDED, /. Channel Needed ./
+ BE_TRACE_TYPE, /. Trace Type ./
+ BE_TRIGGERID, /. TriggerID ./
+ BE_TRACE_REF, /. Trace Reference ./
+ BE_TRANSID, /. TransactionID ./
+ BE_MID, /. Mobile Identity ./
+ BE_OMCID, /. OMCID ./
+ BE_FOR_IND, /. Forward Indicator ./
+ BE_CHOSEN_ENC_ALG, /. Chosen Encryption Algorithm ./
+ BE_CCT_POOL, /. Circuit Pool ./
+ BE_CCT_POOL_LIST, /. Circuit Pool List ./
+ BE_TIME_IND, /. Time Indication ./
+ BE_RES_SIT, /. Resource Situation ./
+ BE_CURR_CHAN_1, /. Current Channel Type 1 ./
+ BE_QUE_IND, /. Queueing Indicator ./
+ BE_SPEECH_VER, /. Speech Version ./
+ BE_ASS_REQ, /. Assignment Requirement ./
+ BE_TALKER_FLAG, /. Talker Flag ./
+ BE_CONN_REL_REQ, /. Connection Release Requested ./
+ BE_GROUP_CALL_REF, /. Group Call Reference ./
+ BE_EMLPP_PRIO, /. eMLPP Priority ./
+ BE_CONF_EVO_IND, /. Configuration Evolution Indication ./
+ BE_OLD2NEW_INFO, /. Old BSS to New BSS Information ./
+ BE_LSA_ID, /. LSA Identifier ./
+ BE_LSA_ID_LIST, /. LSA Identifier List ./
+ BE_LSA_INFO, /. LSA Information ./
+ BE_LCS_QOS, /. LCS QoS ./
+ BE_LSA_ACC_CTRL, /. LSA access control suppression ./
+ BE_LCS_PRIO, /. LCS Priority ./
+ BE_LOC_TYPE, /. Location Type ./
+ BE_LOC_EST, /. Location Estimate ./
+ BE_POS_DATA, /. Positioning Data ./
+ BE_LCS_CAUSE, /. 3.2.2.66 LCS Cause ./
+ BE_LCS_CLIENT, /. LCS Client Type ./
+ BE_APDU, /. APDU ./
+ BE_NE_ID, /. Network Element Identity ./
+ BE_GPS_ASSIST_DATA, /. GPS Assistance Data ./
+ BE_DECIPH_KEYS, /. Deciphering Keys ./
+ BE_RET_ERR_REQ, /. Return Error Request ./
+ BE_RET_ERR_CAUSE, /. Return Error Cause ./
+ BE_SEG, /. Segmentation ./
+ BE_SERV_HO, /. Service Handover ./
+ BE_SRC_RNC_TO_TAR_RNC_UMTS, /. Source RNC to target RNC transparent information (UMTS) ./
+ BE_SRC_RNC_TO_TAR_RNC_CDMA, /. Source RNC to target RNC transparent information (cdma2000) ./
+ BE_GERAN_CLS_M, /. GERAN Classmark ./
+ BE_GRAN_BSC_CONT, /. GERAN BSC Container ./
+ BE_NEW_BSS_TO_OLD_BSS_INF, /. New BSS to Old BSS Information ./
+ BE_INTER_SYS_INF, /. Inter-System Information ./
+ BE_SNA_ACC_INF, /. SNA Access Information ./
+ BE_VSTK_RAND_INF, /. VSTK_RAND Information ./
+ BE_VSTK_INF, /. VSTK Information ./
+ BE_PAGING_INF, /. Paging Information ./
+ BE_IMEI, /. IMEI ./
+ BE_VEL_EST, /. Velocity Estimate ./
+ BE_VGCS_FEAT_FLG, /. VGCS Feature Flags ./
+ BE_TALKER_PRI, /. Talker Priority ./
+ BE_EMRG_SET_IND, /. Emergency Set Indication ./
+ BE_TALKER_ID, /. Talker Identity ./
+ BE_CELL_ID_LIST_SEG, /. Cell Identifier List Segment ./
+ BE_SMS_TO_VGCS, /. SMS to VGCS ./
+ BE_VGCS_TALKER_MOD, /. VGCS Talker Mode ./
+ BE_VGS_VBS_CELL_STAT, /. VGCS/VBS Cell Status ./
+ BE_CELL_ID_LST_SEG_F_EST_CELLS, /. Cell Identifier List Segment for established cells ./
+ BE_CELL_ID_LST_SEG_F_CELL_TB_EST, /. Cell Identifier List Segment for cells to be established ./
+ BE_CELL_ID_LST_SEG_F_REL_CELL, /. Cell Identifier List Segment for released cells - no user present ./
+ BE_CELL_ID_LST_SEG_F_NOT_EST_CELL, /. Cell Identifier List Segment for not established cells - no establishment possible ./
+ BE_GANSS_ASS_DTA, /. GANSS Assistance Data ./
+ BE_GANSS_POS_DTA, /. GANSS Positioning Data ./
+ BE_GANSS_LOC_TYP, /. GANSS Location Type ./
+ BE_APP_DATA, /. Application Data ./
+ BE_DATA_ID /. Data Identity ./
+ BE_APP_DATA_INF, /. Application Data Information ./
+ BE_MSISDN, /. MSISDN ./
+ BE_AOIP_TRANS_LAY_ADD, /. AoIP Transport Layer Address ./
+ BE_SPEECH_CODEC_LST, /. Speech Codec List ./
+ BE_SPEECH_CODEC, /. Speech Codec ./
+ BE_CALL_ID, /. Call Identifier ./
+ BE_CALL_ID_LST, /. Call Identifier List ./
+ BE_NONE /. NONE ./
}
bssmap_elem_idx_t;
-*/
+#endif
-#define NUM_GSM_BSSMAP_ELEM (sizeof(gsm_bssmap_elem_strings)/sizeof(value_string))
+#define NUM_GSM_BSSMAP_ELEM (sizeof(gsm_bssmap_elem_strings)/sizeof(value_string))
gint ett_gsm_bssmap_elem[NUM_GSM_BSSMAP_ELEM];
/*
@@ -665,63 +665,63 @@ gint ett_gsm_bssmap_elem[NUM_GSM_BSSMAP_ELEM];
static guint16
be_cic(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string, int string_len)
{
- guint32 curr_offset;
- guint32 value;
+ guint32 curr_offset;
+ guint32 value;
- curr_offset = offset;
+ curr_offset = offset;
- value = tvb_get_ntohs(tvb, curr_offset);
+ value = tvb_get_ntohs(tvb, curr_offset);
- other_decode_bitfield_value(a_bigbuf, value, 0xffe0, 16);
- proto_tree_add_text(tree,
- tvb, curr_offset, 2,
- "%s = PCM Multiplexer: %u",
- a_bigbuf,
- (value & 0xffe0) >> 5);
+ other_decode_bitfield_value(a_bigbuf, value, 0xffe0, 16);
+ proto_tree_add_text(tree,
+ tvb, curr_offset, 2,
+ "%s = PCM Multiplexer: %u",
+ a_bigbuf,
+ (value & 0xffe0) >> 5);
- other_decode_bitfield_value(a_bigbuf, value, 0x001f, 16);
- proto_tree_add_text(tree,
- tvb, curr_offset, 2,
- "%s = Timeslot: %u",
- a_bigbuf,
- value & 0x001f);
+ other_decode_bitfield_value(a_bigbuf, value, 0x001f, 16);
+ proto_tree_add_text(tree,
+ tvb, curr_offset, 2,
+ "%s = Timeslot: %u",
+ a_bigbuf,
+ value & 0x001f);
- curr_offset += 2;
+ curr_offset += 2;
- if (add_string)
- g_snprintf(add_string, string_len, " - (%u) (0x%04x)", value, value);
+ if (add_string)
+ g_snprintf(add_string, string_len, " - (%u) (0x%04x)", value, value);
- /* no length check possible */
+ /* no length check possible */
- return(curr_offset - offset);
+ return(curr_offset - offset);
}
/*
- * 3.2.2.3 Connection Release Requested
+ * 3.2.2.3 Connection Release Requested
* No Data
*/
/*
- * 3.2.2.4 Resource Available
+ * 3.2.2.4 Resource Available
*/
static guint16
be_res_avail(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
- guint16 value;
- int i;
+ guint32 curr_offset;
+ guint16 value;
+ int i;
- curr_offset = offset;
+ curr_offset = offset;
- for (i=0; i < 5; i++){
- value = tvb_get_ntohl(tvb, curr_offset);
- proto_tree_add_text(tree, tvb, curr_offset, len, "Number of full rate channels available in band %u %u",i+1,value);
- curr_offset+=2;
- proto_tree_add_text(tree, tvb, curr_offset, len, "Number of half rate channels available in band %u %u",i+1, value);
- curr_offset+=2;
- }
+ for (i=0; i < 5; i++){
+ value = tvb_get_ntohl(tvb, curr_offset);
+ proto_tree_add_text(tree, tvb, curr_offset, len, "Number of full rate channels available in band %u %u",i+1,value);
+ curr_offset+=2;
+ proto_tree_add_text(tree, tvb, curr_offset, len, "Number of half rate channels available in band %u %u",i+1, value);
+ curr_offset+=2;
+ }
- return(len);
+ return(len);
}
/*
* [2] 3.2.2.5 Cause
@@ -729,184 +729,184 @@ be_res_avail(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gch
static guint16
be_cause(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string, int string_len)
{
- guint8 oct;
- guint32 value;
- guint32 curr_offset;
- const gchar *str = NULL;
-
- curr_offset = offset;
-
- oct = tvb_get_guint8(tvb, curr_offset);
-
- proto_tree_add_item(tree, hf_gsm_a_bssmap_cause_extension, tvb, curr_offset, 1, FALSE);
-
- if (oct & 0x80)
- {
- /* 2 octet cause */
-
- if ((oct & 0x0f) == 0x00)
- {
- /* national cause */
- switch ((oct & 0x70) >> 4)
- {
- case 0: str = "Normal Event"; break;
- case 1: str = "Normal Event"; break;
- case 2: str = "Resource Unavailable"; break;
- case 3: str = "Service or option not available"; break;
- case 4: str = "Service or option not implemented"; break;
- case 5: str = "Invalid message (e.g., parameter out of range)"; break;
- case 6: str = "Protocol error"; break;
- default:
- str = "Interworking";
- break;
- }
-
- other_decode_bitfield_value(a_bigbuf, oct, 0x70, 8);
- proto_tree_add_text(tree,
- tvb, curr_offset, 1,
- "%s = Cause Class: %s",
- a_bigbuf,
- str);
-
- other_decode_bitfield_value(a_bigbuf, oct, 0x0f, 8);
- proto_tree_add_text(tree,
- tvb, curr_offset, 1,
- "%s = National Cause",
- a_bigbuf);
-
- curr_offset++;
-
- proto_tree_add_text(tree, tvb, curr_offset, 1,
- "Cause Value");
-
- curr_offset++;
-
- if (add_string)
- g_snprintf(add_string, string_len, " - (National Cause)");
- }
- else
- {
- value = tvb_get_guint8(tvb, curr_offset + 1);
-
- other_decode_bitfield_value(a_bigbuf, oct, 0x7f, 8);
- proto_tree_add_text(tree,
- tvb, curr_offset, 1,
- "%s = Cause (MSB): %u",
- a_bigbuf,
- ((oct & 0x7f) << 8) | value);
-
- curr_offset++;
-
- other_decode_bitfield_value(a_bigbuf, value, 0xff, 8);
- proto_tree_add_text(tree, tvb, curr_offset, 1,
- "%s = Cause (LSB)",
- a_bigbuf);
-
- curr_offset++;
- }
- }
- else
- {
- switch (oct)
- {
- case 0x00: str = "Radio interface message failure"; break;
- case 0x01: str = "Radio interface failure"; break;
- case 0x02: str = "Uplink quality"; break;
- case 0x03: str = "Uplink strength"; break;
- case 0x04: str = "Downlink quality"; break;
- case 0x05: str = "Downlink strength"; break;
- case 0x06: str = "Distance"; break;
- case 0x07: str = "O and M intervention"; break;
- case 0x08: str = "Response to MSC invocation"; break;
- case 0x09: str = "Call control"; break;
- case 0x0a: str = "Radio interface failure, reversion to old channel"; break;
- case 0x0b: str = "Handover successful"; break;
- case 0x0c: str = "Better Cell"; break;
- case 0x0d: str = "Directed Retry"; break;
- case 0x0e: str = "Joined group call channel"; break;
- case 0x0f: str = "Traffic"; break;
-
- case 0x10: str = "Reduce load in serving cell"; break;
- case 0x11: str = "Traffic load in target cell higher than in source cell"; break;
- case 0x12: str = "Relocation triggered"; break;
- case 0x14: str = "Requested option not authorised"; break;
- case 0x15: str = "Alternative channel configuration requested "; break;
- case 0x16: str = "Call Identifier already allocated"; break;
- case 0x17: str = "INTERNAL HANDOVER ENQUIRY reject"; break;
-
- case 0x20: str = "Equipment failure"; break;
- case 0x21: str = "No radio resource available"; break;
- case 0x22: str = "Requested terrestrial resource unavailable"; break;
- case 0x23: str = "CCCH overload"; break;
- case 0x24: str = "Processor overload"; break;
- case 0x25: str = "BSS not equipped"; break;
- case 0x26: str = "MS not equipped"; break;
- case 0x27: str = "Invalid cell"; break;
- case 0x28: str = "Traffic Load"; break;
- case 0x29: str = "Preemption"; break;
- case 0x2a: str = "DTM Handover - SGSN Failure"; break;
- case 0x2b: str = "DTM Handover - PS Allocation failure"; break;
-
- case 0x30: str = "Requested transcoding/rate adaption unavailable"; break;
- case 0x31: str = "Circuit pool mismatch"; break;
- case 0x32: str = "Switch circuit pool"; break;
- case 0x33: str = "Requested speech version unavailable"; break;
- case 0x34: str = "LSA not allowed"; break;
-
- case 0x40: str = "Ciphering algorithm not supported"; break;
- case 0x41: str = "GERAN Iu-mode failure"; break;
- case 0x42: str = "Incoming Relocation Not Supported Due To PUESBINE Feature"; break;
- case 0x43: str = "Access Restricted Due to Shared Networks"; break;
-
- case 0x50: str = "Terrestrial circuit already allocated"; break;
- case 0x51: str = "Invalid message contents"; break;
- case 0x52: str = "Information element or field missing"; break;
- case 0x53: str = "Incorrect value"; break;
- case 0x54: str = "Unknown Message type"; break;
- case 0x55: str = "Unknown Information Element"; break;
- case 0x56: str = "DTM Handover - Invalid PS Indication"; break;
-
- case 0x60: str = "Protocol Error between BSS and MSC"; break;
- case 0x61: str = "VGCS/VBS call non existent"; break;
- case 0x62: str = "DTM Handover - Timer Expiry"; break;
-
- default:
- if (oct <= 0x17) { str = "Reserved for international use"; }
- else if ((oct >= 0x18) && (oct <= 0x1f)) { str = "Reserved for national use"; }
- else if ((oct >= 0x2c) && (oct <= 0x2f)) { str = "Reserved for national use"; }
- else if ((oct >= 0x35) && (oct <= 0x3f)) { str = "Reserved for international use"; }
- else if ((oct >= 0x44) && (oct <= 0x47)) { str = "Reserved for international use"; }
- else if ((oct >= 0x48) && (oct <= 0x4f)) { str = "Reserved for national use"; }
- else if ((oct >= 0x58) && (oct <= 0x5f)) { str = "Reserved for national use"; }
- else if ((oct >= 0x63) && (oct <= 0x67)) { str = "Reserved for international use"; }
- else if ((oct >= 0x68) && (oct <= 0x6f)) { str = "Reserved for national use"; }
- else if ((oct >= 0x70) && (oct <= 0x77)) { str = "Reserved for international use"; }
- else if ((oct >= 0x78) && (oct <= 0x7f)) { str = "Reserved for national use"; }
- break;
- }
-
- other_decode_bitfield_value(a_bigbuf, oct, 0x7f, 8);
- proto_tree_add_uint_format(tree, hf_gsm_a_bssmap_cause,
- tvb, curr_offset, 1, oct & 0x7f,
- "%s = Cause: (%u) %s",
- a_bigbuf,
- oct & 0x7f,
- str);
-
- curr_offset++;
-
- if (add_string)
- g_snprintf(add_string, string_len, " - (%u) %s", oct & 0x7f, str);
- }
-
- EXTRANEOUS_DATA_CHECK(len, curr_offset - offset);
-
- return(curr_offset - offset);
-}
-/*
- * 3.2.2.6 IMSI
+ guint8 oct;
+ guint32 value;
+ guint32 curr_offset;
+ const gchar *str = NULL;
+
+ curr_offset = offset;
+
+ oct = tvb_get_guint8(tvb, curr_offset);
+
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_cause_extension, tvb, curr_offset, 1, FALSE);
+
+ if (oct & 0x80)
+ {
+ /* 2 octet cause */
+
+ if ((oct & 0x0f) == 0x00)
+ {
+ /* national cause */
+ switch ((oct & 0x70) >> 4)
+ {
+ case 0: str = "Normal Event"; break;
+ case 1: str = "Normal Event"; break;
+ case 2: str = "Resource Unavailable"; break;
+ case 3: str = "Service or option not available"; break;
+ case 4: str = "Service or option not implemented"; break;
+ case 5: str = "Invalid message (e.g., parameter out of range)"; break;
+ case 6: str = "Protocol error"; break;
+ default:
+ str = "Interworking";
+ break;
+ }
+
+ other_decode_bitfield_value(a_bigbuf, oct, 0x70, 8);
+ proto_tree_add_text(tree,
+ tvb, curr_offset, 1,
+ "%s = Cause Class: %s",
+ a_bigbuf,
+ str);
+
+ other_decode_bitfield_value(a_bigbuf, oct, 0x0f, 8);
+ proto_tree_add_text(tree,
+ tvb, curr_offset, 1,
+ "%s = National Cause",
+ a_bigbuf);
+
+ curr_offset++;
+
+ proto_tree_add_text(tree, tvb, curr_offset, 1,
+ "Cause Value");
+
+ curr_offset++;
+
+ if (add_string)
+ g_snprintf(add_string, string_len, " - (National Cause)");
+ }
+ else
+ {
+ value = tvb_get_guint8(tvb, curr_offset + 1);
+
+ other_decode_bitfield_value(a_bigbuf, oct, 0x7f, 8);
+ proto_tree_add_text(tree,
+ tvb, curr_offset, 1,
+ "%s = Cause (MSB): %u",
+ a_bigbuf,
+ ((oct & 0x7f) << 8) | value);
+
+ curr_offset++;
+
+ other_decode_bitfield_value(a_bigbuf, value, 0xff, 8);
+ proto_tree_add_text(tree, tvb, curr_offset, 1,
+ "%s = Cause (LSB)",
+ a_bigbuf);
+
+ curr_offset++;
+ }
+ }
+ else
+ {
+ switch (oct)
+ {
+ case 0x00: str = "Radio interface message failure"; break;
+ case 0x01: str = "Radio interface failure"; break;
+ case 0x02: str = "Uplink quality"; break;
+ case 0x03: str = "Uplink strength"; break;
+ case 0x04: str = "Downlink quality"; break;
+ case 0x05: str = "Downlink strength"; break;
+ case 0x06: str = "Distance"; break;
+ case 0x07: str = "O and M intervention"; break;
+ case 0x08: str = "Response to MSC invocation"; break;
+ case 0x09: str = "Call control"; break;
+ case 0x0a: str = "Radio interface failure, reversion to old channel"; break;
+ case 0x0b: str = "Handover successful"; break;
+ case 0x0c: str = "Better Cell"; break;
+ case 0x0d: str = "Directed Retry"; break;
+ case 0x0e: str = "Joined group call channel"; break;
+ case 0x0f: str = "Traffic"; break;
+
+ case 0x10: str = "Reduce load in serving cell"; break;
+ case 0x11: str = "Traffic load in target cell higher than in source cell"; break;
+ case 0x12: str = "Relocation triggered"; break;
+ case 0x14: str = "Requested option not authorised"; break;
+ case 0x15: str = "Alternative channel configuration requested "; break;
+ case 0x16: str = "Call Identifier already allocated"; break;
+ case 0x17: str = "INTERNAL HANDOVER ENQUIRY reject"; break;
+
+ case 0x20: str = "Equipment failure"; break;
+ case 0x21: str = "No radio resource available"; break;
+ case 0x22: str = "Requested terrestrial resource unavailable"; break;
+ case 0x23: str = "CCCH overload"; break;
+ case 0x24: str = "Processor overload"; break;
+ case 0x25: str = "BSS not equipped"; break;
+ case 0x26: str = "MS not equipped"; break;
+ case 0x27: str = "Invalid cell"; break;
+ case 0x28: str = "Traffic Load"; break;
+ case 0x29: str = "Preemption"; break;
+ case 0x2a: str = "DTM Handover - SGSN Failure"; break;
+ case 0x2b: str = "DTM Handover - PS Allocation failure"; break;
+
+ case 0x30: str = "Requested transcoding/rate adaption unavailable"; break;
+ case 0x31: str = "Circuit pool mismatch"; break;
+ case 0x32: str = "Switch circuit pool"; break;
+ case 0x33: str = "Requested speech version unavailable"; break;
+ case 0x34: str = "LSA not allowed"; break;
+
+ case 0x40: str = "Ciphering algorithm not supported"; break;
+ case 0x41: str = "GERAN Iu-mode failure"; break;
+ case 0x42: str = "Incoming Relocation Not Supported Due To PUESBINE Feature"; break;
+ case 0x43: str = "Access Restricted Due to Shared Networks"; break;
+
+ case 0x50: str = "Terrestrial circuit already allocated"; break;
+ case 0x51: str = "Invalid message contents"; break;
+ case 0x52: str = "Information element or field missing"; break;
+ case 0x53: str = "Incorrect value"; break;
+ case 0x54: str = "Unknown Message type"; break;
+ case 0x55: str = "Unknown Information Element"; break;
+ case 0x56: str = "DTM Handover - Invalid PS Indication"; break;
+
+ case 0x60: str = "Protocol Error between BSS and MSC"; break;
+ case 0x61: str = "VGCS/VBS call non existent"; break;
+ case 0x62: str = "DTM Handover - Timer Expiry"; break;
+
+ default:
+ if (oct <= 0x17) { str = "Reserved for international use"; }
+ else if ((oct >= 0x18) && (oct <= 0x1f)) { str = "Reserved for national use"; }
+ else if ((oct >= 0x2c) && (oct <= 0x2f)) { str = "Reserved for national use"; }
+ else if ((oct >= 0x35) && (oct <= 0x3f)) { str = "Reserved for international use"; }
+ else if ((oct >= 0x44) && (oct <= 0x47)) { str = "Reserved for international use"; }
+ else if ((oct >= 0x48) && (oct <= 0x4f)) { str = "Reserved for national use"; }
+ else if ((oct >= 0x58) && (oct <= 0x5f)) { str = "Reserved for national use"; }
+ else if ((oct >= 0x63) && (oct <= 0x67)) { str = "Reserved for international use"; }
+ else if ((oct >= 0x68) && (oct <= 0x6f)) { str = "Reserved for national use"; }
+ else if ((oct >= 0x70) && (oct <= 0x77)) { str = "Reserved for international use"; }
+ else if ((oct >= 0x78) && (oct <= 0x7f)) { str = "Reserved for national use"; }
+ break;
+ }
+
+ other_decode_bitfield_value(a_bigbuf, oct, 0x7f, 8);
+ proto_tree_add_uint_format(tree, hf_gsm_a_bssmap_cause,
+ tvb, curr_offset, 1, oct & 0x7f,
+ "%s = Cause: (%u) %s",
+ a_bigbuf,
+ oct & 0x7f,
+ str);
+
+ curr_offset++;
+
+ if (add_string)
+ g_snprintf(add_string, string_len, " - (%u) %s", oct & 0x7f, str);
+ }
+
+ EXTRANEOUS_DATA_CHECK(len, curr_offset - offset);
+
+ return(curr_offset - offset);
+}
+/*
+ * 3.2.2.6 IMSI
* IMSI coded as the value part of the Mobile Identity IE defined in 3GPP TS 24.008 (NOTE 1)
- * NOTE 1: The Type of identity field in the Mobile Identity IE shall be ignored by the receiver.
+ * NOTE 1: The Type of identity field in the Mobile Identity IE shall be ignored by the receiver.
* Dissected in packet-gsm_a_common.c (de_mid)
*/
@@ -916,25 +916,25 @@ be_cause(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_
static guint16
be_tmsi(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string, int string_len)
{
- guint32 curr_offset;
- guint32 value;
+ guint32 curr_offset;
+ guint32 value;
- curr_offset = offset;
+ curr_offset = offset;
- value = tvb_get_ntohl(tvb, curr_offset);
+ value = tvb_get_ntohl(tvb, curr_offset);
- proto_tree_add_uint(tree, hf_gsm_a_tmsi,
- tvb, curr_offset, 4,
- value);
+ proto_tree_add_uint(tree, hf_gsm_a_tmsi,
+ tvb, curr_offset, 4,
+ value);
- if (add_string)
- g_snprintf(add_string, string_len, " - (0x%04x)", value);
+ if (add_string)
+ g_snprintf(add_string, string_len, " - (0x%04x)", value);
- curr_offset += 4;
+ curr_offset += 4;
- EXTRANEOUS_DATA_CHECK(len, curr_offset - offset);
+ EXTRANEOUS_DATA_CHECK(len, curr_offset - offset);
- return(curr_offset - offset);
+ return(curr_offset - offset);
}
/*
@@ -943,16 +943,16 @@ be_tmsi(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_s
static guint16
be_num_ms(tvbuff_t *tvb, proto_tree *tree, 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_gsm_a_bssmap_num_ms, tvb, curr_offset, 1, FALSE);
- curr_offset++;
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_num_ms, tvb, curr_offset, 1, FALSE);
+ curr_offset++;
- EXTRANEOUS_DATA_CHECK(len, curr_offset - offset);
+ EXTRANEOUS_DATA_CHECK(len, curr_offset - offset);
- return(curr_offset - offset);
+ return(curr_offset - offset);
}
/*
* [2] 3.2.2.9 Layer 3 Header Information
@@ -961,44 +961,44 @@ be_num_ms(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar
static guint16
be_l3_header_info(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
{
- guint8 oct;
- guint32 curr_offset;
+ guint8 oct;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- oct = tvb_get_guint8(tvb, curr_offset);
+ oct = tvb_get_guint8(tvb, curr_offset);
- proto_tree_add_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, curr_offset<<3, 4, FALSE);
+ proto_tree_add_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, curr_offset<<3, 4, FALSE);
- proto_tree_add_item(tree, hf_gsm_a_L3_protocol_discriminator, tvb, curr_offset, 1, FALSE);
+ proto_tree_add_item(tree, hf_gsm_a_L3_protocol_discriminator, tvb, curr_offset, 1, FALSE);
- curr_offset++;
+ curr_offset++;
- NO_MORE_DATA_CHECK(len);
+ NO_MORE_DATA_CHECK(len);
- oct = tvb_get_guint8(tvb, curr_offset);
+ oct = tvb_get_guint8(tvb, curr_offset);
- proto_tree_add_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, curr_offset<<3, 4, FALSE);
+ proto_tree_add_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, curr_offset<<3, 4, FALSE);
- other_decode_bitfield_value(a_bigbuf, oct, 0x08, 8);
- proto_tree_add_text(tree,
- tvb, curr_offset, 1,
- "%s = TI flag: %s",
- a_bigbuf,
- ((oct & 0x08) ? "allocated by receiver" : "allocated by sender"));
+ other_decode_bitfield_value(a_bigbuf, oct, 0x08, 8);
+ proto_tree_add_text(tree,
+ tvb, curr_offset, 1,
+ "%s = TI flag: %s",
+ a_bigbuf,
+ ((oct & 0x08) ? "allocated by receiver" : "allocated by sender"));
- other_decode_bitfield_value(a_bigbuf, oct, 0x07, 8);
- proto_tree_add_text(tree,
- tvb, curr_offset, 1,
- "%s = TIO: %u",
- a_bigbuf,
- oct & 0x07);
+ other_decode_bitfield_value(a_bigbuf, oct, 0x07, 8);
+ proto_tree_add_text(tree,
+ tvb, curr_offset, 1,
+ "%s = TIO: %u",
+ a_bigbuf,
+ oct & 0x07);
- curr_offset++;
+ curr_offset++;
- EXTRANEOUS_DATA_CHECK(len, curr_offset - offset);
+ EXTRANEOUS_DATA_CHECK(len, curr_offset - offset);
- return(curr_offset - offset);
+ return(curr_offset - offset);
}
/*
@@ -1007,54 +1007,54 @@ be_l3_header_info(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gc
static guint16
be_enc_info(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
{
- guint8 oct;
- guint8 mask;
- guint8 alg_id;
- guint32 curr_offset;
+ guint8 oct;
+ guint8 mask;
+ guint8 alg_id;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- oct = tvb_get_guint8(tvb, curr_offset);
+ oct = tvb_get_guint8(tvb, curr_offset);
- mask = 0x80;
- alg_id = 7;
+ mask = 0x80;
+ alg_id = 7;
- do
- {
- other_decode_bitfield_value(a_bigbuf, oct, mask, 8);
- proto_tree_add_text(tree,
- tvb, curr_offset, 1,
- "%s = GSM A5/%u: %spermitted",
- a_bigbuf,
- alg_id,
- (mask & oct) ? "" : "not ");
-
- mask >>= 1;
- alg_id--;
- }
- while (mask != 0x01);
+ do
+ {
+ other_decode_bitfield_value(a_bigbuf, oct, mask, 8);
+ proto_tree_add_text(tree,
+ tvb, curr_offset, 1,
+ "%s = GSM A5/%u: %spermitted",
+ a_bigbuf,
+ alg_id,
+ (mask & oct) ? "" : "not ");
+
+ mask >>= 1;
+ alg_id--;
+ }
+ while (mask != 0x01);
- other_decode_bitfield_value(a_bigbuf, oct, mask, 8);
- proto_tree_add_text(tree,
- tvb, curr_offset, 1,
- "%s = No encryption: %spermitted",
- a_bigbuf,
- (mask & oct) ? "" : "not ");
+ other_decode_bitfield_value(a_bigbuf, oct, mask, 8);
+ proto_tree_add_text(tree,
+ tvb, curr_offset, 1,
+ "%s = No encryption: %spermitted",
+ a_bigbuf,
+ (mask & oct) ? "" : "not ");
- curr_offset++;
+ curr_offset++;
- NO_MORE_DATA_CHECK(len);
+ NO_MORE_DATA_CHECK(len);
- proto_tree_add_text(tree,
- tvb, curr_offset, len - (curr_offset - offset),
- "Key: %s",
- tvb_bytes_to_str(tvb, curr_offset, len-(curr_offset-offset) ));
+ proto_tree_add_text(tree,
+ tvb, curr_offset, len - (curr_offset - offset),
+ "Key: %s",
+ tvb_bytes_to_str(tvb, curr_offset, len-(curr_offset-offset) ));
- curr_offset += len - (curr_offset - offset);
+ curr_offset += len - (curr_offset - offset);
- EXTRANEOUS_DATA_CHECK(len, curr_offset - offset);
+ EXTRANEOUS_DATA_CHECK(len, curr_offset - offset);
- return(curr_offset - offset);
+ return(curr_offset - offset);
}
/*
@@ -1063,391 +1063,391 @@ be_enc_info(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *a
guint16
be_chan_type(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string, int string_len)
{
- guint8 oct;
- guint8 sdi;
- guint8 num_chan;
- guint32 curr_offset;
- const gchar *str;
-
- curr_offset = offset;
-
- oct = tvb_get_guint8(tvb, curr_offset);
-
- proto_tree_add_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, curr_offset<<3, 4, FALSE);
-
- sdi = oct & 0x0f;
- switch (sdi)
- {
- case 1: str = "Speech"; break;
- case 2: str = "Data"; break;
- case 3: str = "Signalling"; break;
- case 4: str = "Speech + CTM Text Telephony"; break;
- default:
- str = "Reserved";
- break;
- }
-
- other_decode_bitfield_value(a_bigbuf, oct, 0x0f, 8);
- proto_tree_add_text(tree,
- tvb, curr_offset, 1,
- "%s = Speech/Data Indicator: %s",
- a_bigbuf,
- str);
-
- if (add_string)
- g_snprintf(add_string, string_len, " - (%s)", str);
-
- curr_offset++;
-
- NO_MORE_DATA_CHECK(len);
-
- oct = tvb_get_guint8(tvb, curr_offset);
-
- if ((sdi == 0x01)||(sdi == 0x04))
- {
- /* speech */
-
- switch (oct)
- {
- case 0x08: str = "Full rate TCH channel Bm. Prefer full rate TCH"; break;
- case 0x09: str = "Half rate TCH channel Lm. Prefer half rate TCH"; break;
- case 0x0a: str = "Full or Half rate channel, Full rate preferred changes allowed after first allocation"; break;
- case 0x0b: str = "Full or Half rate channel, Half rate preferred changes allowed after first allocation"; break;
- case 0x1a: str = "Full or Half rate channel, Full rate preferred changes between full and half rate not allowed after first allocation"; break;
- case 0x1b: str = "Full or Half rate channel, Half rate preferred changes between full and half rate not allowed after first allocation"; break;
- case 0x0f: str = "Full or Half rate channel, changes allowed after first allocation"; break;
- case 0x1f: str = "Full or Half rate channel, changes between full and half rate not allowed after first allocation"; break;
- default:
- str = "Reserved";
- break;
- }
-
- proto_tree_add_text(tree,
- tvb, curr_offset, 1,
- "Channel Rate and Type: %s",
- str);
-
- curr_offset++;
-
- NO_MORE_DATA_CHECK(len);
-
- do
- {
- oct = tvb_get_guint8(tvb, curr_offset);
-
- proto_tree_add_item(tree, hf_gsm_a_bssmap_chan_type_extension, tvb, curr_offset, 1, FALSE);
-
- switch (oct & 0x7f)
- {
- case 0x01: str = "GSM speech full rate version 1"; break;
- case 0x11: str = "GSM speech full rate version 2"; break;
- case 0x21: str = "GSM speech full rate version 3 (FR AMR)"; break;
- case 0x31: str = "GSM speech full rate version 4 (OFR AMR-WB)"; break;
- case 0x32: str = "GSM speech full rate version 5 (FR AMR-WB)"; break;
-
- case 0x05: str = "GSM speech half rate version 1"; break;
- case 0x15: str = "GSM speech half rate version 2"; break;
- case 0x25: str = "GSM speech half rate version 3 (HR AMR)"; break;
- case 0x36: str = "GSM speech half rate version 4 (OHR AMR-WB)"; break;
- case 0x35: str = "GSM speech half rate version 6 (OHR AMR)"; break;
-
- default:
- str = "Reserved";
- break;
- }
-
- other_decode_bitfield_value(a_bigbuf, oct, 0x7f, 8);
- proto_tree_add_text(tree,
- tvb, curr_offset, 1,
- "%s = Speech version identifier: %s",
- a_bigbuf,
- str);
-
- curr_offset++;
- }
- while ((len - (curr_offset - offset)) > 0);
- }
- else if (sdi == 0x02)
- {
- /* data */
-
- num_chan = 0;
-
- switch (oct)
- {
- case 0x00: str = "SDCCH or Full rate TCH channel Bm or Half rate TCH channel Lm"; break;
- case 0x01: str = "SDCCH "; break;
- case 0x02: str = "SDCCH or Full rate TCH channel Bm"; break;
- case 0x03: str = "Half rate TCH channel Lm"; break;
- case 0x08: str = "Full rate TCH channel Bm"; break;
- case 0x09: str = "Half rate TCH channel Lm"; break;
- case 0x0a: str = "Full or Half rate TCH channel, Full rate preferred, changes allowed also after first channel allocation as a result of the request"; break;
- case 0x0b: str = "Full or Half rate TCH channel, Half rate preferred, changes allowed also after first channel allocation as a result of the request"; break;
- case 0x1a: str = "Full or Half rate TCH channel, Full rate preferred, changes not allowed after first channel allocation as a result of the request"; break;
- case 0x1b: str = "Full or Half rate TCH channel. Half rate preferred, changes not allowed after first channel allocation as a result of the request"; break;
- default:
- if ((oct >= 0x20) && (oct <= 0x27))
- {
- str = "Full rate TCH channels in a multislot configuration, changes by the BSS of the the number of TCHs and if applicable the used radio interface rate per channel allowed after first channel allocation as a result of the request";
- num_chan = (oct - 0x20) + 1;
- }
- else if ((oct >= 0x30) && (oct <= 0x37))
- {
- str = "Full rate TCH channels in a multislot configuration, changes by the BSS of the number of TCHs or the used radio interface rate per channel not allowed after first channel allocation as a result of the request";
- num_chan = (oct - 0x30) + 1;
- }
- else
- {
- str = "Reserved";
- }
- break;
- }
-
- if (num_chan > 0)
- {
- proto_tree_add_text(tree,
- tvb, curr_offset, 1,
- "Channel Rate and Type: Max channels %u, %s",
- num_chan,
- str);
- }
- else
- {
- proto_tree_add_text(tree,
- tvb, curr_offset, 1,
- "Channel Rate and Type: %s",
- str);
- }
-
- curr_offset++;
-
- NO_MORE_DATA_CHECK(len);
-
- oct = tvb_get_guint8(tvb, curr_offset);
-
- proto_tree_add_item(tree, hf_gsm_a_bssmap_chan_type_extension, tvb, curr_offset, 1, FALSE);
-
- other_decode_bitfield_value(a_bigbuf, oct, 0x40, 8);
- proto_tree_add_text(tree,
- tvb, curr_offset, 1,
- "%s = %sTransparent service",
- a_bigbuf,
- (oct & 0x40) ? "Non-" : "");
-
- if (num_chan == 0)
- {
- if (oct & 0x40)
- {
- /* non-transparent */
-
- switch (oct & 0x3f)
- {
- case 0x00: str = "12 kbit/s if the channel is a full rate TCH, or 6 kbit/s if the channel is a half rate TCH"; break;
- case 0x18: str = "14.5 kbit/s"; break;
- case 0x10: str = "12 kbits/s"; break;
- case 0x11: str = "6 kbits/s"; break;
- case 0x31: str = "29 kbit/s"; break;
- case 0x34: str = "43,5 kbit/s"; break;
- default:
- str = "Reserved";
- break;
- }
- }
- else
- {
- switch (oct & 0x3f)
- {
- case 0x18: str = "14.4 kbit/s"; break;
- case 0x10: str = "9.6kbit/s"; break;
- case 0x11: str = "4.8kbit/s"; break;
- case 0x12: str = "2.4kbit/s"; break;
- case 0x13: str = "1.2Kbit/s"; break;
- case 0x14: str = "600 bit/s"; break;
- case 0x15: str = "1200/75 bit/s (1200 network-to-MS / 75 MS-to-network)"; break;
- case 0x39: str = "28,8 kbit/s"; break;
- case 0x3a: str = "32,0 kbit/s"; break;
- default:
- str = "Reserved";
- break;
- }
- }
- }
- else
- {
- if (oct & 0x40)
- {
- /* non-transparent */
-
- switch (oct & 0x3f)
- {
- case 0x16: str = "58 kbit/s (4x14.5 kbit/s)"; break;
- case 0x14: str = "48.0 / 43.5 kbit/s (4x12 kbit/s or 3x14.5 kbit/s)"; break;
- case 0x13: str = "36.0 / 29.0 kbit/s (3x12 kbit/s or 2x14.5 kbit/s)"; break;
- case 0x12: str = "24.0 / 24.0 (4x6 kbit/s or 2x12 kbit/s)"; break;
- case 0x11: str = "18.0 / 14.5 kbit/s (3x6 kbit/s or 1x14.5 kbit/s)"; break;
- case 0x10: str = "12.0 / 12.0 kbit/s (2x6 kbit/s or 1x12 kbit/s)"; break;
- default:
- str = "Reserved";
- break;
- }
- }
- else
- {
- switch (oct & 0x3f)
- {
- case 0x1f: str = "64 kbit/s, bit transparent"; break;
- case 0x1e: str = "56 kbit/s, bit transparent"; break;
- case 0x1d: str = "56 kbit/s"; break;
- case 0x1c: str = "48 kbit/s"; break;
- case 0x1b: str = "38.4 kbit/s"; break;
- case 0x1a: str = "28.8 kbit/s"; break;
- case 0x19: str = "19.2 kbit/s"; break;
- case 0x18: str = "14.4 kbit/s"; break;
- case 0x10: str = "9.6 kbit/s"; break;
- default:
- str = "Reserved";
- break;
- }
- }
- }
-
- other_decode_bitfield_value(a_bigbuf, oct, 0x3f, 8);
- proto_tree_add_text(tree,
- tvb, curr_offset, 1,
- "%s = Rate: %s",
- a_bigbuf,
- str);
-
- curr_offset++;
-
- NO_MORE_DATA_CHECK(len);
-
- oct = tvb_get_guint8(tvb, curr_offset);
-
- proto_tree_add_item(tree, hf_gsm_a_bssmap_chan_type_extension, tvb, curr_offset, 1, FALSE);
-
- proto_tree_add_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, (curr_offset<<3)+1, 3, FALSE);
-
- if (num_chan == 0)
- {
- other_decode_bitfield_value(a_bigbuf, oct, 0x08, 8);
- proto_tree_add_text(tree,
- tvb, curr_offset, 1,
- "%s = 14.5 kbit/s (TCH/F14.4) %sallowed",
- a_bigbuf,
- (oct & 0x08) ? "" : "not ");
-
- proto_tree_add_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, (curr_offset<<3)+6, 1, FALSE);
-
- other_decode_bitfield_value(a_bigbuf, oct, 0x02, 8);
- proto_tree_add_text(tree,
- tvb, curr_offset, 1,
- "%s = 12.0 kbit/s (TCH F/9.6) %sallowed",
- a_bigbuf,
- (oct & 0x02) ? "" : "not ");
-
- other_decode_bitfield_value(a_bigbuf, oct, 0x01, 8);
- proto_tree_add_text(tree,
- tvb, curr_offset, 1,
- "%s = 6.0 kbit/s (TCH F/4.8) %sallowed",
- a_bigbuf,
- (oct & 0x01) ? "" : "not ");
- }
- else
- {
- other_decode_bitfield_value(a_bigbuf, oct, 0x08, 8);
- proto_tree_add_text(tree,
- tvb, curr_offset, 1,
- "%s = 14.5/14.4 kbit/s (TCH/F14.4) %sallowed",
- a_bigbuf,
- (oct & 0x08) ? "" : "not ");
-
- proto_tree_add_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, (curr_offset<<3)+6, 1, FALSE);
-
- other_decode_bitfield_value(a_bigbuf, oct, 0x02, 8);
- proto_tree_add_text(tree,
- tvb, curr_offset, 1,
- "%s = 12.0/9.6 kbit/s (TCH F/9.6) %sallowed",
- a_bigbuf,
- (oct & 0x02) ? "" : "not ");
-
- other_decode_bitfield_value(a_bigbuf, oct, 0x01, 8);
- proto_tree_add_text(tree,
- tvb, curr_offset, 1,
- "%s = 6.0/4.8 kbit/s (TCH F/4.8) %sallowed",
- a_bigbuf,
- (oct & 0x01) ? "" : "not ");
- }
-
- curr_offset++;
- }
- else if (sdi == 0x03)
- {
- /* signalling */
-
- switch (oct)
- {
- case 0x00: str = "SDCCH or Full rate TCH channel Bm or Half rate TCH channel Lm"; break;
- case 0x01: str = "SDCCH"; break;
- case 0x02: str = "SDCCH or Full rate TCH channel Bm"; break;
- case 0x03: str = "SDCCH or Half rate TCH channel Lm"; break;
- case 0x08: str = "Full rate TCH channel Bm"; break;
- case 0x09: str = "Half rate TCH channel Lm"; break;
- case 0x0a: str = "Full or Half rate TCH channel, Full rate preferred, changes allowed also after first channel allocation as a result of the request"; break;
- case 0x0b: str = "Full or Half rate TCH channel, Half rate preferred, changes allowed also after first channel allocation as a result of the request"; break;
- case 0x1a: str = "Full or Half rate TCH channel, Full rate preferred, changes not allowed after first channel allocation as a result of the request"; break;
- case 0x1b: str = "Full or Half rate TCH channel. Half rate preferred, changes not allowed after first channel allocation as a result of the request"; break;
- default:
- str = "Reserved";
- break;
- }
-
- proto_tree_add_text(tree,
- tvb, curr_offset, 1,
- "Channel Rate and Type: %s",
- str);
-
- curr_offset++;
-
- NO_MORE_DATA_CHECK(len);
-
- proto_tree_add_text(tree,
- tvb, curr_offset, len - (curr_offset - offset),
- "Spare");
-
- curr_offset += len - (curr_offset - offset);
- }
- else
- {
- /* unknown format */
-
- proto_tree_add_text(tree,
- tvb, curr_offset, len - (curr_offset - offset),
- "Unknown format");
-
- curr_offset += len - (curr_offset - offset);
- }
-
- EXTRANEOUS_DATA_CHECK(len, curr_offset - offset);
-
- return(curr_offset - offset);
-}
-/*
- * 3.2.2.12 Periodicity
+ guint8 oct;
+ guint8 sdi;
+ guint8 num_chan;
+ guint32 curr_offset;
+ const gchar *str;
+
+ curr_offset = offset;
+
+ oct = tvb_get_guint8(tvb, curr_offset);
+
+ proto_tree_add_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, curr_offset<<3, 4, FALSE);
+
+ sdi = oct & 0x0f;
+ switch (sdi)
+ {
+ case 1: str = "Speech"; break;
+ case 2: str = "Data"; break;
+ case 3: str = "Signalling"; break;
+ case 4: str = "Speech + CTM Text Telephony"; break;
+ default:
+ str = "Reserved";
+ break;
+ }
+
+ other_decode_bitfield_value(a_bigbuf, oct, 0x0f, 8);
+ proto_tree_add_text(tree,
+ tvb, curr_offset, 1,
+ "%s = Speech/Data Indicator: %s",
+ a_bigbuf,
+ str);
+
+ if (add_string)
+ g_snprintf(add_string, string_len, " - (%s)", str);
+
+ curr_offset++;
+
+ NO_MORE_DATA_CHECK(len);
+
+ oct = tvb_get_guint8(tvb, curr_offset);
+
+ if ((sdi == 0x01)||(sdi == 0x04))
+ {
+ /* speech */
+
+ switch (oct)
+ {
+ case 0x08: str = "Full rate TCH channel Bm. Prefer full rate TCH"; break;
+ case 0x09: str = "Half rate TCH channel Lm. Prefer half rate TCH"; break;
+ case 0x0a: str = "Full or Half rate channel, Full rate preferred changes allowed after first allocation"; break;
+ case 0x0b: str = "Full or Half rate channel, Half rate preferred changes allowed after first allocation"; break;
+ case 0x1a: str = "Full or Half rate channel, Full rate preferred changes between full and half rate not allowed after first allocation"; break;
+ case 0x1b: str = "Full or Half rate channel, Half rate preferred changes between full and half rate not allowed after first allocation"; break;
+ case 0x0f: str = "Full or Half rate channel, changes allowed after first allocation"; break;
+ case 0x1f: str = "Full or Half rate channel, changes between full and half rate not allowed after first allocation"; break;
+ default:
+ str = "Reserved";
+ break;
+ }
+
+ proto_tree_add_text(tree,
+ tvb, curr_offset, 1,
+ "Channel Rate and Type: %s",
+ str);
+
+ curr_offset++;
+
+ NO_MORE_DATA_CHECK(len);
+
+ do
+ {
+ oct = tvb_get_guint8(tvb, curr_offset);
+
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_chan_type_extension, tvb, curr_offset, 1, FALSE);
+
+ switch (oct & 0x7f)
+ {
+ case 0x01: str = "GSM speech full rate version 1"; break;
+ case 0x11: str = "GSM speech full rate version 2"; break;
+ case 0x21: str = "GSM speech full rate version 3 (FR AMR)"; break;
+ case 0x31: str = "GSM speech full rate version 4 (OFR AMR-WB)"; break;
+ case 0x32: str = "GSM speech full rate version 5 (FR AMR-WB)"; break;
+
+ case 0x05: str = "GSM speech half rate version 1"; break;
+ case 0x15: str = "GSM speech half rate version 2"; break;
+ case 0x25: str = "GSM speech half rate version 3 (HR AMR)"; break;
+ case 0x36: str = "GSM speech half rate version 4 (OHR AMR-WB)"; break;
+ case 0x35: str = "GSM speech half rate version 6 (OHR AMR)"; break;
+
+ default:
+ str = "Reserved";
+ break;
+ }
+
+ other_decode_bitfield_value(a_bigbuf, oct, 0x7f, 8);
+ proto_tree_add_text(tree,
+ tvb, curr_offset, 1,
+ "%s = Speech version identifier: %s",
+ a_bigbuf,
+ str);
+
+ curr_offset++;
+ }
+ while ((len - (curr_offset - offset)) > 0);
+ }
+ else if (sdi == 0x02)
+ {
+ /* data */
+
+ num_chan = 0;
+
+ switch (oct)
+ {
+ case 0x00: str = "SDCCH or Full rate TCH channel Bm or Half rate TCH channel Lm"; break;
+ case 0x01: str = "SDCCH "; break;
+ case 0x02: str = "SDCCH or Full rate TCH channel Bm"; break;
+ case 0x03: str = "Half rate TCH channel Lm"; break;
+ case 0x08: str = "Full rate TCH channel Bm"; break;
+ case 0x09: str = "Half rate TCH channel Lm"; break;
+ case 0x0a: str = "Full or Half rate TCH channel, Full rate preferred, changes allowed also after first channel allocation as a result of the request"; break;
+ case 0x0b: str = "Full or Half rate TCH channel, Half rate preferred, changes allowed also after first channel allocation as a result of the request"; break;
+ case 0x1a: str = "Full or Half rate TCH channel, Full rate preferred, changes not allowed after first channel allocation as a result of the request"; break;
+ case 0x1b: str = "Full or Half rate TCH channel. Half rate preferred, changes not allowed after first channel allocation as a result of the request"; break;
+ default:
+ if ((oct >= 0x20) && (oct <= 0x27))
+ {
+ str = "Full rate TCH channels in a multislot configuration, changes by the BSS of the the number of TCHs and if applicable the used radio interface rate per channel allowed after first channel allocation as a result of the request";
+ num_chan = (oct - 0x20) + 1;
+ }
+ else if ((oct >= 0x30) && (oct <= 0x37))
+ {
+ str = "Full rate TCH channels in a multislot configuration, changes by the BSS of the number of TCHs or the used radio interface rate per channel not allowed after first channel allocation as a result of the request";
+ num_chan = (oct - 0x30) + 1;
+ }
+ else
+ {
+ str = "Reserved";
+ }
+ break;
+ }
+
+ if (num_chan > 0)
+ {
+ proto_tree_add_text(tree,
+ tvb, curr_offset, 1,
+ "Channel Rate and Type: Max channels %u, %s",
+ num_chan,
+ str);
+ }
+ else
+ {
+ proto_tree_add_text(tree,
+ tvb, curr_offset, 1,
+ "Channel Rate and Type: %s",
+ str);
+ }
+
+ curr_offset++;
+
+ NO_MORE_DATA_CHECK(len);
+
+ oct = tvb_get_guint8(tvb, curr_offset);
+
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_chan_type_extension, tvb, curr_offset, 1, FALSE);
+
+ other_decode_bitfield_value(a_bigbuf, oct, 0x40, 8);
+ proto_tree_add_text(tree,
+ tvb, curr_offset, 1,
+ "%s = %sTransparent service",
+ a_bigbuf,
+ (oct & 0x40) ? "Non-" : "");
+
+ if (num_chan == 0)
+ {
+ if (oct & 0x40)
+ {
+ /* non-transparent */
+
+ switch (oct & 0x3f)
+ {
+ case 0x00: str = "12 kbit/s if the channel is a full rate TCH, or 6 kbit/s if the channel is a half rate TCH"; break;
+ case 0x18: str = "14.5 kbit/s"; break;
+ case 0x10: str = "12 kbits/s"; break;
+ case 0x11: str = "6 kbits/s"; break;
+ case 0x31: str = "29 kbit/s"; break;
+ case 0x34: str = "43,5 kbit/s"; break;
+ default:
+ str = "Reserved";
+ break;
+ }
+ }
+ else
+ {
+ switch (oct & 0x3f)
+ {
+ case 0x18: str = "14.4 kbit/s"; break;
+ case 0x10: str = "9.6kbit/s"; break;
+ case 0x11: str = "4.8kbit/s"; break;
+ case 0x12: str = "2.4kbit/s"; break;
+ case 0x13: str = "1.2Kbit/s"; break;
+ case 0x14: str = "600 bit/s"; break;
+ case 0x15: str = "1200/75 bit/s (1200 network-to-MS / 75 MS-to-network)"; break;
+ case 0x39: str = "28,8 kbit/s"; break;
+ case 0x3a: str = "32,0 kbit/s"; break;
+ default:
+ str = "Reserved";
+ break;
+ }
+ }
+ }
+ else
+ {
+ if (oct & 0x40)
+ {
+ /* non-transparent */
+
+ switch (oct & 0x3f)
+ {
+ case 0x16: str = "58 kbit/s (4x14.5 kbit/s)"; break;
+ case 0x14: str = "48.0 / 43.5 kbit/s (4x12 kbit/s or 3x14.5 kbit/s)"; break;
+ case 0x13: str = "36.0 / 29.0 kbit/s (3x12 kbit/s or 2x14.5 kbit/s)"; break;
+ case 0x12: str = "24.0 / 24.0 (4x6 kbit/s or 2x12 kbit/s)"; break;
+ case 0x11: str = "18.0 / 14.5 kbit/s (3x6 kbit/s or 1x14.5 kbit/s)"; break;
+ case 0x10: str = "12.0 / 12.0 kbit/s (2x6 kbit/s or 1x12 kbit/s)"; break;
+ default:
+ str = "Reserved";
+ break;
+ }
+ }
+ else
+ {
+ switch (oct & 0x3f)
+ {
+ case 0x1f: str = "64 kbit/s, bit transparent"; break;
+ case 0x1e: str = "56 kbit/s, bit transparent"; break;
+ case 0x1d: str = "56 kbit/s"; break;
+ case 0x1c: str = "48 kbit/s"; break;
+ case 0x1b: str = "38.4 kbit/s"; break;
+ case 0x1a: str = "28.8 kbit/s"; break;
+ case 0x19: str = "19.2 kbit/s"; break;
+ case 0x18: str = "14.4 kbit/s"; break;
+ case 0x10: str = "9.6 kbit/s"; break;
+ default:
+ str = "Reserved";
+ break;
+ }
+ }
+ }
+
+ other_decode_bitfield_value(a_bigbuf, oct, 0x3f, 8);
+ proto_tree_add_text(tree,
+ tvb, curr_offset, 1,
+ "%s = Rate: %s",
+ a_bigbuf,
+ str);
+
+ curr_offset++;
+
+ NO_MORE_DATA_CHECK(len);
+
+ oct = tvb_get_guint8(tvb, curr_offset);
+
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_chan_type_extension, tvb, curr_offset, 1, FALSE);
+
+ proto_tree_add_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, (curr_offset<<3)+1, 3, FALSE);
+
+ if (num_chan == 0)
+ {
+ other_decode_bitfield_value(a_bigbuf, oct, 0x08, 8);
+ proto_tree_add_text(tree,
+ tvb, curr_offset, 1,
+ "%s = 14.5 kbit/s (TCH/F14.4) %sallowed",
+ a_bigbuf,
+ (oct & 0x08) ? "" : "not ");
+
+ proto_tree_add_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, (curr_offset<<3)+6, 1, FALSE);
+
+ other_decode_bitfield_value(a_bigbuf, oct, 0x02, 8);
+ proto_tree_add_text(tree,
+ tvb, curr_offset, 1,
+ "%s = 12.0 kbit/s (TCH F/9.6) %sallowed",
+ a_bigbuf,
+ (oct & 0x02) ? "" : "not ");
+
+ other_decode_bitfield_value(a_bigbuf, oct, 0x01, 8);
+ proto_tree_add_text(tree,
+ tvb, curr_offset, 1,
+ "%s = 6.0 kbit/s (TCH F/4.8) %sallowed",
+ a_bigbuf,
+ (oct & 0x01) ? "" : "not ");
+ }
+ else
+ {
+ other_decode_bitfield_value(a_bigbuf, oct, 0x08, 8);
+ proto_tree_add_text(tree,
+ tvb, curr_offset, 1,
+ "%s = 14.5/14.4 kbit/s (TCH/F14.4) %sallowed",
+ a_bigbuf,
+ (oct & 0x08) ? "" : "not ");
+
+ proto_tree_add_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, (curr_offset<<3)+6, 1, FALSE);
+
+ other_decode_bitfield_value(a_bigbuf, oct, 0x02, 8);
+ proto_tree_add_text(tree,
+ tvb, curr_offset, 1,
+ "%s = 12.0/9.6 kbit/s (TCH F/9.6) %sallowed",
+ a_bigbuf,
+ (oct & 0x02) ? "" : "not ");
+
+ other_decode_bitfield_value(a_bigbuf, oct, 0x01, 8);
+ proto_tree_add_text(tree,
+ tvb, curr_offset, 1,
+ "%s = 6.0/4.8 kbit/s (TCH F/4.8) %sallowed",
+ a_bigbuf,
+ (oct & 0x01) ? "" : "not ");
+ }
+
+ curr_offset++;
+ }
+ else if (sdi == 0x03)
+ {
+ /* signalling */
+
+ switch (oct)
+ {
+ case 0x00: str = "SDCCH or Full rate TCH channel Bm or Half rate TCH channel Lm"; break;
+ case 0x01: str = "SDCCH"; break;
+ case 0x02: str = "SDCCH or Full rate TCH channel Bm"; break;
+ case 0x03: str = "SDCCH or Half rate TCH channel Lm"; break;
+ case 0x08: str = "Full rate TCH channel Bm"; break;
+ case 0x09: str = "Half rate TCH channel Lm"; break;
+ case 0x0a: str = "Full or Half rate TCH channel, Full rate preferred, changes allowed also after first channel allocation as a result of the request"; break;
+ case 0x0b: str = "Full or Half rate TCH channel, Half rate preferred, changes allowed also after first channel allocation as a result of the request"; break;
+ case 0x1a: str = "Full or Half rate TCH channel, Full rate preferred, changes not allowed after first channel allocation as a result of the request"; break;
+ case 0x1b: str = "Full or Half rate TCH channel. Half rate preferred, changes not allowed after first channel allocation as a result of the request"; break;
+ default:
+ str = "Reserved";
+ break;
+ }
+
+ proto_tree_add_text(tree,
+ tvb, curr_offset, 1,
+ "Channel Rate and Type: %s",
+ str);
+
+ curr_offset++;
+
+ NO_MORE_DATA_CHECK(len);
+
+ proto_tree_add_text(tree,
+ tvb, curr_offset, len - (curr_offset - offset),
+ "Spare");
+
+ curr_offset += len - (curr_offset - offset);
+ }
+ else
+ {
+ /* unknown format */
+
+ proto_tree_add_text(tree,
+ tvb, curr_offset, len - (curr_offset - offset),
+ "Unknown format");
+
+ curr_offset += len - (curr_offset - offset);
+ }
+
+ EXTRANEOUS_DATA_CHECK(len, curr_offset - offset);
+
+ return(curr_offset - offset);
+}
+/*
+ * 3.2.2.12 Periodicity
*/
static guint16
be_periodicity(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
- curr_offset = offset;
- proto_tree_add_item(tree, hf_gsm_a_bssmap_periodicity, tvb, curr_offset, 1, FALSE);
- curr_offset++;
+ curr_offset = offset;
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_periodicity, tvb, curr_offset, 1, FALSE);
+ curr_offset++;
- return(curr_offset - offset);
+ return(curr_offset - offset);
}
/*
- * 3.2.2.13 Extended Resource Indicator
+ * 3.2.2.13 Extended Resource Indicator
*/
static const true_false_string bssmap_tarr_vals = {
"The total number of accessible channels is requested",
@@ -1456,87 +1456,87 @@ static const true_false_string bssmap_tarr_vals = {
static guint16
be_ext_res_ind(tvbuff_t *tvb, proto_tree *tree, 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_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, curr_offset<<3, 6, FALSE);
- /* the Subsequent Mode field */
- proto_tree_add_item(tree, hf_gsm_a_bssmap_sm, tvb, curr_offset, 1, FALSE);
- /* Total Accessible Resource Requested field */
- proto_tree_add_item(tree, hf_gsm_a_bssmap_tarr, tvb, curr_offset, 1, FALSE);
- curr_offset++;
+ proto_tree_add_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, curr_offset<<3, 6, FALSE);
+ /* the Subsequent Mode field */
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_sm, tvb, curr_offset, 1, FALSE);
+ /* Total Accessible Resource Requested field */
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_tarr, tvb, curr_offset, 1, FALSE);
+ curr_offset++;
- return(curr_offset - offset);
+ return(curr_offset - offset);
}
/*
- * 3.2.2.14 Total Resource Accessible
+ * 3.2.2.14 Total Resource Accessible
*/
static guint16
be_tot_res_acc(tvbuff_t *tvb, proto_tree *tree, 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;
- /* Total number of accessible full rate channels */
- proto_tree_add_item(tree, hf_gsm_a_bssmap_tot_no_of_fullr_ch, tvb, curr_offset, 2, FALSE);
- curr_offset+=2;
- /* Total number of accessible half rate channels */
- proto_tree_add_item(tree, hf_gsm_a_bssmap_tot_no_of_hr_ch, tvb, curr_offset, 2, FALSE);
- curr_offset+=2;
+ /* Total number of accessible full rate channels */
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_tot_no_of_fullr_ch, tvb, curr_offset, 2, FALSE);
+ curr_offset+=2;
+ /* Total number of accessible half rate channels */
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_tot_no_of_hr_ch, tvb, curr_offset, 2, FALSE);
+ curr_offset+=2;
- return(len);
+ return(len);
}
/*
- * 3.2.2.15 LSA Identifier
+ * 3.2.2.15 LSA Identifier
* The octets 3-5 are coded as specified in 3GPP TS 23.003, 'Identification of Localised Service Area'. Bit 8 of octet 3 is the MSB.
*/
static guint16
be_lsa_id(tvbuff_t *tvb, proto_tree *tree, 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;
- /* TS 23.003:
- * The LSA ID consists of 24 bits, numbered from 0 to 23, with bit 0 being the LSB.
- * Bit 0 indicates whether the LSA is a PLMN significant number or a universal LSA.
- * If the bit is set to 0 the LSA is a PLMN significant number; if it is set to
- * 1 it is a universal LSA.
- */
- proto_tree_add_item(tree, hf_gsm_a_bssmap_lsa_id, tvb, curr_offset, 3, FALSE);
- curr_offset+=3;
+ /* TS 23.003:
+ * The LSA ID consists of 24 bits, numbered from 0 to 23, with bit 0 being the LSB.
+ * Bit 0 indicates whether the LSA is a PLMN significant number or a universal LSA.
+ * If the bit is set to 0 the LSA is a PLMN significant number; if it is set to
+ * 1 it is a universal LSA.
+ */
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_lsa_id, tvb, curr_offset, 3, FALSE);
+ curr_offset+=3;
- return(len);
+ return(len);
}
/*
- * 3.2.2.16 LSA Identifier List
+ * 3.2.2.16 LSA Identifier List
*/
static guint16
be_lsa_id_list(tvbuff_t *tvb, proto_tree *tree, 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_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, curr_offset<<3, 7, FALSE);
- proto_tree_add_item(tree, hf_gsm_a_bssmap_ep, tvb, curr_offset, 1, FALSE);
- curr_offset++;
+ proto_tree_add_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, curr_offset<<3, 7, FALSE);
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_ep, tvb, curr_offset, 1, FALSE);
+ curr_offset++;
- /* LSA identification 1 - n */
+ /* LSA identification 1 - n */
- while (curr_offset-offset < len){
- proto_tree_add_item(tree, hf_gsm_a_bssmap_lsa_id, tvb, curr_offset, 3, FALSE);
- curr_offset+=3;
- }
+ while (curr_offset-offset < len){
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_lsa_id, tvb, curr_offset, 3, FALSE);
+ curr_offset+=3;
+ }
- return(len);
+ return(len);
}
/*
* [2] 3.2.2.17 Cell Identifier
@@ -1545,150 +1545,150 @@ be_lsa_id_list(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, g
guint16
be_cell_id_aux(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string, int string_len, guint8 disc)
{
- guint32 value;
- guint32 curr_offset;
-
- if (add_string)
- add_string[0] = '\0';
- curr_offset = offset;
-
- switch (disc)
- {
- case 0x00:
- /* FALLTHRU */
-
- case 0x04:
- /* FALLTHRU */
-
- case 0x08: /* For intersystem handover from GSM to UMTS or cdma2000: */
- /* FALLTHRU */
- case 0xb:
- /* Serving Area Identity, SAI, is used to identify the Serving Area of UE
- * within UTRAN or cdma2000.
- * Coding of Cell Identification for Cell identification discriminator = 1011
- * The coding of SAI is defined in 3GPP TS 25.413, without the protocol extension
- * container.
- * TS 25.413:
- * SAI ::= SEQUENCE {
- * pLMNidentity PLMNidentity,
- * lAC LAC,
- * sAC SAC,
- * iE-Extensions ProtocolExtensionContainer { {SAI-ExtIEs} } OPTIONAL
- * }
- */
- /* FALLTHRU */
- case 0x0c: /* For identification of a UTRAN cell for cell load information: */
- if (disc != 0x0b)
- curr_offset = dissect_e212_mcc_mnc(tvb, g_pinfo, tree, curr_offset, TRUE);
- else
- curr_offset = dissect_e212_mcc_mnc(tvb, g_pinfo, tree, curr_offset, FALSE);
- /* FALLTHRU */
-
- case 0x01:
- case 0x05:
- case 0x0a: /*For intersystem handover from GSM to UMTS or cdma2000: */
- /* LAC */
- value = tvb_get_ntohs(tvb, curr_offset);
- proto_tree_add_item(tree, hf_gsm_a_bssmap_cell_lac, tvb, curr_offset, 2, FALSE);
- curr_offset += 2;
-
- if (add_string)
- g_snprintf(add_string, string_len, " - LAC (0x%04x)", value);
- /* FALLTHRU */
- if (disc == 0x0b){
- /* If SAI, SAC follows */
- proto_tree_add_item(tree, hf_gsm_a_bssmap_sac, tvb, curr_offset, 2, FALSE);
- curr_offset += 2;
- break;
- }
-
- case 0x09: /* For intersystem handover from GSM to UMTS or cdma2000: */
-
- if ((disc == 0x08) ||(disc == 0x09) || (disc == 0x0a)|| (disc == 0x0c)){
- /* RNC-ID
- * The octets 9-10 are coded as the RNC-ID (0..4095) or the
- * Extended RNC-ID (4096..65535) specified in 3GPP TS 25.413 [31]:
- * XXX is this a PER encoded number?
- */
- value = tvb_get_ntohs(tvb, curr_offset);
- proto_tree_add_item(tree, hf_gsm_a_bssmap_be_rnc_id, tvb, curr_offset, 2, FALSE);
- curr_offset += 2;
-
- if (add_string)
- {
- if (add_string[0] == '\0')
- {
- g_snprintf(add_string, string_len, " - RNC-ID (%u)", value);
- }
- else
- {
- g_snprintf(add_string, string_len, "%s/RNC-ID (%u)", add_string, value);
- }
- }
- break;
- }
-
- if ((disc == 0x04) || (disc == 0x05) || (disc == 0x08)) break;
-
- /* FALLTHRU */
-
- case 0x02:
- /* CI */
-
- value = tvb_get_ntohs(tvb, curr_offset);
- proto_tree_add_uint(tree, hf_gsm_a_bssmap_cell_ci, tvb,
- curr_offset, 2, value);
-
- curr_offset += 2;
-
- if (add_string)
- {
- if (add_string[0] == '\0')
- {
- g_snprintf(add_string, string_len, " - CI (%u)", value);
- }
- else
- {
- g_snprintf(add_string, string_len, "%s/CI (%u)", add_string, value);
- }
- }
- break;
- default:
- proto_tree_add_text(tree, tvb, curr_offset, len,
- "Cell ID - Unknown format");
-
- curr_offset += (len);
- break;
- }
-
- return(curr_offset - offset);
+ guint32 value;
+ guint32 curr_offset;
+
+ if (add_string)
+ add_string[0] = '\0';
+ curr_offset = offset;
+
+ switch (disc)
+ {
+ case 0x00:
+ /* FALLTHRU */
+
+ case 0x04:
+ /* FALLTHRU */
+
+ case 0x08: /* For intersystem handover from GSM to UMTS or cdma2000: */
+ /* FALLTHRU */
+ case 0xb:
+ /* Serving Area Identity, SAI, is used to identify the Serving Area of UE
+ * within UTRAN or cdma2000.
+ * Coding of Cell Identification for Cell identification discriminator = 1011
+ * The coding of SAI is defined in 3GPP TS 25.413, without the protocol extension
+ * container.
+ * TS 25.413:
+ * SAI ::= SEQUENCE {
+ * pLMNidentity PLMNidentity,
+ * lAC LAC,
+ * sAC SAC,
+ * iE-Extensions ProtocolExtensionContainer { {SAI-ExtIEs} } OPTIONAL
+ * }
+ */
+ /* FALLTHRU */
+ case 0x0c: /* For identification of a UTRAN cell for cell load information: */
+ if (disc != 0x0b)
+ curr_offset = dissect_e212_mcc_mnc(tvb, g_pinfo, tree, curr_offset, TRUE);
+ else
+ curr_offset = dissect_e212_mcc_mnc(tvb, g_pinfo, tree, curr_offset, FALSE);
+ /* FALLTHRU */
+
+ case 0x01:
+ case 0x05:
+ case 0x0a: /*For intersystem handover from GSM to UMTS or cdma2000: */
+ /* LAC */
+ value = tvb_get_ntohs(tvb, curr_offset);
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_cell_lac, tvb, curr_offset, 2, FALSE);
+ curr_offset += 2;
+
+ if (add_string)
+ g_snprintf(add_string, string_len, " - LAC (0x%04x)", value);
+ /* FALLTHRU */
+ if (disc == 0x0b){
+ /* If SAI, SAC follows */
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_sac, tvb, curr_offset, 2, FALSE);
+ curr_offset += 2;
+ break;
+ }
+
+ case 0x09: /* For intersystem handover from GSM to UMTS or cdma2000: */
+
+ if ((disc == 0x08) ||(disc == 0x09) || (disc == 0x0a)|| (disc == 0x0c)){
+ /* RNC-ID
+ * The octets 9-10 are coded as the RNC-ID (0..4095) or the
+ * Extended RNC-ID (4096..65535) specified in 3GPP TS 25.413 [31]:
+ * XXX is this a PER encoded number?
+ */
+ value = tvb_get_ntohs(tvb, curr_offset);
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_be_rnc_id, tvb, curr_offset, 2, FALSE);
+ curr_offset += 2;
+
+ if (add_string)
+ {
+ if (add_string[0] == '\0')
+ {
+ g_snprintf(add_string, string_len, " - RNC-ID (%u)", value);
+ }
+ else
+ {
+ g_snprintf(add_string, string_len, "%s/RNC-ID (%u)", add_string, value);
+ }
+ }
+ break;
+ }
+
+ if ((disc == 0x04) || (disc == 0x05) || (disc == 0x08)) break;
+
+ /* FALLTHRU */
+
+ case 0x02:
+ /* CI */
+
+ value = tvb_get_ntohs(tvb, curr_offset);
+ proto_tree_add_uint(tree, hf_gsm_a_bssmap_cell_ci, tvb,
+ curr_offset, 2, value);
+
+ curr_offset += 2;
+
+ if (add_string)
+ {
+ if (add_string[0] == '\0')
+ {
+ g_snprintf(add_string, string_len, " - CI (%u)", value);
+ }
+ else
+ {
+ g_snprintf(add_string, string_len, "%s/CI (%u)", add_string, value);
+ }
+ }
+ break;
+ default:
+ proto_tree_add_text(tree, tvb, curr_offset, len,
+ "Cell ID - Unknown format");
+
+ curr_offset += (len);
+ break;
+ }
+
+ return(curr_offset - offset);
}
static guint16
be_cell_id(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string, int string_len)
{
- guint8 oct;
- guint8 disc;
- guint32 curr_offset;
+ guint8 oct;
+ guint8 disc;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- oct = tvb_get_guint8(tvb, curr_offset);
+ oct = tvb_get_guint8(tvb, curr_offset);
- proto_tree_add_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, curr_offset<<3, 4, FALSE);
- proto_tree_add_item(tree, hf_gsm_a_bssmap_be_cell_id_disc, tvb, curr_offset, 1, FALSE);
- disc = oct&0x0f;
+ proto_tree_add_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, curr_offset<<3, 4, FALSE);
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_be_cell_id_disc, tvb, curr_offset, 1, FALSE);
+ disc = oct&0x0f;
cell_discriminator = disc; /* may be required later */
- curr_offset++;
+ curr_offset++;
- NO_MORE_DATA_CHECK(len);
+ NO_MORE_DATA_CHECK(len);
- curr_offset +=
- be_cell_id_aux(tvb, tree, curr_offset, len - (curr_offset - offset), add_string, string_len, disc);
+ curr_offset +=
+ be_cell_id_aux(tvb, tree, curr_offset, len - (curr_offset - offset), add_string, string_len, disc);
- /* no length check possible */
+ /* no length check possible */
- return(curr_offset - offset);
+ return(curr_offset - offset);
}
/*
@@ -1697,99 +1697,99 @@ be_cell_id(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar
static guint16
be_prio(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string, int string_len)
{
- guint8 oct;
- guint32 curr_offset;
- const gchar *str;
-
- curr_offset = offset;
-
- oct = tvb_get_guint8(tvb, curr_offset);
-
- proto_tree_add_item(tree, hf_gsm_a_b8spare, tvb, curr_offset, 1, FALSE);
+ guint8 oct;
+ guint32 curr_offset;
+ const gchar *str;
- other_decode_bitfield_value(a_bigbuf, oct, 0x40, 8);
- proto_tree_add_text(tree,
- tvb, curr_offset, 1,
- "%s = Preemption Capability Indicator (PCI): this allocation request %s preempt an existing connection",
- a_bigbuf,
- (oct & 0x40) ? "may" : "shall not");
+ curr_offset = offset;
- switch ((oct & 0x3c) >> 2)
- {
- case 0x00: str = "Spare"; break;
- case 0x0f: str = "priority not used"; break;
- default:
- str = "1 is highest";
- break;
- }
+ oct = tvb_get_guint8(tvb, curr_offset);
- other_decode_bitfield_value(a_bigbuf, oct, 0x3c, 8);
- proto_tree_add_text(tree,
- tvb, curr_offset, 1,
- "%s = Priority Level: (%u) %s",
- a_bigbuf,
- (oct & 0x3c) >> 2,
- str);
+ proto_tree_add_item(tree, hf_gsm_a_b8spare, tvb, curr_offset, 1, FALSE);
- if (add_string)
- g_snprintf(add_string, string_len, " - (%u)", (oct & 0x3c) >> 2);
+ other_decode_bitfield_value(a_bigbuf, oct, 0x40, 8);
+ proto_tree_add_text(tree,
+ tvb, curr_offset, 1,
+ "%s = Preemption Capability Indicator (PCI): this allocation request %s preempt an existing connection",
+ a_bigbuf,
+ (oct & 0x40) ? "may" : "shall not");
- other_decode_bitfield_value(a_bigbuf, oct, 0x02, 8);
- proto_tree_add_text(tree,
- tvb, curr_offset, 1,
- "%s = Queuing Allowed Indicator (QA): queuing %sallowed",
- a_bigbuf,
- (oct & 0x02) ? "" : "not ");
+ switch ((oct & 0x3c) >> 2)
+ {
+ case 0x00: str = "Spare"; break;
+ case 0x0f: str = "priority not used"; break;
+ default:
+ str = "1 is highest";
+ break;
+ }
- other_decode_bitfield_value(a_bigbuf, oct, 0x01, 8);
- proto_tree_add_text(tree,
- tvb, curr_offset, 1,
- "%s = Preemption Vulnerability Indicator (PVI): this connection %s be preempted by another allocation request",
- a_bigbuf,
- (oct & 0x01) ? "might" : "shall not");
+ other_decode_bitfield_value(a_bigbuf, oct, 0x3c, 8);
+ proto_tree_add_text(tree,
+ tvb, curr_offset, 1,
+ "%s = Priority Level: (%u) %s",
+ a_bigbuf,
+ (oct & 0x3c) >> 2,
+ str);
+
+ if (add_string)
+ g_snprintf(add_string, string_len, " - (%u)", (oct & 0x3c) >> 2);
+
+ other_decode_bitfield_value(a_bigbuf, oct, 0x02, 8);
+ proto_tree_add_text(tree,
+ tvb, curr_offset, 1,
+ "%s = Queuing Allowed Indicator (QA): queuing %sallowed",
+ a_bigbuf,
+ (oct & 0x02) ? "" : "not ");
+
+ other_decode_bitfield_value(a_bigbuf, oct, 0x01, 8);
+ proto_tree_add_text(tree,
+ tvb, curr_offset, 1,
+ "%s = Preemption Vulnerability Indicator (PVI): this connection %s be preempted by another allocation request",
+ a_bigbuf,
+ (oct & 0x01) ? "might" : "shall not");
- curr_offset++;
+ curr_offset++;
- /* no length check possible */
+ /* no length check possible */
- return(curr_offset - offset);
+ return(curr_offset - offset);
}
/*
- * 3.2.2.19 Classmark Information Type 2
- * The classmark octets 3, 4 and 5 are coded in the same way as the
- * equivalent octets in the Mobile station classmark 2 element of
+ * 3.2.2.19 Classmark Information Type 2
+ * The classmark octets 3, 4 and 5 are coded in the same way as the
+ * equivalent octets in the Mobile station classmark 2 element of
* 3GPP TS 24.008
* dissected in packet-gsm_a_common.c
*/
/*
- * 3.2.2.20 Classmark Information Type 3
- * The classmark octets 3 to 34 are coded in the same way as the
- * equivalent octets in the Mobile station classmark 3 element of
+ * 3.2.2.20 Classmark Information Type 3
+ * The classmark octets 3 to 34 are coded in the same way as the
+ * equivalent octets in the Mobile station classmark 3 element of
* 3GPP TS 24.008.
* dissected in packet-gsm_a_common.c
*/
/*
- * 3.2.2.21 Interference Band To Be Used
+ * 3.2.2.21 Interference Band To Be Used
*/
static guint16
be_int_band(tvbuff_t *tvb, proto_tree *tree, 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, "Not decoded yet");
+ proto_tree_add_text(tree, tvb, curr_offset, len, "Not decoded yet");
- return(len);
+ return(len);
}
/*
- * 3.2.2.22 RR Cause
+ * 3.2.2.22 RR Cause
* Octet 2 is coded as the equivalent field from 3GPP TS 24.008
* Dissected in packet-gsm_a_rr.c
*/
/*
- * 3.2.2.23 LSA Information
+ * 3.2.2.23 LSA Information
*/
static const true_false_string bssmap_lsa_only_value = {
@@ -1800,29 +1800,29 @@ static const true_false_string bssmap_lsa_only_value = {
static guint16
be_lsa_info(tvbuff_t *tvb, proto_tree *tree, 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_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, curr_offset<<3, 7, FALSE);
- proto_tree_add_item(tree, hf_gsm_a_bssmap_lsa_only, tvb, curr_offset, 1, FALSE);
- curr_offset++;
+ proto_tree_add_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, curr_offset<<3, 7, FALSE);
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_lsa_only, tvb, curr_offset, 1, FALSE);
+ curr_offset++;
- while (curr_offset-offset < len){
- /* LSA identification and attributes */
- /* 8 7 6 5 4 3 2 1
- * spare act pref priority
- */
- proto_tree_add_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, curr_offset<<3, 2, FALSE);
- proto_tree_add_item(tree, hf_gsm_a_bssmap_act, tvb, curr_offset, 1, FALSE);
- proto_tree_add_item(tree, hf_gsm_a_bssmap_pref, tvb, curr_offset, 1, FALSE);
- proto_tree_add_item(tree, hf_gsm_a_bssmap_lsa_inf_prio, tvb, curr_offset, 1, FALSE);
- curr_offset++;
- proto_tree_add_item(tree, hf_gsm_a_bssmap_lsa_id, tvb, curr_offset, 3, FALSE);
- curr_offset+=3;
- }
+ while (curr_offset-offset < len){
+ /* LSA identification and attributes */
+ /* 8 7 6 5 4 3 2 1
+ * spare act pref priority
+ */
+ proto_tree_add_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, curr_offset<<3, 2, FALSE);
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_act, tvb, curr_offset, 1, FALSE);
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_pref, tvb, curr_offset, 1, FALSE);
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_lsa_inf_prio, tvb, curr_offset, 1, FALSE);
+ curr_offset++;
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_lsa_id, tvb, curr_offset, 3, FALSE);
+ curr_offset+=3;
+ }
- return(len);
+ return(len);
}
/*
* [2] 3.2.2.24 Layer 3 Information
@@ -1830,27 +1830,27 @@ be_lsa_info(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gcha
static guint16
be_l3_info(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
- tvbuff_t *l3_tvb;
+ guint32 curr_offset;
+ tvbuff_t *l3_tvb;
- curr_offset = offset;
+ curr_offset = offset;
- proto_tree_add_text(tree, tvb, curr_offset, len,
- "Layer 3 Information value");
+ proto_tree_add_text(tree, tvb, curr_offset, len,
+ "Layer 3 Information value");
- /*
- * dissect the embedded DTAP message
- */
- l3_tvb = tvb_new_subset(tvb, curr_offset, len, len);
+ /*
+ * dissect the embedded DTAP message
+ */
+ l3_tvb = tvb_new_subset(tvb, curr_offset, len, len);
- /* This information element carries a radio interface message.
- In the case of an Intersystem handover to UMTS,
- this information element contains a HANDOVER TO UTRAN COMMAND message
- as defined in 3GPP TS 25.331.
- In the case of an Inter BSC handover,
- it contains an RR HANDOVER COMMAND message as defined in 3GPP TS 44.018.
- In the case of an Intersystem handover to cdma2000,
- this information element contains the HANDOVER TO CDMA2000 COMMAND message,
+ /* This information element carries a radio interface message.
+ In the case of an Intersystem handover to UMTS,
+ this information element contains a HANDOVER TO UTRAN COMMAND message
+ as defined in 3GPP TS 25.331.
+ In the case of an Inter BSC handover,
+ it contains an RR HANDOVER COMMAND message as defined in 3GPP TS 44.018.
+ In the case of an Intersystem handover to cdma2000,
+ this information element contains the HANDOVER TO CDMA2000 COMMAND message,
as defined in 3GPP TS 44.018. */
/* note that we can't (from this PDU alone) determine whether a handover is to UMTS or cdma2000
@@ -1864,13 +1864,13 @@ be_l3_info(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *ad
dissect_rrc_HandoverToUTRANCommand_PDU(l3_tvb, g_pinfo, g_tree);
}
- curr_offset += len;
+ curr_offset += len;
- EXTRANEOUS_DATA_CHECK(len, curr_offset - offset);
+ EXTRANEOUS_DATA_CHECK(len, curr_offset - offset);
cell_discriminator = 0x0f;
- return(curr_offset - offset);
+ return(curr_offset - offset);
}
/*
@@ -1879,30 +1879,30 @@ be_l3_info(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *ad
static guint16
be_dlci(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint8 oct;
- guint32 curr_offset;
- proto_item *item = NULL;
- proto_tree *subtree = NULL;
+ guint8 oct;
+ guint32 curr_offset;
+ proto_item *item = NULL;
+ proto_tree *subtree = NULL;
- curr_offset = offset;
+ curr_offset = offset;
- item =
- proto_tree_add_text(tree, tvb, curr_offset, 1,
- "Data Link Connection Identifier");
+ item =
+ proto_tree_add_text(tree, tvb, curr_offset, 1,
+ "Data Link Connection Identifier");
- subtree = proto_item_add_subtree(item, ett_dlci);
+ subtree = proto_item_add_subtree(item, ett_dlci);
- oct = tvb_get_guint8(tvb, curr_offset);
+ oct = tvb_get_guint8(tvb, curr_offset);
- proto_tree_add_uint(subtree, hf_gsm_a_bssmap_dlci_cc, tvb, curr_offset, 1, oct);
- proto_tree_add_uint(subtree, hf_gsm_a_bssmap_dlci_spare, tvb, curr_offset, 1, oct);
- proto_tree_add_uint(subtree, hf_gsm_a_bssmap_dlci_sapi, tvb, curr_offset, 1, oct);
+ proto_tree_add_uint(subtree, hf_gsm_a_bssmap_dlci_cc, tvb, curr_offset, 1, oct);
+ proto_tree_add_uint(subtree, hf_gsm_a_bssmap_dlci_spare, tvb, curr_offset, 1, oct);
+ proto_tree_add_uint(subtree, hf_gsm_a_bssmap_dlci_sapi, tvb, curr_offset, 1, oct);
- curr_offset++;
+ curr_offset++;
- /* no length check possible */
+ /* no length check possible */
- return(curr_offset - offset);
+ return(curr_offset - offset);
}
/*
@@ -1911,26 +1911,26 @@ be_dlci(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *a
static guint16
be_down_dtx_flag(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint oct;
- guint32 curr_offset;
+ guint oct;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- oct = tvb_get_guint8(tvb, curr_offset);
+ oct = tvb_get_guint8(tvb, curr_offset);
- proto_tree_add_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, curr_offset<<3, 7, FALSE);
- other_decode_bitfield_value(a_bigbuf, oct, 0x01, 8);
- proto_tree_add_text(tree,
- tvb, curr_offset, 1,
- "%s = BSS is %s to activate DTX in the downlink direction",
- a_bigbuf,
- (oct & 0x01) ? "forbidden" : "allowed");
+ proto_tree_add_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, curr_offset<<3, 7, FALSE);
+ other_decode_bitfield_value(a_bigbuf, oct, 0x01, 8);
+ proto_tree_add_text(tree,
+ tvb, curr_offset, 1,
+ "%s = BSS is %s to activate DTX in the downlink direction",
+ a_bigbuf,
+ (oct & 0x01) ? "forbidden" : "allowed");
- curr_offset++;
+ curr_offset++;
- /* no length check possible */
+ /* no length check possible */
- return(curr_offset - offset);
+ return(curr_offset - offset);
}
/*
@@ -1939,214 +1939,214 @@ be_down_dtx_flag(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_,
guint16
be_cell_id_list(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string, int string_len)
{
- guint8 oct;
- guint16 consumed;
- guint8 disc;
- guint8 num_cells;
- guint32 curr_offset;
- proto_item *item = NULL;
- proto_tree *subtree = NULL;
+ guint8 oct;
+ guint16 consumed;
+ guint8 disc;
+ guint8 num_cells;
+ guint32 curr_offset;
+ proto_item *item = NULL;
+ proto_tree *subtree = NULL;
- curr_offset = offset;
+ curr_offset = offset;
- oct = tvb_get_guint8(tvb, curr_offset);
+ oct = tvb_get_guint8(tvb, curr_offset);
- proto_tree_add_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, curr_offset<<3, 4, FALSE);
+ proto_tree_add_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, curr_offset<<3, 4, FALSE);
- disc = oct & 0x0f;
- proto_tree_add_item(tree, hf_gsm_a_bssmap_be_cell_id_disc, tvb, curr_offset, 1, FALSE);
- curr_offset++;
+ disc = oct & 0x0f;
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_be_cell_id_disc, tvb, curr_offset, 1, FALSE);
+ curr_offset++;
- NO_MORE_DATA_CHECK(len);
+ NO_MORE_DATA_CHECK(len);
- num_cells = 0;
- do
- {
- item =
- proto_tree_add_text(tree,
- tvb, curr_offset, -1,
- "Cell %u",
- num_cells + 1);
+ num_cells = 0;
+ do
+ {
+ item =
+ proto_tree_add_text(tree,
+ tvb, curr_offset, -1,
+ "Cell %u",
+ num_cells + 1);
- subtree = proto_item_add_subtree(item, ett_cell_list);
+ subtree = proto_item_add_subtree(item, ett_cell_list);
- if (add_string)
- add_string[0] = '\0';
+ if (add_string)
+ add_string[0] = '\0';
- consumed =
- be_cell_id_aux(tvb, subtree, curr_offset, len - (curr_offset - offset), add_string, string_len, disc);
+ consumed =
+ be_cell_id_aux(tvb, subtree, curr_offset, len - (curr_offset - offset), add_string, string_len, disc);
- if (add_string && add_string[0] != '\0')
- {
- proto_item_append_text(item, "%s", add_string ? add_string : "");
- }
+ if (add_string && add_string[0] != '\0')
+ {
+ proto_item_append_text(item, "%s", add_string ? add_string : "");
+ }
- proto_item_set_len(item, consumed);
+ proto_item_set_len(item, consumed);
- curr_offset += consumed;
+ curr_offset += consumed;
- num_cells++;
- }
- while ((len - (curr_offset - offset)) > 0 && consumed > 0);
+ num_cells++;
+ }
+ while ((len - (curr_offset - offset)) > 0 && consumed > 0);
- if (add_string) {
- g_snprintf(add_string, string_len, " - %u cell%s",
- num_cells, plurality(num_cells, "", "s"));
- }
+ if (add_string) {
+ g_snprintf(add_string, string_len, " - %u cell%s",
+ num_cells, plurality(num_cells, "", "s"));
+ }
- EXTRANEOUS_DATA_CHECK(len, curr_offset - offset);
+ EXTRANEOUS_DATA_CHECK(len, curr_offset - offset);
- return(curr_offset - offset);
+ return(curr_offset - offset);
}
/*
- * 3.2.2.27a Cell Identifier List Segment
+ * 3.2.2.27a Cell Identifier List Segment
*/
static const value_string gsm_a_bssap_cell_id_list_seg_cell_id_disc_vals[] = {
- { 0x0, "The whole Cell Global Identification, CGI, is used to identify the cells"},
- { 0x1, "Location Area Code, LAC, and Cell Identify, CI, is used to identify the cells within a given MCC and MNC"},
- { 0x2, "Cell Identity, CI, is used to identify the cells within a given MCC and MNC and LAC"},
- { 0x3, "No cell is associated with the transaction"},
- { 0x4, "Location Area Identification, LAI, is used to identify all cells within a Location Area"},
- { 0x5, "Location Area Code, LAC, is used to identify all cells within a location area"},
- { 0x6, "All cells on the BSS are identified"},
- { 0x7, "MCC and MNC, is used to identify all cells within the given MCC and MNC"},
- { 0, NULL }
+ { 0x0, "The whole Cell Global Identification, CGI, is used to identify the cells"},
+ { 0x1, "Location Area Code, LAC, and Cell Identify, CI, is used to identify the cells within a given MCC and MNC"},
+ { 0x2, "Cell Identity, CI, is used to identify the cells within a given MCC and MNC and LAC"},
+ { 0x3, "No cell is associated with the transaction"},
+ { 0x4, "Location Area Identification, LAI, is used to identify all cells within a Location Area"},
+ { 0x5, "Location Area Code, LAC, is used to identify all cells within a location area"},
+ { 0x6, "All cells on the BSS are identified"},
+ { 0x7, "MCC and MNC, is used to identify all cells within the given MCC and MNC"},
+ { 0, NULL }
};
static guint16
be_cell_id_list_seg(tvbuff_t *tvb, proto_tree *tree, 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;
- /* Sequence Length */
- proto_tree_add_item(tree, hf_gsm_a_bssmap_seq_len, tvb, curr_offset, 1, FALSE);
- /* Sequence Number */
- proto_tree_add_item(tree, hf_gsm_a_bssmap_seq_no, tvb, curr_offset, 1, FALSE);
- curr_offset++;
+ /* Sequence Length */
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_seq_len, tvb, curr_offset, 1, FALSE);
+ /* Sequence Number */
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_seq_no, tvb, curr_offset, 1, FALSE);
+ curr_offset++;
- proto_tree_add_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, curr_offset<<3, 4, FALSE);
- /* Cell identification discriminator */
- proto_tree_add_item(tree, hf_gsm_a_bssap_cell_id_list_seg_cell_id_disc, tvb, curr_offset, 1, FALSE);
- curr_offset++;
- proto_tree_add_text(tree, tvb, curr_offset, len-2, "Not decoded yet");
+ proto_tree_add_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, curr_offset<<3, 4, FALSE);
+ /* Cell identification discriminator */
+ proto_tree_add_item(tree, hf_gsm_a_bssap_cell_id_list_seg_cell_id_disc, tvb, curr_offset, 1, FALSE);
+ curr_offset++;
+ proto_tree_add_text(tree, tvb, curr_offset, len-2, "Not decoded yet");
- return(len);
+ return(len);
}
/*
- * 3.2.2.27b Cell Identifier List Segment for established cells
+ * 3.2.2.27b Cell Identifier List Segment for established cells
*/
static guint16
be_cell_id_lst_seg_f_est_cells(tvbuff_t *tvb, proto_tree *tree, 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_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, curr_offset<<3, 4, FALSE);
- /* Cell identification discriminator */
- proto_tree_add_item(tree, hf_gsm_a_bssap_cell_id_list_seg_cell_id_disc, tvb, curr_offset, 1, FALSE);
- curr_offset++;
+ proto_tree_add_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, curr_offset<<3, 4, FALSE);
+ /* Cell identification discriminator */
+ proto_tree_add_item(tree, hf_gsm_a_bssap_cell_id_list_seg_cell_id_disc, tvb, curr_offset, 1, FALSE);
+ curr_offset++;
- proto_tree_add_text(tree, tvb, curr_offset, len-1, "Not decoded yet");
+ proto_tree_add_text(tree, tvb, curr_offset, len-1, "Not decoded yet");
- return(len);
+ return(len);
}
/*
- * 3.2.2.27c Cell Identifier List Segment for cells to be established
+ * 3.2.2.27c Cell Identifier List Segment for cells to be established
*/
static guint16
be_cell_id_lst_seg_f_cell_tb_est(tvbuff_t *tvb, proto_tree *tree, 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_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, curr_offset<<3, 4, FALSE);
- /* Cell identification discriminator */
- proto_tree_add_item(tree, hf_gsm_a_bssap_cell_id_list_seg_cell_id_disc, tvb, curr_offset, 1, FALSE);
- curr_offset++;
+ proto_tree_add_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, curr_offset<<3, 4, FALSE);
+ /* Cell identification discriminator */
+ proto_tree_add_item(tree, hf_gsm_a_bssap_cell_id_list_seg_cell_id_disc, tvb, curr_offset, 1, FALSE);
+ curr_offset++;
- proto_tree_add_text(tree, tvb, curr_offset, len-1, "Not decoded yet");
+ proto_tree_add_text(tree, tvb, curr_offset, len-1, "Not decoded yet");
- return(len);
+ return(len);
}
/*
- * 3.2.2.27d (void)
+ * 3.2.2.27d (void)
*/
/*
- * 3.2.2.27e Cell Identifier List Segment for released cells - no user present
+ * 3.2.2.27e Cell Identifier List Segment for released cells - no user present
*/
-static guint16
+static guint16
be_cell_id_lst_seg_f_rel_cell(tvbuff_t *tvb, proto_tree *tree, 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_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, curr_offset<<3, 4, FALSE);
- /* Cell identification discriminator */
- proto_tree_add_item(tree, hf_gsm_a_bssap_cell_id_list_seg_cell_id_disc, tvb, curr_offset, 1, FALSE);
- curr_offset++;
+ proto_tree_add_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, curr_offset<<3, 4, FALSE);
+ /* Cell identification discriminator */
+ proto_tree_add_item(tree, hf_gsm_a_bssap_cell_id_list_seg_cell_id_disc, tvb, curr_offset, 1, FALSE);
+ curr_offset++;
- proto_tree_add_text(tree, tvb, curr_offset, len-1, "Not decoded yet");
+ proto_tree_add_text(tree, tvb, curr_offset, len-1, "Not decoded yet");
- return(len);
+ return(len);
}
/*
- * 3.2.2.27f Cell Identifier List Segment for not established cells - no establishment possible
+ * 3.2.2.27f Cell Identifier List Segment for not established cells - no establishment possible
*/
static guint16
be_cell_id_lst_seg_f_not_est_cell(tvbuff_t *tvb, proto_tree *tree, 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_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, curr_offset<<3, 4, FALSE);
- /* Cell identification discriminator */
- proto_tree_add_item(tree, hf_gsm_a_bssap_cell_id_list_seg_cell_id_disc, tvb, curr_offset, 1, FALSE);
- curr_offset++;
+ proto_tree_add_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, curr_offset<<3, 4, FALSE);
+ /* Cell identification discriminator */
+ proto_tree_add_item(tree, hf_gsm_a_bssap_cell_id_list_seg_cell_id_disc, tvb, curr_offset, 1, FALSE);
+ curr_offset++;
- proto_tree_add_text(tree, tvb, curr_offset, len-1, "Not decoded yet");
+ proto_tree_add_text(tree, tvb, curr_offset, len-1, "Not decoded yet");
- return(len);
+ return(len);
}
/*
* 3.2.2.28 Response Request
* No data
*/
/*
- * 3.2.2.29 Resource Indication Method
+ * 3.2.2.29 Resource Indication Method
*/
static const value_string gsm_a_bssap_resource_indication_vals[] = {
- { 0x0, "Spontaneous resource information expected"},
- { 0x1, "One single resource information expected"},
- { 0x2, "Periodic resource information expected"},
- { 0x3, "No cell is associated with the transaction"},
- { 0x4, "No resource information expected"},
- { 0, NULL }
+ { 0x0, "Spontaneous resource information expected"},
+ { 0x1, "One single resource information expected"},
+ { 0x2, "Periodic resource information expected"},
+ { 0x3, "No cell is associated with the transaction"},
+ { 0x4, "No resource information expected"},
+ { 0, NULL }
};
static guint16
be_res_ind_method(tvbuff_t *tvb, proto_tree *tree, 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_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, curr_offset<<3, 4, FALSE);
- proto_tree_add_item(tree, hf_gsm_a_bssap_res_ind_method, tvb, curr_offset, 1, FALSE);
- curr_offset++;
+ proto_tree_add_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, curr_offset<<3, 4, FALSE);
+ proto_tree_add_item(tree, hf_gsm_a_bssap_res_ind_method, tvb, curr_offset, 1, FALSE);
+ curr_offset++;
- return(len);
+ return(len);
}
/*
@@ -2160,14 +2160,14 @@ be_res_ind_method(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_
static guint16
be_cic_list(tvbuff_t *tvb, proto_tree *tree, 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, "Not decoded yet");
+ proto_tree_add_text(tree, tvb, curr_offset, len, "Not decoded yet");
- return(len);
+ return(len);
}
/*
* 3.2.2.32 Diagnostics
@@ -2175,97 +2175,97 @@ be_cic_list(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gcha
static guint16
be_diag(tvbuff_t *tvb, proto_tree *tree, 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, "Not decoded yet");
+ proto_tree_add_text(tree, tvb, curr_offset, len, "Not decoded yet");
- return(len);
+ return(len);
}
/*
* [2] 3.2.2.33 Chosen Channel
*/
static const value_string gsm_a_bssmap_ch_mode_vals[] = {
- { 0, "no channel mode indication" },
- { 9, "speech (full rate or half rate)" },
- { 14, "data, 14.5 kbit/s radio interface rate" },
- { 11, "data, 12.0 kbit/s radio interface rate" },
- { 12, "data, 6.0 kbit/s radio interface rate" },
- { 13, "data, 3.6 kbit/s radio interface rate" },
- { 8, "signalling only" },
- { 1, "data, 29.0 kbit/s radio interface rate" },
- { 2, "data, 32.0 kbit/s radio interface rate" },
- { 3, "data, 43.5 kbit/s radio interface rate" },
- { 4, "data, 43.5 kbit/s downlink and 14.5 kbit/s uplink" },
- { 5, "data, 29.0 kbit/s downlink and 14.5 kbit/s uplink" },
- { 6, "data, 43.5 kbit/s downlink and 29.0 kbit/s uplink" },
- { 7, "data, 14.5 kbit/s downlink and 43.5 kbit/s uplink" },
- { 10, "data, 14.5 kbit/s downlink and 29.0 kbit/s uplink" },
- { 15, "data, 29.0 kbit/s downlink and 43.5 kbit/s uplink" },
- { 0, NULL },
+ { 0, "no channel mode indication" },
+ { 9, "speech (full rate or half rate)" },
+ { 14, "data, 14.5 kbit/s radio interface rate" },
+ { 11, "data, 12.0 kbit/s radio interface rate" },
+ { 12, "data, 6.0 kbit/s radio interface rate" },
+ { 13, "data, 3.6 kbit/s radio interface rate" },
+ { 8, "signalling only" },
+ { 1, "data, 29.0 kbit/s radio interface rate" },
+ { 2, "data, 32.0 kbit/s radio interface rate" },
+ { 3, "data, 43.5 kbit/s radio interface rate" },
+ { 4, "data, 43.5 kbit/s downlink and 14.5 kbit/s uplink" },
+ { 5, "data, 29.0 kbit/s downlink and 14.5 kbit/s uplink" },
+ { 6, "data, 43.5 kbit/s downlink and 29.0 kbit/s uplink" },
+ { 7, "data, 14.5 kbit/s downlink and 43.5 kbit/s uplink" },
+ { 10, "data, 14.5 kbit/s downlink and 29.0 kbit/s uplink" },
+ { 15, "data, 29.0 kbit/s downlink and 43.5 kbit/s uplink" },
+ { 0, NULL },
};
static const value_string gsm_a_bssmap_channel_vals[] = {
- { 0, "None(Current Channel Type 1 - Reserved)" },
- { 1, "SDCCH" },
- { 2, "Reserved" },
- { 3, "Reserved" },
- { 5, "Reserved" },
- { 6, "Reserved" },
- { 7, "Reserved" },
- { 8, "1 Full rate TCH" },
- { 9, "1 Half rate TCH" },
- { 10, "2 Full Rate TCHs" },
- { 11, "3 Full Rate TCHs" },
- { 12, "4 Full Rate TCHs" },
- { 13, "5 Full Rate TCHs" },
- { 14, "6 Full Rate TCHs" },
- { 15, "7 Full Rate TCHs" },
- { 4, "8 Full Rate TCHs" },
- { 0, NULL },
+ { 0, "None(Current Channel Type 1 - Reserved)" },
+ { 1, "SDCCH" },
+ { 2, "Reserved" },
+ { 3, "Reserved" },
+ { 5, "Reserved" },
+ { 6, "Reserved" },
+ { 7, "Reserved" },
+ { 8, "1 Full rate TCH" },
+ { 9, "1 Half rate TCH" },
+ { 10, "2 Full Rate TCHs" },
+ { 11, "3 Full Rate TCHs" },
+ { 12, "4 Full Rate TCHs" },
+ { 13, "5 Full Rate TCHs" },
+ { 14, "6 Full Rate TCHs" },
+ { 15, "7 Full Rate TCHs" },
+ { 4, "8 Full Rate TCHs" },
+ { 0, NULL },
};
static const value_string gsm_a_bssmap_trace_bss_record_type_vals[] = {
- { 0, "Basic" },
- { 1, "Handover" },
- { 2, "Radio" },
- { 3, "No BSS Trace" },
- { 0, NULL },
+ { 0, "Basic" },
+ { 1, "Handover" },
+ { 2, "Radio" },
+ { 3, "No BSS Trace" },
+ { 0, NULL },
};
static const value_string gsm_a_bssmap_trace_msc_record_type_vals[] = {
- { 0, "Basic" },
- { 1, "Detailed (optional)" },
- { 2, "Spare" },
- { 3, "No MSC Trace" },
- { 0, NULL },
+ { 0, "Basic" },
+ { 1, "Detailed (optional)" },
+ { 2, "Spare" },
+ { 3, "No MSC Trace" },
+ { 0, NULL },
};
static const value_string gsm_a_bssmap_trace_invoking_event_vals[] = {
- { 0, "MOC, MTC, SMS MO, SMS MT, PDS MO, PDS MT, SS, Location Updates, IMSI attach, IMSI detach" },
- { 1, "MOC, MTC, SMS_MO, SMS_MT, PDS MO, PDS MT, SS only" },
- { 2, "Location updates, IMSI attach IMSI detach only" },
- { 3, "Operator definable" },
- { 0, NULL },
+ { 0, "MOC, MTC, SMS MO, SMS MT, PDS MO, PDS MT, SS, Location Updates, IMSI attach, IMSI detach" },
+ { 1, "MOC, MTC, SMS_MO, SMS_MT, PDS MO, PDS MT, SS only" },
+ { 2, "Location updates, IMSI attach IMSI detach only" },
+ { 3, "Operator definable" },
+ { 0, NULL },
};
static guint16
be_chosen_chan(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint8 oct;
- guint32 curr_offset;
+ guint8 oct;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- oct = tvb_get_guint8(tvb, curr_offset);
+ oct = tvb_get_guint8(tvb, curr_offset);
- /* Channel mode */
- proto_tree_add_item(tree, hf_gsm_a_bssmap_ch_mode, tvb, curr_offset, 1, FALSE);
+ /* Channel mode */
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_ch_mode, tvb, curr_offset, 1, FALSE);
- proto_tree_add_item(tree, hf_gsm_a_bssmap_channel, tvb, curr_offset, 1, FALSE);
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_channel, tvb, curr_offset, 1, FALSE);
- curr_offset++;
+ curr_offset++;
- /* no length check possible */
+ /* no length check possible */
- return(curr_offset - offset);
+ return(curr_offset - offset);
}
/*
@@ -2274,27 +2274,27 @@ be_chosen_chan(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, g
static guint16
be_ciph_resp_mode(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint8 oct;
- guint32 curr_offset;
+ guint8 oct;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- oct = tvb_get_guint8(tvb, curr_offset);
+ oct = tvb_get_guint8(tvb, curr_offset);
- proto_tree_add_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, curr_offset<<3, 7, FALSE);
+ proto_tree_add_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, curr_offset<<3, 7, FALSE);
- other_decode_bitfield_value(a_bigbuf, oct, 0x01, 8);
- proto_tree_add_text(tree,
- tvb, curr_offset, 1,
- "%s = IMEISV must %sbe included by the mobile station",
- a_bigbuf,
- (oct & 0x01) ? "" : "not ");
+ other_decode_bitfield_value(a_bigbuf, oct, 0x01, 8);
+ proto_tree_add_text(tree,
+ tvb, curr_offset, 1,
+ "%s = IMEISV must %sbe included by the mobile station",
+ a_bigbuf,
+ (oct & 0x01) ? "" : "not ");
- curr_offset++;
+ curr_offset++;
- /* no length check possible */
+ /* no length check possible */
- return(curr_offset - offset);
+ return(curr_offset - offset);
}
@@ -2304,25 +2304,25 @@ be_ciph_resp_mode(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_
static guint16
be_l3_msg(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
- tvbuff_t *l3_tvb;
+ guint32 curr_offset;
+ tvbuff_t *l3_tvb;
- curr_offset = offset;
+ curr_offset = offset;
- proto_tree_add_text(tree, tvb, curr_offset, len,
- "Layer 3 Message Contents");
+ proto_tree_add_text(tree, tvb, curr_offset, len,
+ "Layer 3 Message Contents");
- /*
- * dissect the embedded DTAP message
- */
- l3_tvb = tvb_new_subset(tvb, curr_offset, len, len);
+ /*
+ * dissect the embedded DTAP message
+ */
+ l3_tvb = tvb_new_subset(tvb, curr_offset, len, len);
- /* Octet j (j = 3, 4, ..., n) is the unchanged octet j of a radio interface layer 3 message
- * as defined in 3GPP TS 24.008, n is equal to the length of that radio interface layer 3 message. */
- call_dissector(dtap_handle, l3_tvb, g_pinfo, g_tree);
- curr_offset += len;
+ /* Octet j (j = 3, 4, ..., n) is the unchanged octet j of a radio interface layer 3 message
+ * as defined in 3GPP TS 24.008, n is equal to the length of that radio interface layer 3 message. */
+ call_dissector(dtap_handle, l3_tvb, g_pinfo, g_tree);
+ curr_offset += len;
- return(len);
+ return(len);
}
/*
@@ -2331,16 +2331,16 @@ be_l3_msg(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add
static guint16
be_cha_needed(tvbuff_t *tvb, proto_tree *tree, 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;
- /* no length check possible */
- proto_tree_add_bits_item(tree, hf_gsm_a_rr_chnl_needed_ch1, tvb, (curr_offset<<3)+6, 2, FALSE);
+ /* no length check possible */
+ proto_tree_add_bits_item(tree, hf_gsm_a_rr_chnl_needed_ch1, tvb, (curr_offset<<3)+6, 2, FALSE);
- curr_offset++;
+ curr_offset++;
- return(curr_offset - offset);
+ return(curr_offset - offset);
}
/*
* 3.2.2.37 Trace Type
@@ -2349,11 +2349,11 @@ be_cha_needed(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gc
static guint16
be_trace_type(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
gint bit_offset;
bit_offset = (offset<<3);
- curr_offset = offset;
+ curr_offset = offset;
proto_tree_add_bits_item(tree, hf_gsm_a_bssmap_trace_priority_indication, tvb, bit_offset, 1, FALSE);
bit_offset ++;
@@ -2367,9 +2367,9 @@ be_trace_type(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gc
bit_offset += 2;
curr_offset++;
- /* no length check possible */
+ /* no length check possible */
- return(curr_offset - offset);
+ return(curr_offset - offset);
}
/*
@@ -2378,57 +2378,57 @@ be_trace_type(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gc
static guint16
be_trace_trigger_id(tvbuff_t *tvb, proto_tree *tree, 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_gsm_a_bssmap_trace_trigger_id, tvb, curr_offset, len, FALSE);
- curr_offset += len;
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_trace_trigger_id, tvb, curr_offset, len, FALSE);
+ curr_offset += len;
- /* no length check possible */
+ /* no length check possible */
- return(curr_offset - offset);
+ return(curr_offset - offset);
}
/* 3.2.2.39 Trace Reference */
static guint16
be_trace_reference(tvbuff_t *tvb, proto_tree *tree, 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_gsm_a_bssmap_trace_reference, tvb, curr_offset, 2, FALSE);
- curr_offset +=2;
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_trace_reference, tvb, curr_offset, 2, FALSE);
+ curr_offset +=2;
- /* no length check possible */
+ /* no length check possible */
- return(curr_offset - offset);
+ return(curr_offset - offset);
}
/* 3.2.2.40 TransactionID */
static guint16
be_trace_transaction_id(tvbuff_t *tvb, proto_tree *tree, 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;
- if (len == 1)
+ if (len == 1)
{
proto_tree_add_item(tree, hf_gsm_a_bssmap_trace_reference, tvb, curr_offset, 1, FALSE);
curr_offset ++;
}
- else
+ else
{
proto_tree_add_item(tree, hf_gsm_a_bssmap_trace_reference, tvb, curr_offset, 2, FALSE);
curr_offset +=2;
}
- EXTRANEOUS_DATA_CHECK(len, curr_offset - offset);
+ EXTRANEOUS_DATA_CHECK(len, curr_offset - offset);
- return(curr_offset - offset);
+ return(curr_offset - offset);
}
/*
* 3.2.2.41 Mobile Identity (IMSI, IMEISV or IMEI as coded in 3GPP TS 24.008)
@@ -2441,16 +2441,16 @@ be_trace_transaction_id(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint l
static guint16
be_trace_omc_id(tvbuff_t *tvb, proto_tree *tree, 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_gsm_a_bssmap_trace_omc_id, tvb, curr_offset, len, FALSE);
- curr_offset += len;
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_trace_omc_id, tvb, curr_offset, len, FALSE);
+ curr_offset += len;
- /* no length check possible */
+ /* no length check possible */
- return(curr_offset - offset);
+ return(curr_offset - offset);
}
/*
* [2] 3.2.2.43 Forward Indicator
@@ -2458,37 +2458,37 @@ be_trace_omc_id(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_,
static guint16
be_for_ind(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint8 oct;
- guint32 curr_offset;
- const gchar *str = NULL;
+ guint8 oct;
+ guint32 curr_offset;
+ const gchar *str = NULL;
- curr_offset = offset;
+ curr_offset = offset;
- oct = tvb_get_guint8(tvb, curr_offset);
+ oct = tvb_get_guint8(tvb, curr_offset);
- proto_tree_add_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, curr_offset<<3, 4, FALSE);
+ proto_tree_add_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, curr_offset<<3, 4, FALSE);
- switch (oct & 0x0f)
- {
- case 1: str = "forward to subsequent BSS, no trace at MSC"; break;
- case 2: str = "forward to subsequent BSS, and trace at MSC"; break;
- default:
- str = "Reserved";
- break;
- }
+ switch (oct & 0x0f)
+ {
+ case 1: str = "forward to subsequent BSS, no trace at MSC"; break;
+ case 2: str = "forward to subsequent BSS, and trace at MSC"; break;
+ default:
+ str = "Reserved";
+ break;
+ }
- other_decode_bitfield_value(a_bigbuf, oct, 0x0f, 8);
- proto_tree_add_text(tree,
- tvb, curr_offset, 1,
- "%s = %s",
- a_bigbuf,
- str);
+ other_decode_bitfield_value(a_bigbuf, oct, 0x0f, 8);
+ proto_tree_add_text(tree,
+ tvb, curr_offset, 1,
+ "%s = %s",
+ a_bigbuf,
+ str);
- curr_offset++;
+ curr_offset++;
- /* no length check possible */
+ /* no length check possible */
- return(curr_offset - offset);
+ return(curr_offset - offset);
}
/*
@@ -2497,42 +2497,42 @@ be_for_ind(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar
static guint16
be_chosen_enc_alg(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string, int string_len)
{
- guint8 oct;
- guint32 curr_offset;
- const gchar *str = NULL;
+ guint8 oct;
+ guint32 curr_offset;
+ const gchar *str = NULL;
- curr_offset = offset;
+ curr_offset = offset;
- oct = tvb_get_guint8(tvb, curr_offset);
+ oct = tvb_get_guint8(tvb, curr_offset);
- switch (oct)
- {
- case 0x01: str = "No encryption used"; break;
- case 0x02: str = "GSM A5/1"; break;
- case 0x03: str = "GSM A5/2"; break;
- case 0x04: str = "GSM A5/3"; break;
- case 0x05: str = "GSM A5/4"; break;
- case 0x06: str = "GSM A5/5"; break;
- case 0x07: str = "GSM A5/6"; break;
- case 0x08: str = "GSM A5/7"; break;
- default:
- str = "Reserved";
- break;
- }
+ switch (oct)
+ {
+ case 0x01: str = "No encryption used"; break;
+ case 0x02: str = "GSM A5/1"; break;
+ case 0x03: str = "GSM A5/2"; break;
+ case 0x04: str = "GSM A5/3"; break;
+ case 0x05: str = "GSM A5/4"; break;
+ case 0x06: str = "GSM A5/5"; break;
+ case 0x07: str = "GSM A5/6"; break;
+ case 0x08: str = "GSM A5/7"; break;
+ default:
+ str = "Reserved";
+ break;
+ }
- proto_tree_add_text(tree,
- tvb, curr_offset, 1,
- "Algorithm Identifier: %s",
- str);
+ proto_tree_add_text(tree,
+ tvb, curr_offset, 1,
+ "Algorithm Identifier: %s",
+ str);
- curr_offset++;
+ curr_offset++;
- if (add_string)
- g_snprintf(add_string, string_len, " - %s", str);
+ if (add_string)
+ g_snprintf(add_string, string_len, " - %s", str);
- /* no length check possible */
+ /* no length check possible */
- return(curr_offset - offset);
+ return(curr_offset - offset);
}
/*
@@ -2541,41 +2541,41 @@ be_chosen_enc_alg(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_
static guint16
be_cct_pool(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string, int string_len)
{
- guint8 oct;
- guint32 curr_offset;
- const gchar *str = NULL;
+ guint8 oct;
+ guint32 curr_offset;
+ const gchar *str = NULL;
- curr_offset = offset;
+ curr_offset = offset;
- oct = tvb_get_guint8(tvb, curr_offset);
+ oct = tvb_get_guint8(tvb, curr_offset);
- if (oct <= 50)
- {
- str = "";
- }
- else if ((oct >= 0x80) && (oct <= 0x8f))
- {
- str = ", for national/local use";
- }
- else
- {
- str = ", reserved for future international use";
- }
+ if (oct <= 50)
+ {
+ str = "";
+ }
+ else if ((oct >= 0x80) && (oct <= 0x8f))
+ {
+ str = ", for national/local use";
+ }
+ else
+ {
+ str = ", reserved for future international use";
+ }
- proto_tree_add_text(tree,
- tvb, curr_offset, 1,
- "Circuit pool number: %u%s",
- oct,
- str);
+ proto_tree_add_text(tree,
+ tvb, curr_offset, 1,
+ "Circuit pool number: %u%s",
+ oct,
+ str);
- curr_offset++;
+ curr_offset++;
- if (add_string)
- g_snprintf(add_string, string_len, " - (%u)", oct);
+ if (add_string)
+ g_snprintf(add_string, string_len, " - (%u)", oct);
- /* no length check possible */
+ /* no length check possible */
- return(curr_offset - offset);
+ return(curr_offset - offset);
}
/*
* 3.2.2.46 Circuit Pool List
@@ -2588,23 +2588,23 @@ be_cct_pool(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gcha
static guint16
be_curr_chan_1(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint8 oct;
- guint32 curr_offset;
-
- curr_offset = offset;
+ guint8 oct;
+ guint32 curr_offset;
- oct = tvb_get_guint8(tvb, curr_offset);
+ curr_offset = offset;
- /* Channel mode */
- proto_tree_add_item(tree, hf_gsm_a_bssmap_cur_ch_mode, tvb, curr_offset, 1, FALSE);
- /* Channel */
- proto_tree_add_item(tree, hf_gsm_a_bssmap_channel, tvb, curr_offset, 1, FALSE);
+ oct = tvb_get_guint8(tvb, curr_offset);
- curr_offset++;
+ /* Channel mode */
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_cur_ch_mode, tvb, curr_offset, 1, FALSE);
+ /* Channel */
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_channel, tvb, curr_offset, 1, FALSE);
- /* no length check possible */
+ curr_offset++;
+
+ /* no length check possible */
- return(curr_offset - offset);
+ return(curr_offset - offset);
}
/*
@@ -2613,29 +2613,29 @@ be_curr_chan_1(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, g
static guint16
be_que_ind(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint8 oct;
- guint32 curr_offset;
+ guint8 oct;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- oct = tvb_get_guint8(tvb, curr_offset);
+ oct = tvb_get_guint8(tvb, curr_offset);
- proto_tree_add_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, curr_offset<<3, 6, FALSE);
+ proto_tree_add_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, curr_offset<<3, 6, FALSE);
- other_decode_bitfield_value(a_bigbuf, oct, 0x02, 8);
- proto_tree_add_text(tree,
- tvb, curr_offset, 1,
- "%s = qri: it is recommended %sto allow queuing",
- a_bigbuf,
- (oct & 0x02) ? "" : "not ");
+ other_decode_bitfield_value(a_bigbuf, oct, 0x02, 8);
+ proto_tree_add_text(tree,
+ tvb, curr_offset, 1,
+ "%s = qri: it is recommended %sto allow queuing",
+ a_bigbuf,
+ (oct & 0x02) ? "" : "not ");
- proto_tree_add_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, (curr_offset<<3)+7, 1, FALSE);
+ proto_tree_add_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, (curr_offset<<3)+7, 1, FALSE);
- curr_offset++;
+ curr_offset++;
- /* no length check possible */
+ /* no length check possible */
- return(curr_offset - offset);
+ return(curr_offset - offset);
}
/*
@@ -2644,58 +2644,58 @@ be_que_ind(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar
static guint16
be_speech_ver(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string, int string_len)
{
- guint8 oct;
- guint32 curr_offset;
- const gchar *str = NULL;
- const gchar *short_str = NULL;
+ guint8 oct;
+ guint32 curr_offset;
+ const gchar *str = NULL;
+ const gchar *short_str = NULL;
- curr_offset = offset;
+ curr_offset = offset;
- oct = tvb_get_guint8(tvb, curr_offset);
+ oct = tvb_get_guint8(tvb, curr_offset);
- proto_tree_add_item(tree, hf_gsm_a_b8spare, tvb, curr_offset, 1, FALSE);
+ proto_tree_add_item(tree, hf_gsm_a_b8spare, tvb, curr_offset, 1, FALSE);
- /* The bits 7-1 of octet 2 are coded in the same way as the permitted speech version identifier
- * in the Channel type information element.
- */
+ /* The bits 7-1 of octet 2 are coded in the same way as the permitted speech version identifier
+ * in the Channel type information element.
+ */
- switch (oct & 0x7f)
- {
- case 0x01: str = "GSM speech full rate version 1"; short_str = "FR1"; break;
- case 0x11: str = "GSM speech full rate version 2"; short_str = "FR2"; break;
- case 0x21: str = "GSM speech full rate version 3 (AMR)"; short_str = "FR3 (AMR)"; break;
+ switch (oct & 0x7f)
+ {
+ case 0x01: str = "GSM speech full rate version 1"; short_str = "FR1"; break;
+ case 0x11: str = "GSM speech full rate version 2"; short_str = "FR2"; break;
+ case 0x21: str = "GSM speech full rate version 3 (AMR)"; short_str = "FR3 (AMR)"; break;
- case 0x05: str = "GSM speech half rate version 1"; short_str = "HR1"; break;
- case 0x15: str = "GSM speech half rate version 2"; short_str = "HR2"; break;
- case 0x25: str = "GSM speech half rate version 3 (AMR)"; short_str = "HR3 (AMR)"; break;
+ case 0x05: str = "GSM speech half rate version 1"; short_str = "HR1"; break;
+ case 0x15: str = "GSM speech half rate version 2"; short_str = "HR2"; break;
+ case 0x25: str = "GSM speech half rate version 3 (AMR)"; short_str = "HR3 (AMR)"; break;
- case 0x41: str = "GSM speech full rate version 4";short_str = "OFR AMR-WB"; break;
- case 0x42: str = "GSM speech full rate version 5";short_str = "FR AMR-WB"; break;
- case 0x46: str = "GSM speech half rate version 4";short_str = "OHR AMR-WB"; break;
- case 0x45: str = "GSM speech half rate version 6";short_str = "OHR AMR"; break;
+ case 0x41: str = "GSM speech full rate version 4";short_str = "OFR AMR-WB"; break;
+ case 0x42: str = "GSM speech full rate version 5";short_str = "FR AMR-WB"; break;
+ case 0x46: str = "GSM speech half rate version 4";short_str = "OHR AMR-WB"; break;
+ case 0x45: str = "GSM speech half rate version 6";short_str = "OHR AMR"; break;
- default:
- str = "Reserved";
- short_str = str;
- break;
- }
+ default:
+ str = "Reserved";
+ short_str = str;
+ break;
+ }
- other_decode_bitfield_value(a_bigbuf, oct, 0x7f, 8);
- proto_tree_add_text(tree,
- tvb, curr_offset, 1,
- "%s = Speech version identifier: %s",
- a_bigbuf,
- str);
+ other_decode_bitfield_value(a_bigbuf, oct, 0x7f, 8);
+ proto_tree_add_text(tree,
+ tvb, curr_offset, 1,
+ "%s = Speech version identifier: %s",
+ a_bigbuf,
+ str);
- curr_offset++;
+ curr_offset++;
- if (add_string)
- g_snprintf(add_string, string_len, " - (%s)", short_str);
+ if (add_string)
+ g_snprintf(add_string, string_len, " - (%s)", short_str);
- /* no length check possible */
+ /* no length check possible */
- return(curr_offset - offset);
+ return(curr_offset - offset);
}
/*
* 3.2.2.52 Assignment Requirement
@@ -2703,24 +2703,24 @@ be_speech_ver(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gc
static guint16
be_ass_req(tvbuff_t *tvb, proto_tree *tree, 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, "Not decoded yet");
+ proto_tree_add_text(tree, tvb, curr_offset, len, "Not decoded yet");
- return(len);
+ return(len);
}
/*
* 3.2.2.53 (void)
*/
/*
- * 3.2.2.54 Talker Flag
+ * 3.2.2.54 Talker Flag
* No data
*/
/*
* 3.2.2.55 Group Call Reference
- * The octets 3-7 are coded in the same way as the octets 2-6 in the
+ * The octets 3-7 are coded in the same way as the octets 2-6 in the
* Descriptive group or broadcast call reference information element as defined in 3GPP TS 24.008.
* dissected in packet-gsm_a_common.c (de_d_gb_call_ref)
*/
@@ -2734,30 +2734,30 @@ be_ass_req(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar
* 3.2.2.57 Configuration Evolution Indication
*/
static const value_string gsm_a_bssmap_smi_vals[] = {
- { 0, "No Modification is allowed" },
- { 1, "Modification is allowed and maximum number of TCH/F is 1" },
- { 2, "Modification is allowed and maximum number of TCH/F is 2" },
- { 3, "Modification is allowed and maximum number of TCH/F is 3" },
- { 4, "Modification is allowed and maximum number of TCH/F is 4" },
- { 5, "Reserved" },
- { 6, "Reserved" },
- { 7, "Reserved" },
- { 0, NULL },
+ { 0, "No Modification is allowed" },
+ { 1, "Modification is allowed and maximum number of TCH/F is 1" },
+ { 2, "Modification is allowed and maximum number of TCH/F is 2" },
+ { 3, "Modification is allowed and maximum number of TCH/F is 3" },
+ { 4, "Modification is allowed and maximum number of TCH/F is 4" },
+ { 5, "Reserved" },
+ { 6, "Reserved" },
+ { 7, "Reserved" },
+ { 0, NULL },
};
static guint16
be_conf_evo_ind(tvbuff_t *tvb, proto_tree *tree, 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_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, curr_offset<<3, 4, FALSE);
- /* Subsequent Modification Indication */
- proto_tree_add_item(tree, hf_gsm_a_bssmap_smi, tvb, curr_offset, 1, FALSE);
- curr_offset++;
+ proto_tree_add_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, curr_offset<<3, 4, FALSE);
+ /* Subsequent Modification Indication */
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_smi, tvb, curr_offset, 1, FALSE);
+ curr_offset++;
- return(curr_offset - offset);
+ return(curr_offset - offset);
}
/*
* 3.2.2.58 Old BSS to New BSS information
@@ -2772,18 +2772,18 @@ bssmap_old_bss_to_new_bss_info(tvbuff_t *tvb, proto_tree *tree, packet_info *pin
return;
}
- g_pinfo = pinfo;
- g_tree = tree;
+ g_pinfo = pinfo;
+ g_tree = tree;
- len = tvb_length(tvb);
+ len = tvb_length(tvb);
be_field_element_dissect(tvb, tree, 0, len, NULL, 0);
- g_pinfo = NULL;
- g_tree = NULL;
+ g_pinfo = NULL;
+ g_tree = NULL;
}
/*
* 3.2.2.59 (void)
- * 3.2.2.60 LCS QoS
+ * 3.2.2.60 LCS QoS
* (The QoS octets 3 to n are coded in the same way as the equivalent octets
* in the LCS QoS element of 3GPP TS 49.031.)
*/
@@ -2792,7 +2792,7 @@ bssmap_old_bss_to_new_bss_info(tvbuff_t *tvb, proto_tree *tree, packet_info *pin
* 3.2.2.61 LSA Access Control Suppression
*/
/*
- * 3.2.2.62 LCS Priority
+ * 3.2.2.62 LCS Priority
* The Priority octets 3 to n are coded in the same way as the equivalent octets
* in the LCS Priority element of 3GPP TS 49.031.
*/
@@ -2806,15 +2806,15 @@ static const value_string lcs_priority_vals[] = {
static guint16
be_lcs_prio(tvbuff_t *tvb, proto_tree *tree, 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;
- /* This octet is coded as the LCS-Priority octet in 3GPP TS 29.002 */
- proto_tree_add_item(tree, hf_gsm_a_bssmap_lcs_pri, tvb, curr_offset, 1, FALSE);
- curr_offset++;
+ /* This octet is coded as the LCS-Priority octet in 3GPP TS 29.002 */
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_lcs_pri, tvb, curr_offset, 1, FALSE);
+ curr_offset++;
- return(curr_offset - offset);
+ return(curr_offset - offset);
}
/*
@@ -2823,10 +2823,10 @@ be_lcs_prio(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gcha
static guint16
be_loc_type(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
- guint8 location_information;
+ guint32 curr_offset;
+ guint8 location_information;
- curr_offset = offset;
+ curr_offset = offset;
/* Extract the location information and add to protocol tree */
location_information = tvb_get_guint8(tvb, offset);
@@ -2836,11 +2836,11 @@ be_loc_type(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gcha
if(location_information == 1 || location_information == 2)
{
/* protocol method */
- proto_tree_add_item(tree, hf_gsm_a_bssmap_location_type_positioning_method, tvb, curr_offset, 1, FALSE);
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_location_type_positioning_method, tvb, curr_offset, 1, FALSE);
curr_offset++;
}
- return(curr_offset - offset);
+ return(curr_offset - offset);
}
/*
@@ -2851,15 +2851,15 @@ be_loc_type(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gcha
static guint16
be_loc_est(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- tvbuff_t *data_tvb;
- guint32 curr_offset;
+ tvbuff_t *data_tvb;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- data_tvb = tvb_new_subset(tvb, curr_offset, len, len);
- dissect_geographical_description(data_tvb, g_pinfo, tree);
+ data_tvb = tvb_new_subset(tvb, curr_offset, len, len);
+ dissect_geographical_description(data_tvb, g_pinfo, tree);
- return(len);
+ return(len);
}
/*
* 3.2.2.65 Positioning Data
@@ -2868,12 +2868,12 @@ be_loc_est(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar
static guint16
be_pos_data(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
- guint8 i;
+ guint32 curr_offset;
+ guint8 i;
guint64 pos_data_disc;
gint bit_offset;
- curr_offset = offset;
+ curr_offset = offset;
/* Spare bits */
bit_offset = (offset<<3);
@@ -2900,7 +2900,7 @@ be_pos_data(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gcha
}
}
- return(curr_offset - offset);
+ return(curr_offset - offset);
}
/*
* 3.2.2.66 LCS Cause
@@ -2920,70 +2920,70 @@ be_pos_data(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gcha
/* BSSLAP the embedded message is as defined in 3GPP TS 48.071
* LLP the embedded message contains a Facility Information Element as defined in 3GPP TS 44.071
- * excluding the Facility IEI and length of Facility IEI octets defined in 3GPP TS 44.071.
+ * excluding the Facility IEI and length of Facility IEI octets defined in 3GPP TS 44.071.
* SMLCPP the embedded message is as defined in 3GPP TS 48.031
*/
static const value_string gsm_a_apdu_protocol_id_strings[] = {
- { 0, "reserved" },
- { 1, "BSSLAP" },
- { 2, "LLP" },
- { 3, "SMLCPP" },
- { 0, NULL },
+ { 0, "reserved" },
+ { 1, "BSSLAP" },
+ { 2, "LLP" },
+ { 3, "SMLCPP" },
+ { 0, NULL },
};
static guint16
be_apdu(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
- guint8 apdu_protocol_id;
- tvbuff_t *APDU_tvb;
-
- curr_offset = offset;
-
- proto_tree_add_text(tree, tvb, curr_offset, len, "APDU");
-
- /*
- * dissect the embedded APDU message
- * if someone writes a TS 09.31 dissector
- *
- * The APDU octets 4 to n are coded in the same way as the
- * equivalent octet in the APDU element of 3GPP TS 49.031 BSSAP-LE.
- */
-
- apdu_protocol_id = tvb_get_guint8(tvb,curr_offset);
- proto_tree_add_item(tree, hf_gsm_a_bssmap_apdu_protocol_id, tvb, curr_offset, 1, FALSE);
- curr_offset++;
- len--;
-
- switch(apdu_protocol_id){
- case 1:
- /* BSSLAP
- * the embedded message is as defined in 3GPP TS 08.71(3GPP TS 48.071 version 7.2.0 Release 7)
- */
- APDU_tvb = tvb_new_subset(tvb, curr_offset, len, len);
- if(gsm_bsslap_handle)
- call_dissector(gsm_bsslap_handle, APDU_tvb, g_pinfo, g_tree);
- break;
- case 2:
- /* LLP
- * The embedded message contains a Facility Information Element as defined in 3GPP TS 04.71
- * excluding the Facility IEI and length of Facility IEI octets defined in 3GPP TS 04.71.(3GPP TS 44.071).
- */
- break;
- case 3:
- /* SMLCPP
- * The embedded message is as defined in 3GPP TS 08.31(TS 48.031).
- */
- break;
- default:
- break;
- }
-
- curr_offset += len;
-
- EXTRANEOUS_DATA_CHECK(len, curr_offset - offset);
-
- return(curr_offset - offset);
+ guint32 curr_offset;
+ guint8 apdu_protocol_id;
+ tvbuff_t *APDU_tvb;
+
+ curr_offset = offset;
+
+ proto_tree_add_text(tree, tvb, curr_offset, len, "APDU");
+
+ /*
+ * dissect the embedded APDU message
+ * if someone writes a TS 09.31 dissector
+ *
+ * The APDU octets 4 to n are coded in the same way as the
+ * equivalent octet in the APDU element of 3GPP TS 49.031 BSSAP-LE.
+ */
+
+ apdu_protocol_id = tvb_get_guint8(tvb,curr_offset);
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_apdu_protocol_id, tvb, curr_offset, 1, FALSE);
+ curr_offset++;
+ len--;
+
+ switch(apdu_protocol_id){
+ case 1:
+ /* BSSLAP
+ * the embedded message is as defined in 3GPP TS 08.71(3GPP TS 48.071 version 7.2.0 Release 7)
+ */
+ APDU_tvb = tvb_new_subset(tvb, curr_offset, len, len);
+ if(gsm_bsslap_handle)
+ call_dissector(gsm_bsslap_handle, APDU_tvb, g_pinfo, g_tree);
+ break;
+ case 2:
+ /* LLP
+ * The embedded message contains a Facility Information Element as defined in 3GPP TS 04.71
+ * excluding the Facility IEI and length of Facility IEI octets defined in 3GPP TS 04.71.(3GPP TS 44.071).
+ */
+ break;
+ case 3:
+ /* SMLCPP
+ * The embedded message is as defined in 3GPP TS 08.31(TS 48.031).
+ */
+ break;
+ default:
+ break;
+ }
+
+ curr_offset += len;
+
+ EXTRANEOUS_DATA_CHECK(len, curr_offset - offset);
+
+ return(curr_offset - offset);
}
/*
* 3.2.2.69 Network Element Identity
@@ -2993,17 +2993,17 @@ be_apdu(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_s
* 3.2.2.70 GPS Assistance Data
* Requested GPS Data element of 3GPP TS 49.031 BSSAP-LE.
*/
-static guint16
+static guint16
be_gps_assist_data(tvbuff_t *tvb, proto_tree *tree, 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 , "Not decoded yet");
+ proto_tree_add_text(tree, tvb, curr_offset, len , "Not decoded yet");
- return(len);
+ return(len);
}
/*
* 3.2.2.71 Deciphering Keys
@@ -3017,13 +3017,13 @@ be_gps_assist_data(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U
static guint16
be_ret_err_req(tvbuff_t *tvb, proto_tree *tree, 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 , "Not decoded yet");
+ proto_tree_add_text(tree, tvb, curr_offset, len , "Not decoded yet");
- return(len);
+ return(len);
}
/*
* 3.2.2.73 Return Error Cause
@@ -3032,13 +3032,13 @@ be_ret_err_req(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, g
static guint16
be_ret_err_cause(tvbuff_t *tvb, proto_tree *tree, 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 , "Not decoded yet");
+ proto_tree_add_text(tree, tvb, curr_offset, len , "Not decoded yet");
- return(len);
+ return(len);
}
/*
* 3.2.2.74 Segmentation
@@ -3047,40 +3047,40 @@ be_ret_err_cause(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_,
static guint16
be_seg(tvbuff_t *tvb, proto_tree *tree, 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 , "Not decoded yet");
+ proto_tree_add_text(tree, tvb, curr_offset, len , "Not decoded yet");
- return(len);
+ return(len);
}
/*
* 3.2.2.75 Service Handover
*/
static const value_string gsm_a_bssmap_serv_ho_inf_vals[] = {
- { 0, "Handover to UTRAN or cdma2000 should be performed - Handover to UTRAN or cdma2000 is preferred" },
- { 1, "Handover to UTRAN or cdma2000 should not be performed - Handover to GSM is preferred" },
- { 2, "Handover to UTRAN or cdma2000 shall not be performed - " },
- { 3, "no information available for service based handover" },
- { 4, "no information available for service based handover" },
- { 5, "no information available for service based handover" },
- { 6, "no information available for service based handover" },
- { 7, "no information available for service based handover" },
- { 0, NULL },
+ { 0, "Handover to UTRAN or cdma2000 should be performed - Handover to UTRAN or cdma2000 is preferred" },
+ { 1, "Handover to UTRAN or cdma2000 should not be performed - Handover to GSM is preferred" },
+ { 2, "Handover to UTRAN or cdma2000 shall not be performed - " },
+ { 3, "no information available for service based handover" },
+ { 4, "no information available for service based handover" },
+ { 5, "no information available for service based handover" },
+ { 6, "no information available for service based handover" },
+ { 7, "no information available for service based handover" },
+ { 0, NULL },
};
static guint16
be_serv_ho(tvbuff_t *tvb, proto_tree *tree, 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 Handover information */
- proto_tree_add_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, curr_offset<<3, 5, FALSE);
- proto_tree_add_item(tree, hf_gsm_a_bssmap_serv_ho_inf, tvb, curr_offset+1, 1, FALSE);
- curr_offset++;
- return(len);
+ /* Service Handover information */
+ proto_tree_add_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, curr_offset<<3, 5, FALSE);
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_serv_ho_inf, tvb, curr_offset+1, 1, FALSE);
+ curr_offset++;
+ return(len);
}
/*
@@ -3090,19 +3090,19 @@ be_serv_ho(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar
static guint16
be_src_rnc_to_tar_rnc_umts(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- tvbuff_t *container_tvb;
- guint32 curr_offset;
+ tvbuff_t *container_tvb;
+ guint32 curr_offset;
- curr_offset = offset;
+ curr_offset = offset;
- /* The Source RNC to Target RNC transparent Information value is encoded as
- * the Source RNC to Target RNC Transparent Container IE as defined in relevant
- * RANAP specification 3GPP TS 25.413, excluding RANAP tag
- */
- container_tvb = tvb_new_subset(tvb, curr_offset, len, len);
- dissect_ranap_SourceRNC_ToTargetRNC_TransparentContainer_PDU(container_tvb, g_pinfo , tree);
+ /* The Source RNC to Target RNC transparent Information value is encoded as
+ * the Source RNC to Target RNC Transparent Container IE as defined in relevant
+ * RANAP specification 3GPP TS 25.413, excluding RANAP tag
+ */
+ container_tvb = tvb_new_subset(tvb, curr_offset, len, len);
+ dissect_ranap_SourceRNC_ToTargetRNC_TransparentContainer_PDU(container_tvb, g_pinfo , tree);
- return(len);
+ return(len);
}
/*
* 3.2.2.77 Source RNC to target RNC transparent information (cdma2000)
@@ -3110,16 +3110,16 @@ be_src_rnc_to_tar_rnc_umts(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guin
static guint16
be_src_rnc_to_tar_rnc_cdma(tvbuff_t *tvb, proto_tree *tree, 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 , "Not decoded yet");
- /* The Source RNC to Target RNC transparent Information value (structure and encoding)
- * for cdma2000 is defined in relevant specifications.
- */
+ proto_tree_add_text(tree, tvb, curr_offset, len , "Not decoded yet");
+ /* The Source RNC to Target RNC transparent Information value (structure and encoding)
+ * for cdma2000 is defined in relevant specifications.
+ */
- return(len);
+ return(len);
}
/*
* 3.2.2.78 GERAN Classmark
@@ -3128,13 +3128,13 @@ be_src_rnc_to_tar_rnc_cdma(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guin
static guint16
be_geran_cls_m(tvbuff_t *tvb, proto_tree *tree, 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 , "Not decoded yet");
+ proto_tree_add_text(tree, tvb, curr_offset, len , "Not decoded yet");
- return(len);
+ return(len);
}
/*
* 3.2.2.79 GERAN BSC Container
@@ -3153,44 +3153,44 @@ bssmap_new_bss_to_old_bss_info(tvbuff_t *tvb, proto_tree *tree, packet_info *pin
return;
}
- g_pinfo = pinfo;
- g_tree = tree;
+ g_pinfo = pinfo;
+ g_tree = tree;
- len = tvb_length(tvb);
+ len = tvb_length(tvb);
be_field_element_dissect(tvb, tree, 0, len, NULL, 0);
- g_pinfo = NULL;
- g_tree = NULL;
+ g_pinfo = NULL;
+ g_tree = NULL;
}
/*
- * 3.2.2.81 Inter-System Information
+ * 3.2.2.81 Inter-System Information
*/
static guint16
be_inter_sys_inf(tvbuff_t *tvb, proto_tree *tree, 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 , "Not decoded yet");
+ proto_tree_add_text(tree, tvb, curr_offset, len , "Not decoded yet");
- return(len);
+ return(len);
}
/*
- * 3.2.2.82 SNA Access Information
+ * 3.2.2.82 SNA Access Information
*/
static guint16
be_sna_acc_inf(tvbuff_t *tvb, proto_tree *tree, 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 , "Not decoded yet");
+ proto_tree_add_text(tree, tvb, curr_offset, len , "Not decoded yet");
- return(len);
+ return(len);
}
/*
@@ -3212,290 +3212,290 @@ static const true_false_string bssmap_paging_inf_flg_value = {
};
static const value_string gsm_a_bssmap_paging_cause_vals[] = {
- { 0, "Paging is for mobile terminating call" },
- { 1, "Paging is for a short message" },
- { 2, "Paging is for a USSD" },
- { 3, "Spare" },
- { 0, NULL },
+ { 0, "Paging is for mobile terminating call" },
+ { 1, "Paging is for a short message" },
+ { 2, "Paging is for a USSD" },
+ { 3, "Spare" },
+ { 0, NULL },
};
static guint16
be_paging_inf(tvbuff_t *tvb, proto_tree *tree, 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_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, curr_offset<<3, 5, FALSE);
- proto_tree_add_item(tree, hf_gsm_a_bssmap_paging_cause, tvb, curr_offset, 1, FALSE);
- proto_tree_add_item(tree, hf_gsm_a_bssmap_paging_inf_flg, tvb, curr_offset, 1, FALSE);
- curr_offset++;
+ proto_tree_add_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, curr_offset<<3, 5, FALSE);
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_paging_cause, tvb, curr_offset, 1, FALSE);
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_paging_inf_flg, tvb, curr_offset, 1, FALSE);
+ curr_offset++;
- return(curr_offset-offset);
+ return(curr_offset-offset);
}
/*
- * 3.2.2.86 IMEI
+ * 3.2.2.86 IMEI
* Use same dissector as IMSI 3.2.2.6
*/
/*
- * 3.2.2.87 Velocity Estimate
+ * 3.2.2.87 Velocity Estimate
*/
static guint16
be_vel_est(tvbuff_t *tvb, proto_tree *tree, 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, "Not decoded yet");
+ proto_tree_add_text(tree, tvb, curr_offset, len, "Not decoded yet");
- return(len);
+ return(len);
}
/*
- * 3.2.2.88 VGCS Feature Flags
+ * 3.2.2.88 VGCS Feature Flags
*/
/* Bit 1 is the talker priority indicator (TP Ind). */
static const true_false_string gsm_bssmap_tpind_vals = {
- "Talker Priority not supported" ,
- "Talker Priority supported"
+ "Talker Priority not supported" ,
+ "Talker Priority supported"
};
/* Bits 2 and 3 are the A-interface resource sharing indicator (AS Ind). */
static const true_false_string gsm_bssmap_asind_b2_vals = {
- "A-interface circuit sharing" ,
- "No A-interface circuit sharing"
+ "A-interface circuit sharing" ,
+ "No A-interface circuit sharing"
};
static const true_false_string gsm_bssmap_asind_b3_vals = {
- "A-interface link sharing" ,
- "No A-interface link sharing"
+ "A-interface link sharing" ,
+ "No A-interface link sharing"
};
/* Bit 4 is the group or broadcast call re-establishment by the BSS indicator (Bss Res). */
static const true_false_string gsm_bssmap_bss_res_vals = {
- "Re-establishment of the group or broadcast call by the BSS" ,
- "No re-establishment of the group or broadcast call by the BSS"
+ "Re-establishment of the group or broadcast call by the BSS" ,
+ "No re-establishment of the group or broadcast call by the BSS"
};
/* Bit 5 is the Talker Channel Parameter (TCP). */
static const true_false_string gsm_bssmap_bss_tcp_vals = {
- "Talker channel parameter is applicable to this call, talker shall be established and maintained on a dedicated channel" ,
- "Talker channel parameter is not applicable to this call"
+ "Talker channel parameter is applicable to this call, talker shall be established and maintained on a dedicated channel" ,
+ "Talker channel parameter is not applicable to this call"
};
static guint16
be_vgcs_feat_flg(tvbuff_t *tvb, proto_tree *tree, 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_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, curr_offset<<3, 3, FALSE);
- proto_tree_add_item(tree, hf_gsm_a_bssmap_tcp, tvb, curr_offset, 1, FALSE);
- proto_tree_add_item(tree, hf_gsm_a_bssmap_bss_res, tvb, curr_offset, 1, FALSE);
- proto_tree_add_item(tree, hf_gsm_a_bssmap_asind_b3, tvb, curr_offset, 1, FALSE);
- proto_tree_add_item(tree, hf_gsm_a_bssmap_asind_b2, tvb, curr_offset, 1, FALSE);
- proto_tree_add_item(tree, hf_gsm_a_bssmap_tpind, tvb, curr_offset, 1, FALSE);
+ proto_tree_add_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, curr_offset<<3, 3, FALSE);
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_tcp, tvb, curr_offset, 1, FALSE);
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_bss_res, tvb, curr_offset, 1, FALSE);
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_asind_b3, tvb, curr_offset, 1, FALSE);
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_asind_b2, tvb, curr_offset, 1, FALSE);
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_tpind, tvb, curr_offset, 1, FALSE);
- curr_offset++;
+ curr_offset++;
- return(curr_offset-offset);
+ return(curr_offset-offset);
}
/*
- * 3.2.2.89 Talker Priority
+ * 3.2.2.89 Talker Priority
*/
static const value_string gsm_a_bssmap_talker_pri_vals[] = {
- { 0, "Normal Priority" },
- { 1, "Privileged Priority" },
- { 2, "Emergency Priority" },
- { 3, "Reserved for future use" },
- { 0, NULL },
+ { 0, "Normal Priority" },
+ { 1, "Privileged Priority" },
+ { 2, "Emergency Priority" },
+ { 3, "Reserved for future use" },
+ { 0, NULL },
};
static guint16
be_talker_pri(tvbuff_t *tvb, proto_tree *tree, 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_gsm_a_bssmap_talker_pri, tvb, curr_offset, 1, FALSE);
- curr_offset++;
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_talker_pri, tvb, curr_offset, 1, FALSE);
+ curr_offset++;
- EXTRANEOUS_DATA_CHECK(len, curr_offset - offset);
+ EXTRANEOUS_DATA_CHECK(len, curr_offset - offset);
- return(curr_offset - offset);
+ return(curr_offset - offset);
}
/*
- * 3.2.2.90 Emergency Set Indication
+ * 3.2.2.90 Emergency Set Indication
* No data
*/
/*
- * 3.2.2.91 Talker Identity
+ * 3.2.2.91 Talker Identity
*/
static guint16
be_talker_id(tvbuff_t *tvb, proto_tree *tree, 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_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, curr_offset<<3, 5, FALSE);
- proto_tree_add_item(tree, hf_gsm_a_bssmap_filler_bits, tvb, curr_offset, 1, FALSE);
- curr_offset++;
- proto_tree_add_text(tree, tvb, curr_offset, len-1, "Talker Identity field");
+ proto_tree_add_bits_item(tree, hf_gsm_a_bssmap_spare_bits, tvb, curr_offset<<3, 5, FALSE);
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_filler_bits, tvb, curr_offset, 1, FALSE);
+ curr_offset++;
+ proto_tree_add_text(tree, tvb, curr_offset, len-1, "Talker Identity field");
- return(len);
+ return(len);
}
/*
- * 3.2.2.92 SMS to VGCS
+ * 3.2.2.92 SMS to VGCS
*/
static guint16
be_sms_to_vgcs(tvbuff_t *tvb, proto_tree *tree, 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, "Not decoded yet");
- /* The SMS content field is coded as follows - this field contains
- * the RP-DATA message as defined in 3GPP TS 24.011.
- */
+ proto_tree_add_text(tree, tvb, curr_offset, len, "Not decoded yet");
+ /* The SMS content field is coded as follows - this field contains
+ * the RP-DATA message as defined in 3GPP TS 24.011.
+ */
- return(len);
+ return(len);
}
/*
- * 3.2.2.93 VGCS talker mode
+ * 3.2.2.93 VGCS talker mode
*/
static guint16
be_vgcs_talker_mode(tvbuff_t *tvb, proto_tree *tree, 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, "Not decoded yet");
+ proto_tree_add_text(tree, tvb, curr_offset, len, "Not decoded yet");
- return(len);
+ return(len);
}
/*
- * 3.2.2.94 VGCS/VBS Cell Status
+ * 3.2.2.94 VGCS/VBS Cell Status
*/
/*
- * 3.2.2.95 GANSS Assistance Data
+ * 3.2.2.95 GANSS Assistance Data
* The GANSS Assistance Data octets 3 to n are coded as the Requested GANSS Data element of 3GPP TS 49.031 (BSSAP-LE)
*/
guint16
be_ganss_ass_dta(tvbuff_t *tvb, proto_tree *tree, 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, "Not decoded yet");
+ proto_tree_add_text(tree, tvb, curr_offset, len, "Not decoded yet");
- return(len);
+ return(len);
}
/*
- * 3.2.2.96 GANSS Positioning Data
+ * 3.2.2.96 GANSS Positioning Data
*/
guint16
be_ganss_pos_dta(tvbuff_t *tvb, proto_tree *tree, 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, "Not decoded yet");
+ proto_tree_add_text(tree, tvb, curr_offset, len, "Not decoded yet");
- return(len);
+ return(len);
}
/*
- * 3.2.2.97 GANSS Location Type
+ * 3.2.2.97 GANSS Location Type
*/
guint16
be_ganss_loc_type(tvbuff_t *tvb, proto_tree *tree, 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, "Not decoded yet");
+ proto_tree_add_text(tree, tvb, curr_offset, len, "Not decoded yet");
- return(len);
+ return(len);
}
/*
- * 3.2.2.98 Application Data
+ * 3.2.2.98 Application Data
*/
/*
- * 3.2.2.99 Data Identity
+ * 3.2.2.99 Data Identity
*/
/*
- * 3.2.2.100 Application Data Information
+ * 3.2.2.100 Application Data Information
*/
static guint16
be_app_data_inf(tvbuff_t *tvb, proto_tree *tree, 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, "Not decoded yet");
+ proto_tree_add_text(tree, tvb, curr_offset, len, "Not decoded yet");
- return(len);
+ return(len);
}
/*
- * 3.2.2.101 MSISDN
+ * 3.2.2.101 MSISDN
* Octets 3-12 contain the digits of an MSISDN, coded as in 3GPP TS 24.008, Calling party BCD number, octets 4 - 13.
*/
/*
- * 3.2.2.102 AoIP Transport Layer Address
+ * 3.2.2.102 AoIP Transport Layer Address
*/
static guint16
be_aoip_trans_lay_add(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
-
- curr_offset = offset;
-
- /* This Information Element provides either an IPv4 or and IPv6 Address and UDP port value
- * for the Transport Layer information of the connection end point.
- * The Length differentiates between IPv4 and IPv6.
- */
- switch(len){
- case 6:
- /* IPv4 */
- proto_tree_add_item(tree, hf_gsm_a_bssmap_aoip_trans_ipv4, tvb, curr_offset, 4, FALSE);
- curr_offset+=4;
- break;
- case 18:
- /* IPv6 */
- proto_tree_add_item(tree, hf_gsm_a_bssmap_aoip_trans_ipv6, tvb, curr_offset, 16, FALSE);
- curr_offset+=16;
- break;
- default:
- /* Bogus */
- proto_tree_add_text(tree, tvb, curr_offset, len, "Bogus length %u",len);
- return(len);
- }
- proto_tree_add_item(tree, hf_gsm_a_bssmap_aoip_trans_port, tvb, curr_offset, 2, FALSE);
- curr_offset+=2;
-
- return(curr_offset - offset);
-}
-/*
- * 3.2.2.103 Speech Codec List
- */
-/*
-FR_AMR is coded '011'
-S11, S13 and S15 are reserved and coded with zeroes.
-HR_AMR is coded '100'
-S6 - S7 and S11 - S15 are reserved and coded with zeroes.
+ guint32 curr_offset;
+
+ curr_offset = offset;
+
+ /* This Information Element provides either an IPv4 or and IPv6 Address and UDP port value
+ * for the Transport Layer information of the connection end point.
+ * The Length differentiates between IPv4 and IPv6.
+ */
+ switch(len){
+ case 6:
+ /* IPv4 */
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_aoip_trans_ipv4, tvb, curr_offset, 4, FALSE);
+ curr_offset+=4;
+ break;
+ case 18:
+ /* IPv6 */
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_aoip_trans_ipv6, tvb, curr_offset, 16, FALSE);
+ curr_offset+=16;
+ break;
+ default:
+ /* Bogus */
+ proto_tree_add_text(tree, tvb, curr_offset, len, "Bogus length %u",len);
+ return(len);
+ }
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_aoip_trans_port, tvb, curr_offset, 2, FALSE);
+ curr_offset+=2;
+
+ return(curr_offset - offset);
+}
+/*
+ * 3.2.2.103 Speech Codec List
+ */
+/*
+FR_AMR is coded '011'
+S11, S13 and S15 are reserved and coded with zeroes.
+HR_AMR is coded '100'
+S6 - S7 and S11 - S15 are reserved and coded with zeroes.
OHR_AMR is coded '011'
-S11, S13 and S15 are reserved and coded with zeroes.
+S11, S13 and S15 are reserved and coded with zeroes.
FR_AMR-WB is coded '001'
S0 is set to '1' S1 - S7 are reserved and coded with zeroes.
@@ -3505,9 +3505,9 @@ OHR_AMR-WB is coded '101'
S0 is set to '1' S1 - S7 are reserved and coded with zeroes.
-8 7 6 5 4 3 2 1
-FI PI PT TF Codec Type (FR_AMR-WB or OFR_AMR-WB or OHR_AMR-WB)
-S7 S6 S5 S4 S3 S2 S1 S0
+8 7 6 5 4 3 2 1
+FI PI PT TF Codec Type (FR_AMR-WB or OFR_AMR-WB or OHR_AMR-WB)
+S7 S6 S5 S4 S3 S2 S1 S0
*/
@@ -3516,341 +3516,341 @@ static const true_false_string bssmap_fi_vals = {
"AoIP with Compressed speech via RTP/UDP/IP is not supported by the BSS/Not Preferred by the MSC"
};
static const true_false_string bssmap_tf_vals = {
- "TFO supported by the BSS or TFO support is preferred by the MSC for this Codec Type",
- "TFO is not supported by the BSS or TFO support is not preferred by the MSC for this Codec Type"
+ "TFO supported by the BSS or TFO support is preferred by the MSC for this Codec Type",
+ "TFO is not supported by the BSS or TFO support is not preferred by the MSC for this Codec Type"
};
static const true_false_string bssmap_pi_vals = {
- "Transport of PCM over A-Interface via RTP/UDP/IP is supported by the BSS or preferred by the MSC for this Codec Type",
- "PCM over A interface with IP as transport is not supported by the BSS or not preferred by the MSC for this Codec Type"
+ "Transport of PCM over A-Interface via RTP/UDP/IP is supported by the BSS or preferred by the MSC for this Codec Type",
+ "PCM over A interface with IP as transport is not supported by the BSS or not preferred by the MSC for this Codec Type"
};
static const true_false_string bssmap_pt_vals = {
- "Transport of PCM over A-Interface via TDM is supported by the BSS or preferred by the MSC",
- "PCM over A-Interface with TDM as transport is not supported by the BSS or not preferred by the MSC for this Codec Type"
+ "Transport of PCM over A-Interface via TDM is supported by the BSS or preferred by the MSC",
+ "PCM over A-Interface with TDM as transport is not supported by the BSS or not preferred by the MSC for this Codec Type"
};
/* 26.103 Table 6.3-1: Coding of the selected Codec_Type (long form) */
static const value_string bssap_speech_codec_values[] = {
- { 0x00, "GSM FR " },
- { 0x01, "GSM HR " },
- { 0x02, "GSM EFR" },
- { 0x03, "FR_AMR" },
- { 0x04, "HR_AMR" },
- { 0x05, "UMTS AMR" },
- { 0x06, "UMTS AMR 2" },
- { 0x07, "TDMA EFR" },
- { 0x08, "PDC EFR" },
- { 0x09, "FR_AMR-WB" },
- { 0x0a, "UMTS AMR-WB" },
- { 0x0b, "OHR_AMR" },
- { 0x0c, "OFR_AMR-WB" },
- { 0x0d, "OHR_AMR-WB" },
- { 0, NULL }
+ { 0x00, "GSM FR " },
+ { 0x01, "GSM HR " },
+ { 0x02, "GSM EFR" },
+ { 0x03, "FR_AMR" },
+ { 0x04, "HR_AMR" },
+ { 0x05, "UMTS AMR" },
+ { 0x06, "UMTS AMR 2" },
+ { 0x07, "TDMA EFR" },
+ { 0x08, "PDC EFR" },
+ { 0x09, "FR_AMR-WB" },
+ { 0x0a, "UMTS AMR-WB" },
+ { 0x0b, "OHR_AMR" },
+ { 0x0c, "OFR_AMR-WB" },
+ { 0x0d, "OHR_AMR-WB" },
+ { 0, NULL }
};
static guint16
be_speech_codec_lst(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset, consumed = 0;
- guint8 codec;
- guint8 number = 0;
- proto_item *item = NULL;
- proto_tree *subtree = NULL;
-
- curr_offset = offset;
-
- while (curr_offset-offset < len){
- number++;
- consumed=0;
- item = proto_tree_add_text(tree, tvb, curr_offset, 1, "Speech Codec Element %u",number);
- subtree = proto_item_add_subtree(item, ett_codec_lst);
- codec = tvb_get_guint8(tvb,curr_offset)&0x0f;
- /* FI indicates Full IP */
- proto_tree_add_item(subtree, hf_gsm_a_bssmap_fi, tvb, curr_offset, 1, FALSE);
- /* PI indicates PCMoIP */
- proto_tree_add_item(subtree, hf_gsm_a_bssmap_pi, tvb, curr_offset, 1, FALSE);
- /* PT indicates PCMoTDM */
- proto_tree_add_item(subtree, hf_gsm_a_bssmap_pt, tvb, curr_offset, 1, FALSE);
- /* TF indicates TFO support */
- proto_tree_add_item(subtree, hf_gsm_a_bssmap_tf, tvb, curr_offset, 1, FALSE);
- /* Codec Type */
- proto_tree_add_item(subtree, hf_gsm_a_bssap_speech_codec, tvb, curr_offset, 1, FALSE);
- curr_offset++;
- consumed++;
- switch(codec){
- case 3:
- /* fall through */
- case 4:
- /* fall through */
- case 0xb:
- /* FR_AMR is coded '011'
- * HR_AMR is coded '100'
- * OHR_AMR is coded '1011'
- */
- proto_tree_add_text(subtree, tvb, curr_offset, 2, "S0 - S15");
- curr_offset+=2;
- consumed+=2;
- break;
- case 0x9:
- /* fall through */
- case 0xc:
- /* fall through */
- case 0xd:
- /* FR_AMR-WB is coded '1001'
- * OFR_AMR-WB is coded '1100'
- * OHR_AMR-WB is coded '1101'
- */
- proto_tree_add_text(subtree, tvb, curr_offset, 1, "S0 - S7");
- curr_offset++;
- consumed++;
- break;
- default:
- break;
- }
- }
- proto_item_set_len(item, consumed);
- return(len);
-}
-/*
- * 3.2.2.104 Speech Codec
+ guint32 curr_offset, consumed = 0;
+ guint8 codec;
+ guint8 number = 0;
+ proto_item *item = NULL;
+ proto_tree *subtree = NULL;
+
+ curr_offset = offset;
+
+ while (curr_offset-offset < len){
+ number++;
+ consumed=0;
+ item = proto_tree_add_text(tree, tvb, curr_offset, 1, "Speech Codec Element %u",number);
+ subtree = proto_item_add_subtree(item, ett_codec_lst);
+ codec = tvb_get_guint8(tvb,curr_offset)&0x0f;
+ /* FI indicates Full IP */
+ proto_tree_add_item(subtree, hf_gsm_a_bssmap_fi, tvb, curr_offset, 1, FALSE);
+ /* PI indicates PCMoIP */
+ proto_tree_add_item(subtree, hf_gsm_a_bssmap_pi, tvb, curr_offset, 1, FALSE);
+ /* PT indicates PCMoTDM */
+ proto_tree_add_item(subtree, hf_gsm_a_bssmap_pt, tvb, curr_offset, 1, FALSE);
+ /* TF indicates TFO support */
+ proto_tree_add_item(subtree, hf_gsm_a_bssmap_tf, tvb, curr_offset, 1, FALSE);
+ /* Codec Type */
+ proto_tree_add_item(subtree, hf_gsm_a_bssap_speech_codec, tvb, curr_offset, 1, FALSE);
+ curr_offset++;
+ consumed++;
+ switch(codec){
+ case 3:
+ /* fall through */
+ case 4:
+ /* fall through */
+ case 0xb:
+ /* FR_AMR is coded '011'
+ * HR_AMR is coded '100'
+ * OHR_AMR is coded '1011'
+ */
+ proto_tree_add_text(subtree, tvb, curr_offset, 2, "S0 - S15");
+ curr_offset+=2;
+ consumed+=2;
+ break;
+ case 0x9:
+ /* fall through */
+ case 0xc:
+ /* fall through */
+ case 0xd:
+ /* FR_AMR-WB is coded '1001'
+ * OFR_AMR-WB is coded '1100'
+ * OHR_AMR-WB is coded '1101'
+ */
+ proto_tree_add_text(subtree, tvb, curr_offset, 1, "S0 - S7");
+ curr_offset++;
+ consumed++;
+ break;
+ default:
+ break;
+ }
+ }
+ proto_item_set_len(item, consumed);
+ return(len);
+}
+/*
+ * 3.2.2.104 Speech Codec
*/
static const true_false_string bssmap_fi2_vals = {
"AoIP with compressed speech via RTP/UDP/IP is selected for this Codec Type",
"Compressed speech via RTP/UDP/IP is not selected for this Codec Type"
};
static const true_false_string bssmap_tf2_vals = {
- "TFO Support is selected for this Codec Type",
- "TFO Support is not selected for this Codec Type"
+ "TFO Support is selected for this Codec Type",
+ "TFO Support is not selected for this Codec Type"
};
static const true_false_string bssmap_pi2_vals = {
- "PCM over A-Interface via RTP/UPD/IP is selected for this Codec Type",
- "PCM over A interface with RTP/UDP/IP is not selected for this Codec Type"
+ "PCM over A-Interface via RTP/UPD/IP is selected for this Codec Type",
+ "PCM over A interface with RTP/UDP/IP is not selected for this Codec Type"
};
static const true_false_string bssmap_pt2_vals = {
- "PCM over A-Interface with TDM as transport is selected for this Codec Type",
- "PCM over A-Interface with TDM as transport is not selected for this Codec Type"
+ "PCM over A-Interface with TDM as transport is selected for this Codec Type",
+ "PCM over A-Interface with TDM as transport is not selected for this Codec Type"
};
static guint16
be_speech_codec(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset, consumed = 0;
- guint8 codec;
- guint8 number = 0;
- proto_item *item = NULL;
- proto_tree *subtree = NULL;
-
- curr_offset = offset;
-
- while (curr_offset-offset < len){
- number++;
- consumed=0;
- item = proto_tree_add_text(tree, tvb, curr_offset, 1, "Speech Codec Element %u",number);
- subtree = proto_item_add_subtree(item, ett_codec_lst);
- codec = tvb_get_guint8(tvb,curr_offset)&0x0f;
- /* FI indicates Full IP */
- proto_tree_add_item(subtree, hf_gsm_a_bssmap_fi2, tvb, curr_offset, 1, FALSE);
- /* PI indicates PCMoIP */
- proto_tree_add_item(subtree, hf_gsm_a_bssmap_pi2, tvb, curr_offset, 1, FALSE);
- /* PT indicates PCMoTDM */
- proto_tree_add_item(subtree, hf_gsm_a_bssmap_pt2, tvb, curr_offset, 1, FALSE);
- /* TF indicates TFO support */
- proto_tree_add_item(subtree, hf_gsm_a_bssmap_tf2, tvb, curr_offset, 1, FALSE);
- /* Codec Type */
- proto_tree_add_item(subtree, hf_gsm_a_bssap_speech_codec, tvb, curr_offset, 1, FALSE);
- curr_offset++;
- consumed++;
- switch(codec){
- case 3:
- /* fall through */
- case 4:
- /* fall through */
- case 0xb:
- /* FR_AMR is coded '011'
- * HR_AMR is coded '100'
- * OHR_AMR is coded '1011'
- */
- proto_tree_add_text(subtree, tvb, curr_offset, 2, "S0 - S15");
- curr_offset+=2;
- consumed+=2;
- break;
- case 0x9:
- /* fall through */
- case 0xc:
- /* fall through */
- case 0xd:
- /* FR_AMR-WB is coded '1001'
- * OFR_AMR-WB is coded '1100'
- * OHR_AMR-WB is coded '1101'
- */
- proto_tree_add_text(subtree, tvb, curr_offset, 1, "S0 - S7");
- curr_offset++;
- consumed++;
- break;
- default:
- break;
- }
- }
- proto_item_set_len(item, consumed);
- return(len);
-
- return(len);
-}
-/*
- * 3.2.2.105 Call Identifier
+ guint32 curr_offset, consumed = 0;
+ guint8 codec;
+ guint8 number = 0;
+ proto_item *item = NULL;
+ proto_tree *subtree = NULL;
+
+ curr_offset = offset;
+
+ while (curr_offset-offset < len){
+ number++;
+ consumed=0;
+ item = proto_tree_add_text(tree, tvb, curr_offset, 1, "Speech Codec Element %u",number);
+ subtree = proto_item_add_subtree(item, ett_codec_lst);
+ codec = tvb_get_guint8(tvb,curr_offset)&0x0f;
+ /* FI indicates Full IP */
+ proto_tree_add_item(subtree, hf_gsm_a_bssmap_fi2, tvb, curr_offset, 1, FALSE);
+ /* PI indicates PCMoIP */
+ proto_tree_add_item(subtree, hf_gsm_a_bssmap_pi2, tvb, curr_offset, 1, FALSE);
+ /* PT indicates PCMoTDM */
+ proto_tree_add_item(subtree, hf_gsm_a_bssmap_pt2, tvb, curr_offset, 1, FALSE);
+ /* TF indicates TFO support */
+ proto_tree_add_item(subtree, hf_gsm_a_bssmap_tf2, tvb, curr_offset, 1, FALSE);
+ /* Codec Type */
+ proto_tree_add_item(subtree, hf_gsm_a_bssap_speech_codec, tvb, curr_offset, 1, FALSE);
+ curr_offset++;
+ consumed++;
+ switch(codec){
+ case 3:
+ /* fall through */
+ case 4:
+ /* fall through */
+ case 0xb:
+ /* FR_AMR is coded '011'
+ * HR_AMR is coded '100'
+ * OHR_AMR is coded '1011'
+ */
+ proto_tree_add_text(subtree, tvb, curr_offset, 2, "S0 - S15");
+ curr_offset+=2;
+ consumed+=2;
+ break;
+ case 0x9:
+ /* fall through */
+ case 0xc:
+ /* fall through */
+ case 0xd:
+ /* FR_AMR-WB is coded '1001'
+ * OFR_AMR-WB is coded '1100'
+ * OHR_AMR-WB is coded '1101'
+ */
+ proto_tree_add_text(subtree, tvb, curr_offset, 1, "S0 - S7");
+ curr_offset++;
+ consumed++;
+ break;
+ default:
+ break;
+ }
+ }
+ proto_item_set_len(item, consumed);
+ return(len);
+
+ return(len);
+}
+/*
+ * 3.2.2.105 Call Identifier
*/
static guint16
be_call_id(tvbuff_t *tvb, proto_tree *tree, 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;
- /* Call Identifier (least significant bits) octet 2
- * Call Identifier octet 3
- * Call Identifier octet 4
- * Call Identifier (most significant bits) octet 5
- */
- proto_tree_add_item(tree, hf_gsm_a_bssmap_call_id, tvb, curr_offset, 4, TRUE);
- curr_offset+=4;
+ /* Call Identifier (least significant bits) octet 2
+ * Call Identifier octet 3
+ * Call Identifier octet 4
+ * Call Identifier (most significant bits) octet 5
+ */
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_call_id, tvb, curr_offset, 4, TRUE);
+ curr_offset+=4;
- return(curr_offset - offset);
+ return(curr_offset - offset);
}
/*
- * 3.2.2.106 Call Identifier List
+ * 3.2.2.106 Call Identifier List
*/
static guint16
be_call_id_lst(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
- curr_offset = offset;
+ guint32 curr_offset;
+ curr_offset = offset;
- if (len==0){
- proto_tree_add_text(tree, tvb, curr_offset, len, "all resources and references associated to all Call Identifiers in use between the BSC and the MSC need to be released");
- }
- while (curr_offset-offset < len){
- proto_tree_add_item(tree, hf_gsm_a_bssmap_call_id, tvb, curr_offset, 4, TRUE);
- curr_offset+=4;
- }
+ if (len==0){
+ proto_tree_add_text(tree, tvb, curr_offset, len, "all resources and references associated to all Call Identifiers in use between the BSC and the MSC need to be released");
+ }
+ while (curr_offset-offset < len){
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_call_id, tvb, curr_offset, 4, TRUE);
+ curr_offset+=4;
+ }
- return(len);
+ return(len);
}
guint16 (*bssmap_elem_fcn[])(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string, int string_len) = {
- be_cic, /* Circuit Identity Code */
- NULL, /* Reserved */
- be_res_avail, /* Resource Available */
- be_cause, /* Cause */
- be_cell_id, /* Cell Identifier */
- be_prio, /* Priority */
- be_l3_header_info, /* Layer 3 Header Information */
- de_mid, /* IMSI */
- be_tmsi, /* TMSI */
- be_enc_info, /* Encryption Information */
- be_chan_type, /* Channel Type */
- be_periodicity, /* Periodicity */
- be_ext_res_ind, /* Extended Resource Indicator */
- be_num_ms, /* Number Of MSs */
- NULL, /* Reserved */
- NULL, /* Reserved */
- NULL, /* Reserved */
- de_ms_cm_2, /* Classmark Information Type 2 */
- de_ms_cm_3, /* Classmark Information Type 3 */
- be_int_band, /* Interference Band To Be Used */
- de_rr_cause, /* RR Cause */
- NULL, /* Reserved */
- be_l3_info, /* Layer 3 Information */
- be_dlci, /* DLCI */
- be_down_dtx_flag, /* Downlink DTX Flag */
- be_cell_id_list, /* Cell Identifier List */
- NULL /* no associated data */, /* Response Request */
- be_res_ind_method, /* Resource Indication Method */
- de_ms_cm_1, /* Classmark Information Type 1 */
- be_cic_list, /* Circuit Identity Code List */
- be_diag, /* Diagnostics */
- be_l3_msg, /* Layer 3 Message Contents */
- be_chosen_chan, /* Chosen Channel */
- be_tot_res_acc, /* Total Resource Accessible */
- be_ciph_resp_mode, /* Cipher Response Mode */
- be_cha_needed, /* Channel Needed */
- be_trace_type, /* Trace Type */
- be_trace_trigger_id,/* TriggerID */
- be_trace_reference, /* Trace Reference */
- be_trace_transaction_id, /* TransactionID */
- de_mid, /* Mobile Identity */
- be_trace_omc_id, /* OMCID */
- be_for_ind, /* Forward Indicator */
- be_chosen_enc_alg, /* Chosen Encryption Algorithm */
- be_cct_pool, /* Circuit Pool */
- NULL, /* Circuit Pool List */
- NULL, /* Time Indication */
- NULL, /* Resource Situation */
- be_curr_chan_1, /* Current Channel Type 1 */
- be_que_ind, /* Queueing Indicator */
- be_speech_ver, /* Speech Version */
- be_ass_req, /* Assignment Requirement */
- NULL /* no associated data */, /* Talker Flag */
- NULL /* no associated data */, /* Connection Release Requested */
- de_d_gb_call_ref, /* Group Call Reference */
- NULL, /* eMLPP Priority */
- be_conf_evo_ind, /* Configuration Evolution Indication */
- be_field_element_dissect, /* Old BSS to New BSS Information */
- be_lsa_id, /* LSA Identifier */
- be_lsa_id_list, /* LSA Identifier List */
- be_lsa_info, /* LSA Information */
- NULL, /* LCS QoS Dissected in packet-gsm_bssmap_le.c*/
- NULL, /* LSA access control suppression */
- be_lcs_prio, /* LCS Priority */
- be_loc_type, /* Location Type */
- be_loc_est, /* Location Estimate */
- be_pos_data, /* Positioning Data */
- NULL, /* 3.2.2.66 LCS Cause Dissected in packet-gsm_bssmap_le.c */
- NULL, /* LCS Client Type Dissected in packet-gsm_bssmap_le.c */
- be_apdu, /* APDU */
- NULL, /* Network Element Identity */
- be_gps_assist_data, /* GPS Assistance Data */
- NULL, /* Deciphering Keys (dissected in packet-gsm_bssmap_le)*/
- be_ret_err_req, /* Return Error Request */
- be_ret_err_cause, /* Return Error Cause */
- be_seg, /* Segmentation */
- be_serv_ho, /* Service Handover */
- be_src_rnc_to_tar_rnc_umts, /* Source RNC to target RNC transparent information (UMTS) */
- be_src_rnc_to_tar_rnc_cdma, /* Source RNC to target RNC transparent information (cdma2000) */
- be_geran_cls_m, /* GERAN Classmark */
- NULL, /* GERAN BSC Container */
- be_field_element_dissect, /* New BSS to Old BSS Information */
- be_inter_sys_inf, /* Inter-System Information */
- be_sna_acc_inf, /* SNA Access Information */
- NULL, /* VSTK_RAND Information */
- NULL, /* VSTK Information */
- be_paging_inf, /* Paging Information */
- de_mid, /* 3.2.2.86 IMEI (use same dissector as IMSI)*/
- be_vel_est, /* Velocity Estimate */
- be_vgcs_feat_flg, /* VGCS Feature Flags */
- be_talker_pri, /* Talker Priority */
- NULL, /* no data Emergency Set Indication */
- be_talker_id, /* Talker Identity */
- be_cell_id_list_seg, /* Cell Identifier List Segment */
- be_sms_to_vgcs, /* SMS to VGCS */
- be_vgcs_talker_mode, /* VGCS Talker Mode */
- NULL, /* VGCS/VBS Cell Status */
- be_cell_id_lst_seg_f_est_cells, /* Cell Identifier List Segment for established cells */
- be_cell_id_lst_seg_f_cell_tb_est, /* Cell Identifier List Segment for cells to be established */
- be_cell_id_lst_seg_f_rel_cell, /* Cell Identifier List Segment for released cells - no user present */
- be_cell_id_lst_seg_f_not_est_cell, /* Cell Identifier List Segment for not established cells - no establishment possible */
- be_ganss_ass_dta, /* GANSS Assistance Data */
- be_ganss_pos_dta, /* GANSS Positioning Data */
- be_ganss_loc_type, /* GANSS Location Type */
- NULL, /* Application Data */
- NULL, /* Data Identity */
- be_app_data_inf, /* Application Data Information */
- NULL, /* MSISDN */
- be_aoip_trans_lay_add, /* AoIP Transport Layer Address */
- be_speech_codec_lst, /* Speech Codec List */
- be_speech_codec, /* Speech Codec */
- be_call_id, /* Call Identifier */
- be_call_id_lst, /* Call Identifier List */
-
- NULL, /* NONE */
+ be_cic, /* Circuit Identity Code */
+ NULL, /* Reserved */
+ be_res_avail, /* Resource Available */
+ be_cause, /* Cause */
+ be_cell_id, /* Cell Identifier */
+ be_prio, /* Priority */
+ be_l3_header_info, /* Layer 3 Header Information */
+ de_mid, /* IMSI */
+ be_tmsi, /* TMSI */
+ be_enc_info, /* Encryption Information */
+ be_chan_type, /* Channel Type */
+ be_periodicity, /* Periodicity */
+ be_ext_res_ind, /* Extended Resource Indicator */
+ be_num_ms, /* Number Of MSs */
+ NULL, /* Reserved */
+ NULL, /* Reserved */
+ NULL, /* Reserved */
+ de_ms_cm_2, /* Classmark Information Type 2 */
+ de_ms_cm_3, /* Classmark Information Type 3 */
+ be_int_band, /* Interference Band To Be Used */
+ de_rr_cause, /* RR Cause */
+ NULL, /* Reserved */
+ be_l3_info, /* Layer 3 Information */
+ be_dlci, /* DLCI */
+ be_down_dtx_flag, /* Downlink DTX Flag */
+ be_cell_id_list, /* Cell Identifier List */
+ NULL /* no associated data */, /* Response Request */
+ be_res_ind_method, /* Resource Indication Method */
+ de_ms_cm_1, /* Classmark Information Type 1 */
+ be_cic_list, /* Circuit Identity Code List */
+ be_diag, /* Diagnostics */
+ be_l3_msg, /* Layer 3 Message Contents */
+ be_chosen_chan, /* Chosen Channel */
+ be_tot_res_acc, /* Total Resource Accessible */
+ be_ciph_resp_mode, /* Cipher Response Mode */
+ be_cha_needed, /* Channel Needed */
+ be_trace_type, /* Trace Type */
+ be_trace_trigger_id,/* TriggerID */
+ be_trace_reference, /* Trace Reference */
+ be_trace_transaction_id, /* TransactionID */
+ de_mid, /* Mobile Identity */
+ be_trace_omc_id, /* OMCID */
+ be_for_ind, /* Forward Indicator */
+ be_chosen_enc_alg, /* Chosen Encryption Algorithm */
+ be_cct_pool, /* Circuit Pool */
+ NULL, /* Circuit Pool List */
+ NULL, /* Time Indication */
+ NULL, /* Resource Situation */
+ be_curr_chan_1, /* Current Channel Type 1 */
+ be_que_ind, /* Queueing Indicator */
+ be_speech_ver, /* Speech Version */
+ be_ass_req, /* Assignment Requirement */
+ NULL /* no associated data */, /* Talker Flag */
+ NULL /* no associated data */, /* Connection Release Requested */
+ de_d_gb_call_ref, /* Group Call Reference */
+ NULL, /* eMLPP Priority */
+ be_conf_evo_ind, /* Configuration Evolution Indication */
+ be_field_element_dissect, /* Old BSS to New BSS Information */
+ be_lsa_id, /* LSA Identifier */
+ be_lsa_id_list, /* LSA Identifier List */
+ be_lsa_info, /* LSA Information */
+ NULL, /* LCS QoS Dissected in packet-gsm_bssmap_le.c*/
+ NULL, /* LSA access control suppression */
+ be_lcs_prio, /* LCS Priority */
+ be_loc_type, /* Location Type */
+ be_loc_est, /* Location Estimate */
+ be_pos_data, /* Positioning Data */
+ NULL, /* 3.2.2.66 LCS Cause Dissected in packet-gsm_bssmap_le.c */
+ NULL, /* LCS Client Type Dissected in packet-gsm_bssmap_le.c */
+ be_apdu, /* APDU */
+ NULL, /* Network Element Identity */
+ be_gps_assist_data, /* GPS Assistance Data */
+ NULL, /* Deciphering Keys (dissected in packet-gsm_bssmap_le)*/
+ be_ret_err_req, /* Return Error Request */
+ be_ret_err_cause, /* Return Error Cause */
+ be_seg, /* Segmentation */
+ be_serv_ho, /* Service Handover */
+ be_src_rnc_to_tar_rnc_umts, /* Source RNC to target RNC transparent information (UMTS) */
+ be_src_rnc_to_tar_rnc_cdma, /* Source RNC to target RNC transparent information (cdma2000) */
+ be_geran_cls_m, /* GERAN Classmark */
+ NULL, /* GERAN BSC Container */
+ be_field_element_dissect, /* New BSS to Old BSS Information */
+ be_inter_sys_inf, /* Inter-System Information */
+ be_sna_acc_inf, /* SNA Access Information */
+ NULL, /* VSTK_RAND Information */
+ NULL, /* VSTK Information */
+ be_paging_inf, /* Paging Information */
+ de_mid, /* 3.2.2.86 IMEI (use same dissector as IMSI)*/
+ be_vel_est, /* Velocity Estimate */
+ be_vgcs_feat_flg, /* VGCS Feature Flags */
+ be_talker_pri, /* Talker Priority */
+ NULL, /* no data Emergency Set Indication */
+ be_talker_id, /* Talker Identity */
+ be_cell_id_list_seg, /* Cell Identifier List Segment */
+ be_sms_to_vgcs, /* SMS to VGCS */
+ be_vgcs_talker_mode,/* VGCS Talker Mode */
+ NULL, /* VGCS/VBS Cell Status */
+ be_cell_id_lst_seg_f_est_cells, /* Cell Identifier List Segment for established cells */
+ be_cell_id_lst_seg_f_cell_tb_est, /* Cell Identifier List Segment for cells to be established */
+ be_cell_id_lst_seg_f_rel_cell, /* Cell Identifier List Segment for released cells - no user present */
+ be_cell_id_lst_seg_f_not_est_cell, /* Cell Identifier List Segment for not established cells - no establishment possible */
+ be_ganss_ass_dta, /* GANSS Assistance Data */
+ be_ganss_pos_dta, /* GANSS Positioning Data */
+ be_ganss_loc_type, /* GANSS Location Type */
+ NULL, /* Application Data */
+ NULL, /* Data Identity */
+ be_app_data_inf, /* Application Data Information */
+ NULL, /* MSISDN */
+ be_aoip_trans_lay_add, /* AoIP Transport Layer Address */
+ be_speech_codec_lst,/* Speech Codec List */
+ be_speech_codec, /* Speech Codec */
+ be_call_id, /* Call Identifier */
+ be_call_id_lst, /* Call Identifier List */
+
+ NULL, /* NONE */
};
-/* 3.2.3 Signalling Field Element Coding */
-/* 3.2.3.1 Extra information */
+/* 3.2.3 Signalling Field Element Coding */
+/* 3.2.3.1 Extra information */
static const value_string fe_extra_info_prec_vals[] = {
{ 0, "The old BSS recommends that this allocation request should not cause a pre-emption an existing connection" },
{ 1, "The old BSS recommends that this allocation request is allowed to preempt an existing connection based on the information supplied in the Priority information element, if available" },
@@ -3872,57 +3872,57 @@ static const value_string fe_extra_info_ue_prob_vals[] = {
static guint16
be_fe_extra_info(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
- curr_offset = offset;
- proto_tree_add_item(tree, hf_fe_extra_info_prec, tvb, curr_offset, 1, FALSE);
- proto_tree_add_item(tree, hf_fe_extra_info_lcs, tvb, curr_offset, 1, FALSE);
- proto_tree_add_item(tree, hf_fe_extra_info_ue_prob, tvb, curr_offset, 1, FALSE);
- proto_tree_add_item(tree, hf_fe_extra_info_spare, tvb, curr_offset, 1, FALSE);
- curr_offset++;
+ curr_offset = offset;
+ proto_tree_add_item(tree, hf_fe_extra_info_prec, tvb, curr_offset, 1, FALSE);
+ proto_tree_add_item(tree, hf_fe_extra_info_lcs, tvb, curr_offset, 1, FALSE);
+ proto_tree_add_item(tree, hf_fe_extra_info_ue_prob, tvb, curr_offset, 1, FALSE);
+ proto_tree_add_item(tree, hf_fe_extra_info_spare, tvb, curr_offset, 1, FALSE);
+ curr_offset++;
- return(curr_offset - offset);
+ return(curr_offset - offset);
}
-/* 3.2.3.2 Current Channel type 2 */
+/* 3.2.3.2 Current Channel type 2 */
static guint16
be_fe_cur_chan_type2(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
- curr_offset = offset;
- proto_tree_add_item(tree, hf_fe_cur_chan_type2_chan_mode, tvb, curr_offset, 1, FALSE);
- proto_tree_add_item(tree, hf_fe_cur_chan_type2_chan_mode_spare, tvb, curr_offset, 1, FALSE);
- curr_offset++;
- proto_tree_add_item(tree, hf_fe_cur_chan_type2_chan_field, tvb, curr_offset, 1, FALSE);
- proto_tree_add_item(tree, hf_fe_cur_chan_type2_chan_field_spare, tvb, curr_offset, 1, FALSE);
- curr_offset++;
+ curr_offset = offset;
+ proto_tree_add_item(tree, hf_fe_cur_chan_type2_chan_mode, tvb, curr_offset, 1, FALSE);
+ proto_tree_add_item(tree, hf_fe_cur_chan_type2_chan_mode_spare, tvb, curr_offset, 1, FALSE);
+ curr_offset++;
+ proto_tree_add_item(tree, hf_fe_cur_chan_type2_chan_field, tvb, curr_offset, 1, FALSE);
+ proto_tree_add_item(tree, hf_fe_cur_chan_type2_chan_field_spare, tvb, curr_offset, 1, FALSE);
+ curr_offset++;
- return(curr_offset - offset);
+ return(curr_offset - offset);
}
-/* 3.2.3.3 Target cell radio information */
+/* 3.2.3.3 Target cell radio information */
static guint16
be_fe_target_radio_cell_info(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
- curr_offset = offset;
- proto_tree_add_item(tree, hf_fe_target_radio_cell_info_rxlev_ncell, tvb, curr_offset, 1, FALSE);
- proto_tree_add_item(tree, hf_fe_target_radio_cell_info_rxlev_ncell_spare, tvb, curr_offset, 1, FALSE);
- curr_offset++;
+ curr_offset = offset;
+ proto_tree_add_item(tree, hf_fe_target_radio_cell_info_rxlev_ncell, tvb, curr_offset, 1, FALSE);
+ proto_tree_add_item(tree, hf_fe_target_radio_cell_info_rxlev_ncell_spare, tvb, curr_offset, 1, FALSE);
+ curr_offset++;
- return(curr_offset - offset);
+ return(curr_offset - offset);
}
-/* 3.2.3.4 GPRS Suspend Information */
+/* 3.2.3.4 GPRS Suspend Information */
static guint16
be_fe_gprs_suspend_info(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset = offset;
+ guint32 curr_offset = offset;
build_info_t bi;
- /* This Field Element contains the contents of the Gb interface SUSPEND ACK PDU,
+ /* This Field Element contains the contents of the Gb interface SUSPEND ACK PDU,
Call the BSSGP dissector here, assuming that the encoding is per 48.018 */
bi.tvb = tvb;
@@ -3935,52 +3935,52 @@ be_fe_gprs_suspend_info(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint l
bi.pdutype = 0x0c; /* BSSGP_PDU_SUSPEND_ACK */
decode_pdu_suspend_ack(&bi);
- curr_offset += len;
+ curr_offset += len;
- return(curr_offset - offset);
+ return(curr_offset - offset);
}
-/* 3.2.3.5 MultiRate configuration Information */
+/* 3.2.3.5 MultiRate configuration Information */
-/* 3.2.3.6 Dual Transfer Mode information */
+/* 3.2.3.6 Dual Transfer Mode information */
static const value_string gsm_a_bssmap_dtm_info_dtm_ind_vals[] = {
- { 0, "The MS has resources allocated exclusively for the CS domain in the old cell" },
- { 1, "The MS has resources allocated for both the CS and PS domains in the old cell" },
- { 0, NULL },
+ { 0, "The MS has resources allocated exclusively for the CS domain in the old cell" },
+ { 1, "The MS has resources allocated for both the CS and PS domains in the old cell" },
+ { 0, NULL },
};
static const value_string gsm_a_bssmap_dtm_info_sto_ind_vals[] = {
- { 0, "The MS is in multislot operation in the old cell" },
- { 1, "The MS is in single timeslot operation in the old cell" },
- { 0, NULL },
+ { 0, "The MS is in multislot operation in the old cell" },
+ { 1, "The MS is in single timeslot operation in the old cell" },
+ { 0, NULL },
};
static const value_string gsm_a_bssmap_dtm_info_egprs_ind_vals[] = {
- { 0, "The MS has no TBF using E-GPRS in the old cell" },
- { 1, "The MS has a TBF using E-GPRS in the old cell" },
- { 0, NULL },
+ { 0, "The MS has no TBF using E-GPRS in the old cell" },
+ { 1, "The MS has a TBF using E-GPRS in the old cell" },
+ { 0, NULL },
};
static guint16
be_fe_dual_transfer_mode_info(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
- curr_offset = offset;
- proto_tree_add_item(tree, hf_fe_dtm_info_dtm_ind, tvb, curr_offset, 1, FALSE);
- proto_tree_add_item(tree, hf_fe_dtm_info_sto_ind, tvb, curr_offset, 1, FALSE);
- proto_tree_add_item(tree, hf_fe_dtm_info_egprs_ind, tvb, curr_offset, 1, FALSE);
- proto_tree_add_item(tree, hf_fe_dtm_info_spare_bits, tvb, curr_offset, 1, FALSE);
- curr_offset++;
+ curr_offset = offset;
+ proto_tree_add_item(tree, hf_fe_dtm_info_dtm_ind, tvb, curr_offset, 1, FALSE);
+ proto_tree_add_item(tree, hf_fe_dtm_info_sto_ind, tvb, curr_offset, 1, FALSE);
+ proto_tree_add_item(tree, hf_fe_dtm_info_egprs_ind, tvb, curr_offset, 1, FALSE);
+ proto_tree_add_item(tree, hf_fe_dtm_info_spare_bits, tvb, curr_offset, 1, FALSE);
+ curr_offset++;
- return(curr_offset - offset);
+ return(curr_offset - offset);
}
-/* 3.2.3.7 Inter RAT Handover Info */
+/* 3.2.3.7 Inter RAT Handover Info */
static guint16
be_fe_inter_rat_handover_info(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- tvbuff_t *container_tvb;
+ tvbuff_t *container_tvb;
/* Octets 3-n are encoded as Inter RAT Handover Info as defined in 3GPP TS 25.331 */
container_tvb = tvb_new_subset(tvb, offset, len, len);
@@ -3989,108 +3989,108 @@ be_fe_inter_rat_handover_info(tvbuff_t *tvb, proto_tree *tree, guint32 offset, g
return len;
}
-/* 3.2.3.8 cdma2000 Capability Information */
+/* 3.2.3.8 cdma2000 Capability Information */
-/* 3.2.3.9 Downlink Cell Load Information */
+/* 3.2.3.9 Downlink Cell Load Information */
-/* 3.2.3.10 Uplink Cell Load Information */
+/* 3.2.3.10 Uplink Cell Load Information */
static const value_string gsm_a_bssmap_cell_load_nrt_vals[] = {
- { 0, "NRT Load is low" },
- { 1, "NRT load is medium" },
- { 2, "NRT load is high. (Probability to admit a new user is low.)" },
- { 3, "NRT overload. (Probability to admit a new user is low, packets are discarded and the source is recommended to reduce the data flow.)" },
- { 0, NULL },
+ { 0, "NRT Load is low" },
+ { 1, "NRT load is medium" },
+ { 2, "NRT load is high. (Probability to admit a new user is low.)" },
+ { 3, "NRT overload. (Probability to admit a new user is low, packets are discarded and the source is recommended to reduce the data flow.)" },
+ { 0, NULL },
};
-/* 3.2.3.11 Cell Load Information Group */
+/* 3.2.3.11 Cell Load Information Group */
static guint16
be_fe_cell_load_info_group(tvbuff_t *tvb, proto_tree *tree, 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 += be_cell_id(tvb, tree, curr_offset, len, NULL, 0);
curr_offset += be_field_element_dissect(tvb, tree, curr_offset, len + offset - curr_offset, NULL, 0);
- return(curr_offset - offset);
+ return(curr_offset - offset);
}
-/* 3.2.3.12 Cell Load Information */
+/* 3.2.3.12 Cell Load Information */
static guint16
be_fe_cell_load_info(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
- curr_offset = offset;
- proto_tree_add_item(tree, hf_fe_cell_load_info_cell_capacity_class, tvb, curr_offset, 1, FALSE);
- curr_offset++;
- proto_tree_add_item(tree, hf_fe_cell_load_info_load_value, tvb, curr_offset, 1, FALSE);
- curr_offset++;
- proto_tree_add_item(tree, hf_fe_cell_load_info_rt_load_value, tvb, curr_offset, 1, FALSE);
- curr_offset++;
- proto_tree_add_item(tree, hf_fe_cell_load_info_nrt_load_information_value, tvb, curr_offset, 1, FALSE);
- curr_offset++;
+ curr_offset = offset;
+ proto_tree_add_item(tree, hf_fe_cell_load_info_cell_capacity_class, tvb, curr_offset, 1, FALSE);
+ curr_offset++;
+ proto_tree_add_item(tree, hf_fe_cell_load_info_load_value, tvb, curr_offset, 1, FALSE);
+ curr_offset++;
+ proto_tree_add_item(tree, hf_fe_cell_load_info_rt_load_value, tvb, curr_offset, 1, FALSE);
+ curr_offset++;
+ proto_tree_add_item(tree, hf_fe_cell_load_info_nrt_load_information_value, tvb, curr_offset, 1, FALSE);
+ curr_offset++;
- return(curr_offset - offset);
+ return(curr_offset - offset);
}
-/* 3.2.3.13 PS Indication */
+/* 3.2.3.13 PS Indication */
static guint16
be_fe_ps_indication(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
- curr_offset = offset;
- proto_tree_add_item(tree, hf_fe_ps_indication, tvb, curr_offset, 1, FALSE);
- curr_offset++;
+ curr_offset = offset;
+ proto_tree_add_item(tree, hf_fe_ps_indication, tvb, curr_offset, 1, FALSE);
+ curr_offset++;
- return(curr_offset - offset);
+ return(curr_offset - offset);
}
-/* 3.2.3.14 DTM Handover Command Indication */
+/* 3.2.3.14 DTM Handover Command Indication */
static guint16
be_fe_dtm_ho_command_ind(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
+ guint32 curr_offset;
- curr_offset = offset;
- proto_tree_add_item(tree, hf_fe_dtm_ho_command_ind_spare, tvb, curr_offset, 1, FALSE);
- curr_offset++;
+ curr_offset = offset;
+ proto_tree_add_item(tree, hf_fe_dtm_ho_command_ind_spare, tvb, curr_offset, 1, FALSE);
+ curr_offset++;
- return(curr_offset - offset);
+ return(curr_offset - offset);
}
static guint16 (*bssmap_bss_to_bss_element_fcn[])(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_) = {
- be_fe_extra_info, /* { 0x01, "Extra information" }, */
- be_fe_cur_chan_type2, /* { 0x02, "Current Channel Type 2" }, */
- be_fe_target_radio_cell_info, /* { 0x03, "Target cell radio information" }, */
- be_fe_gprs_suspend_info, /* { 0x04, "GPRS Suspend information" }, */
- de_rr_multirate_conf, /* { 0x05, "MultiRate configuration information" }, */
- be_fe_dual_transfer_mode_info, /* { 0x06, "Dual Transfer Mode Information" }, */
- be_fe_inter_rat_handover_info, /* { 0x07, "Inter RAT Handover Info" }, */
- NULL, /* { 0x08, "cdma2000 Capability Information" }, */
- be_fe_cell_load_info, /* { 0x09, "Downlink Cell Load Information" }, */
- be_fe_cell_load_info, /* { 0x0a, "Uplink Cell Load Information" }, */
- be_fe_cell_load_info_group, /* { 0x0b, "Cell Load Information Group" }, */
- be_fe_cell_load_info, /* { 0x0c, "Cell Load Information" }, */
- be_fe_ps_indication, /* { 0x0d, "PS Indication" }, */
- be_fe_dtm_ho_command_ind, /* { 0x0e, "DTM Handover Command Indication" }, */
- be_vgcs_talker_mode, /* { 0x6f, "VGCS talker mode" }, */ /* not really a field element
+ be_fe_extra_info, /* { 0x01, "Extra information" }, */
+ be_fe_cur_chan_type2, /* { 0x02, "Current Channel Type 2" }, */
+ be_fe_target_radio_cell_info, /* { 0x03, "Target cell radio information" }, */
+ be_fe_gprs_suspend_info, /* { 0x04, "GPRS Suspend information" }, */
+ de_rr_multirate_conf, /* { 0x05, "MultiRate configuration information" }, */
+ be_fe_dual_transfer_mode_info, /* { 0x06, "Dual Transfer Mode Information" }, */
+ be_fe_inter_rat_handover_info, /* { 0x07, "Inter RAT Handover Info" }, */
+ NULL, /* { 0x08, "cdma2000 Capability Information" }, */
+ be_fe_cell_load_info, /* { 0x09, "Downlink Cell Load Information" }, */
+ be_fe_cell_load_info, /* { 0x0a, "Uplink Cell Load Information" }, */
+ be_fe_cell_load_info_group, /* { 0x0b, "Cell Load Information Group" }, */
+ be_fe_cell_load_info, /* { 0x0c, "Cell Load Information" }, */
+ be_fe_ps_indication, /* { 0x0d, "PS Indication" }, */
+ be_fe_dtm_ho_command_ind, /* { 0x0e, "DTM Handover Command Indication" }, */
+ be_vgcs_talker_mode, /* { 0x6f, "VGCS talker mode" }, */ /* not really a field element
but does appear in old bss to new bss info */
- NULL, /* NONE */
+ NULL, /* NONE */
};
static guint16
be_field_element_dissect(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset, ie_len, idx, fe_start_offset;
+ guint32 curr_offset, ie_len, idx, fe_start_offset;
const gchar *str;
proto_item *item = NULL;
proto_tree * bss_to_bss_tree = NULL;
- curr_offset = offset;
+ curr_offset = offset;
while (curr_offset - offset + 2 < len) {
@@ -4099,10 +4099,10 @@ be_field_element_dissect(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint
* add name
*/
oct = tvb_get_guint8(tvb, curr_offset++);
-
+
str = match_strval_idx((guint32) oct, bssmap_field_element_ids, &idx);
ie_len = tvb_get_guint8(tvb, curr_offset++);
-
+
/*
* add Field Element name
*/
@@ -4111,7 +4111,7 @@ be_field_element_dissect(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint
bss_to_bss_tree = proto_item_add_subtree(item, ett_bss_to_bss_info);
fe_start_offset = curr_offset;
-
+
/*
* decode field element
*/
@@ -4141,49 +4141,49 @@ be_field_element_dissect(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint
static void
bssmap_ass_req(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
-
- curr_offset = offset;
- curr_len = len;
-
- /* Channel Type 3.2.2.11 MSC-BSS M 5-13 */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CHAN_TYPE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CHAN_TYPE, NULL);
- /* Layer 3 Header Information 3.2.2.9 MSC-BSS O (note 3) 4 */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_L3_HEADER_INFO].value, BSSAP_PDU_TYPE_BSSMAP, BE_L3_HEADER_INFO, NULL);
- /* Priority 3.2.2.18 MSC-BSS O 3 */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_PRIO].value, BSSAP_PDU_TYPE_BSSMAP, BE_PRIO, NULL);
- /* Circuit Identity Code 3.2.2.2 MSC-BSS O (note 1, 12 3 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CIC].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC, NULL);
- /* Downlink DTX Flag 3.2.2.26 MSC-BSS O (note 2) 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_DOWN_DTX_FLAG].value, BSSAP_PDU_TYPE_BSSMAP, BE_DOWN_DTX_FLAG, NULL);
- /* Interference Band To Be Used 3.2.2.21 MSC-BSS O 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_INT_BAND].value, BSSAP_PDU_TYPE_BSSMAP, BE_INT_BAND, NULL);
- /* Classmark Information 2 3.2.2.19 MSC-BSS O (note 4) 4-5 */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_CM_INFO_2].value, BSSAP_PDU_TYPE_BSSMAP, BE_CM_INFO_2, NULL);
- /* Group Call Reference 3.2.2.55 MSC-BSS O (note 5) 7 */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_GROUP_CALL_REF].value, BSSAP_PDU_TYPE_BSSMAP, BE_GROUP_CALL_REF, NULL);
- /* Talker Flag 3.2.2.54 MSC-BSS O (note 6) 1 */
- ELEM_OPT_T(gsm_bssmap_elem_strings[BE_TALKER_FLAG].value, BSSAP_PDU_TYPE_BSSMAP, BE_TALKER_FLAG, NULL);
- /* Configuration Evolution Indication 3.2.2.57 MSC-BSS O (note 7) 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CONF_EVO_IND].value, BSSAP_PDU_TYPE_BSSMAP, BE_CONF_EVO_IND, NULL);
- /* LSA Access Control Suppression 3.2.2.61 MSC-BSS O (note 8) 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_LSA_ACC_CTRL].value, BSSAP_PDU_TYPE_BSSMAP, BE_LSA_ACC_CTRL, NULL);
- /* Service Handover 3.2.2.75 MSC-BSS O (note 9) 3 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_SERV_HO].value, BSSAP_PDU_TYPE_BSSMAP, BE_SERV_HO, NULL);
- /* Encryption Information 3.2.2.10 MSC-BSS O (note 10) 3-n */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_ENC_INFO].value, BSSAP_PDU_TYPE_BSSMAP, BE_ENC_INFO, NULL);
- /* Talker Priority 3.2.2.89 MSC-BSS O (note 11) 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_TALKER_PRI].value, BSSAP_PDU_TYPE_BSSMAP, BE_TALKER_PRI, NULL);
- /* AoIP Transport Layer Address (MGW) 3.2.2.102 MSC-BSS O (note 12) 10-22 */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_AOIP_TRANS_LAY_ADD].value, BSSAP_PDU_TYPE_BSSMAP, BE_AOIP_TRANS_LAY_ADD, NULL);
- /* Codec List (MSC Preferred) 3.2.2.103 MSC-BSS O (note 13) 3-n */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SPEECH_CODEC_LST].value, BSSAP_PDU_TYPE_BSSMAP, BE_SPEECH_CODEC_LST, "(MSC Preferred)");
- /* Call Identifier 3.2.2.104 MSC-BSS O (note 12) 5 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CALL_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_CALL_ID, NULL);
-
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
+
+ curr_offset = offset;
+ curr_len = len;
+
+ /* Channel Type 3.2.2.11 MSC-BSS M 5-13 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CHAN_TYPE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CHAN_TYPE, NULL);
+ /* Layer 3 Header Information 3.2.2.9 MSC-BSS O (note 3) 4 */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_L3_HEADER_INFO].value, BSSAP_PDU_TYPE_BSSMAP, BE_L3_HEADER_INFO, NULL);
+ /* Priority 3.2.2.18 MSC-BSS O 3 */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_PRIO].value, BSSAP_PDU_TYPE_BSSMAP, BE_PRIO, NULL);
+ /* Circuit Identity Code 3.2.2.2 MSC-BSS O (note 1, 12 3 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CIC].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC, NULL);
+ /* Downlink DTX Flag 3.2.2.26 MSC-BSS O (note 2) 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_DOWN_DTX_FLAG].value, BSSAP_PDU_TYPE_BSSMAP, BE_DOWN_DTX_FLAG, NULL);
+ /* Interference Band To Be Used 3.2.2.21 MSC-BSS O 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_INT_BAND].value, BSSAP_PDU_TYPE_BSSMAP, BE_INT_BAND, NULL);
+ /* Classmark Information 2 3.2.2.19 MSC-BSS O (note 4) 4-5 */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_CM_INFO_2].value, BSSAP_PDU_TYPE_BSSMAP, BE_CM_INFO_2, NULL);
+ /* Group Call Reference 3.2.2.55 MSC-BSS O (note 5) 7 */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_GROUP_CALL_REF].value, BSSAP_PDU_TYPE_BSSMAP, BE_GROUP_CALL_REF, NULL);
+ /* Talker Flag 3.2.2.54 MSC-BSS O (note 6) 1 */
+ ELEM_OPT_T(gsm_bssmap_elem_strings[BE_TALKER_FLAG].value, BSSAP_PDU_TYPE_BSSMAP, BE_TALKER_FLAG, NULL);
+ /* Configuration Evolution Indication 3.2.2.57 MSC-BSS O (note 7) 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CONF_EVO_IND].value, BSSAP_PDU_TYPE_BSSMAP, BE_CONF_EVO_IND, NULL);
+ /* LSA Access Control Suppression 3.2.2.61 MSC-BSS O (note 8) 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_LSA_ACC_CTRL].value, BSSAP_PDU_TYPE_BSSMAP, BE_LSA_ACC_CTRL, NULL);
+ /* Service Handover 3.2.2.75 MSC-BSS O (note 9) 3 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_SERV_HO].value, BSSAP_PDU_TYPE_BSSMAP, BE_SERV_HO, NULL);
+ /* Encryption Information 3.2.2.10 MSC-BSS O (note 10) 3-n */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_ENC_INFO].value, BSSAP_PDU_TYPE_BSSMAP, BE_ENC_INFO, NULL);
+ /* Talker Priority 3.2.2.89 MSC-BSS O (note 11) 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_TALKER_PRI].value, BSSAP_PDU_TYPE_BSSMAP, BE_TALKER_PRI, NULL);
+ /* AoIP Transport Layer Address (MGW) 3.2.2.102 MSC-BSS O (note 12) 10-22 */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_AOIP_TRANS_LAY_ADD].value, BSSAP_PDU_TYPE_BSSMAP, BE_AOIP_TRANS_LAY_ADD, NULL);
+ /* Codec List (MSC Preferred) 3.2.2.103 MSC-BSS O (note 13) 3-n */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SPEECH_CODEC_LST].value, BSSAP_PDU_TYPE_BSSMAP, BE_SPEECH_CODEC_LST, "(MSC Preferred)");
+ /* Call Identifier 3.2.2.104 MSC-BSS O (note 12) 5 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CALL_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_CALL_ID, NULL);
+
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
@@ -4192,37 +4192,37 @@ bssmap_ass_req(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
static void
bssmap_ass_complete(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
-
- curr_offset = offset;
- curr_len = len;
-
- /* RR Cause 3.2.2.22 BSS-MSC O 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_RR_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_RR_CAUSE, NULL);
- /* Circuit Identity Code 3.2.2.2 BSS-MSC O (note 4) 3 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CIC].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC, NULL);
- /* Cell Identifier 3.2.2.17 BSS-MSC O (note 1) 3-10 */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_CELL_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID, NULL);
- /* Chosen Channel 3.2.2.33 BSS-MSC O (note 3) 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CHOSEN_CHAN].value, BSSAP_PDU_TYPE_BSSMAP, BE_CHOSEN_CHAN, NULL);
- /* Chosen Encryption Algorithm 3.2.2.44 BSS-MSC O (note 5) 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CHOSEN_ENC_ALG].value, BSSAP_PDU_TYPE_BSSMAP, BE_CHOSEN_ENC_ALG, NULL);
- /* Circuit Pool 3.2.2.45 BSS-MSC O (note 2) 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CCT_POOL].value, BSSAP_PDU_TYPE_BSSMAP, BE_CCT_POOL, NULL);
- /* Speech Version (Chosen) 3.2.2.51 BSS-MSC O (note 6) 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_SPEECH_VER].value, BSSAP_PDU_TYPE_BSSMAP, BE_SPEECH_VER, " (Chosen)");
- /* LSA Identifier 3.2.2.15 BSS-MSC O (note 7) 5 */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_LSA_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_LSA_ID, NULL);
- /* Talker Priority 3.2.2.89 BSS-MSC O (note 8) 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_TALKER_PRI].value, BSSAP_PDU_TYPE_BSSMAP, BE_TALKER_PRI, NULL);
- /* AoIP Transport Layer Address (BSS) 3.2.2.102 BSS-MSC O (note 9) 10-22 */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_AOIP_TRANS_LAY_ADD].value, BSSAP_PDU_TYPE_BSSMAP, BE_AOIP_TRANS_LAY_ADD, NULL);
- /* Speech Codec (Chosen) 3.2.2.104 BSS-MSC O (note 10) 3-5 */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SPEECH_CODEC].value, BSSAP_PDU_TYPE_BSSMAP, BE_SPEECH_CODEC, "(Chosen)");
-
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
+
+ curr_offset = offset;
+ curr_len = len;
+
+ /* RR Cause 3.2.2.22 BSS-MSC O 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_RR_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_RR_CAUSE, NULL);
+ /* Circuit Identity Code 3.2.2.2 BSS-MSC O (note 4) 3 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CIC].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC, NULL);
+ /* Cell Identifier 3.2.2.17 BSS-MSC O (note 1) 3-10 */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_CELL_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID, NULL);
+ /* Chosen Channel 3.2.2.33 BSS-MSC O (note 3) 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CHOSEN_CHAN].value, BSSAP_PDU_TYPE_BSSMAP, BE_CHOSEN_CHAN, NULL);
+ /* Chosen Encryption Algorithm 3.2.2.44 BSS-MSC O (note 5) 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CHOSEN_ENC_ALG].value, BSSAP_PDU_TYPE_BSSMAP, BE_CHOSEN_ENC_ALG, NULL);
+ /* Circuit Pool 3.2.2.45 BSS-MSC O (note 2) 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CCT_POOL].value, BSSAP_PDU_TYPE_BSSMAP, BE_CCT_POOL, NULL);
+ /* Speech Version (Chosen) 3.2.2.51 BSS-MSC O (note 6) 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_SPEECH_VER].value, BSSAP_PDU_TYPE_BSSMAP, BE_SPEECH_VER, " (Chosen)");
+ /* LSA Identifier 3.2.2.15 BSS-MSC O (note 7) 5 */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_LSA_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_LSA_ID, NULL);
+ /* Talker Priority 3.2.2.89 BSS-MSC O (note 8) 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_TALKER_PRI].value, BSSAP_PDU_TYPE_BSSMAP, BE_TALKER_PRI, NULL);
+ /* AoIP Transport Layer Address (BSS) 3.2.2.102 BSS-MSC O (note 9) 10-22 */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_AOIP_TRANS_LAY_ADD].value, BSSAP_PDU_TYPE_BSSMAP, BE_AOIP_TRANS_LAY_ADD, NULL);
+ /* Speech Codec (Chosen) 3.2.2.104 BSS-MSC O (note 10) 3-5 */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SPEECH_CODEC].value, BSSAP_PDU_TYPE_BSSMAP, BE_SPEECH_CODEC, "(Chosen)");
+
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
@@ -4231,27 +4231,27 @@ bssmap_ass_complete(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
static void
bssmap_ass_failure(tvbuff_t *tvb, proto_tree *tree, 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;
- /* Cause 3.2.2.5 BSS-MSC M 3-4 */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, NULL);
- /* RR Cause 3.2.2.22 BSS-MSC O 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_RR_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_RR_CAUSE, NULL);
- /* Circuit Pool 3.2.2.45 BSS-MSC O (note 1) 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CCT_POOL].value, BSSAP_PDU_TYPE_BSSMAP, BE_CCT_POOL, NULL);
- /* Circuit Pool List 3.2.2.46 BSS-MSC O (note 2) V */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_CCT_POOL_LIST].value, BSSAP_PDU_TYPE_BSSMAP, BE_CCT_POOL_LIST, NULL);
- /* Talker Priority 3.2.2.89 BSS-MSC O (note 3) 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_TALKER_PRI].value, BSSAP_PDU_TYPE_BSSMAP, BE_TALKER_PRI, NULL);
- /* Codec List (BSS Supported) 3.2.2.103 BSS-MSC O (note 4) 3-n */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SPEECH_CODEC_LST].value, BSSAP_PDU_TYPE_BSSMAP, BE_SPEECH_CODEC_LST, "(BSS Supported)");
+ /* Cause 3.2.2.5 BSS-MSC M 3-4 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, NULL);
+ /* RR Cause 3.2.2.22 BSS-MSC O 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_RR_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_RR_CAUSE, NULL);
+ /* Circuit Pool 3.2.2.45 BSS-MSC O (note 1) 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CCT_POOL].value, BSSAP_PDU_TYPE_BSSMAP, BE_CCT_POOL, NULL);
+ /* Circuit Pool List 3.2.2.46 BSS-MSC O (note 2) V */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_CCT_POOL_LIST].value, BSSAP_PDU_TYPE_BSSMAP, BE_CCT_POOL_LIST, NULL);
+ /* Talker Priority 3.2.2.89 BSS-MSC O (note 3) 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_TALKER_PRI].value, BSSAP_PDU_TYPE_BSSMAP, BE_TALKER_PRI, NULL);
+ /* Codec List (BSS Supported) 3.2.2.103 BSS-MSC O (note 4) 3-n */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SPEECH_CODEC_LST].value, BSSAP_PDU_TYPE_BSSMAP, BE_SPEECH_CODEC_LST, "(BSS Supported)");
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
@@ -4260,21 +4260,21 @@ bssmap_ass_failure(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
static void
bssmap_block(tvbuff_t *tvb, proto_tree *tree, 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;
- /* Circuit Identity Code 3.2.2.2 both M 3*/
- ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_CIC].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC, NULL);
- /* Cause 3.2.2.5 both M 3-4 */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, NULL);
- /* Connection Release Requested 3.2.2.3 MSC-BSS O 1 */
- ELEM_OPT_T(gsm_bssmap_elem_strings[BE_CONN_REL_REQ].value, BSSAP_PDU_TYPE_BSSMAP, BE_CONN_REL_REQ, NULL);
+ /* Circuit Identity Code 3.2.2.2 both M 3*/
+ ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_CIC].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC, NULL);
+ /* Cause 3.2.2.5 both M 3-4 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, NULL);
+ /* Connection Release Requested 3.2.2.3 MSC-BSS O 1 */
+ ELEM_OPT_T(gsm_bssmap_elem_strings[BE_CONN_REL_REQ].value, BSSAP_PDU_TYPE_BSSMAP, BE_CONN_REL_REQ, NULL);
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
@@ -4284,17 +4284,17 @@ bssmap_block(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
static void
bssmap_block_ack(tvbuff_t *tvb, proto_tree *tree, 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;
- /* Circuit Identity Code 3.2.2.2 both M 3 */
- ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_CIC].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC, NULL);
+ /* Circuit Identity Code 3.2.2.2 both M 3 */
+ ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_CIC].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC, NULL);
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
@@ -4303,17 +4303,17 @@ bssmap_block_ack(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
static void
bssmap_unblock(tvbuff_t *tvb, proto_tree *tree, 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;
- /* Circuit Identity Code 3.2.2.2 both M 3 */
- ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_CIC].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC, NULL);
+ /* Circuit Identity Code 3.2.2.2 both M 3 */
+ ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_CIC].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC, NULL);
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
@@ -4322,17 +4322,17 @@ bssmap_unblock(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
static void
bssmap_unblock_ack(tvbuff_t *tvb, proto_tree *tree, 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;
- /* Circuit Identity Code 3.2.2.2 both M 3 */
- ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_CIC].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC, NULL);
+ /* Circuit Identity Code 3.2.2.2 both M 3 */
+ ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_CIC].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC, NULL);
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
@@ -4341,79 +4341,79 @@ bssmap_unblock_ack(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
static void
bssmap_ho_req(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
-
- curr_offset = offset;
- curr_len = len;
-
- /* Channel Type 3.2.2.11 MSC-BSS M 5-13 */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CHAN_TYPE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CHAN_TYPE, NULL);
- /* Encryption Information 3.2.2.10 MSC-BSS M (note 1) 3-n */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_ENC_INFO].value, BSSAP_PDU_TYPE_BSSMAP, BE_ENC_INFO, NULL);
-
- /* Classmark Information 1 3.2.2.30 MSC-BSS M# 2
- * or
- * Classmark Information 2 3.2.2.19 MSC-BSS M (note 6) 4-5
- */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CM_INFO_1].value, BSSAP_PDU_TYPE_BSSMAP, BE_CM_INFO_1, NULL);
-
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_CM_INFO_2].value, BSSAP_PDU_TYPE_BSSMAP, BE_CM_INFO_2, NULL);
- /* Cell Identifier (Serving) 3.2.2.17 MSC-BSS M (note 20) 5-10 */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CELL_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID, " (Serving)");
- /* Priority 3.2.2.18 MSC-BSS O 3 */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_PRIO].value, BSSAP_PDU_TYPE_BSSMAP, BE_PRIO, NULL);
- /* Circuit Identity Code 3.2.2.2 MSC-BSS O (note 7, 28 3 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CIC].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC, NULL);
- /* Downlink DTX Flag 3.2.2.26 MSC-BSS O (note 3) 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_DOWN_DTX_FLAG].value, BSSAP_PDU_TYPE_BSSMAP, BE_DOWN_DTX_FLAG, NULL);
- /* Cell Identifier (Target) 3.2.2.17 MSC-BSS M (note 17) 3-10 */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CELL_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID, " (Target)");
- /* Interference Band To Be Used 3.2.2.21 MSC-BSS O 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_INT_BAND].value, BSSAP_PDU_TYPE_BSSMAP, BE_INT_BAND, NULL);
- /* Cause 3.2.2.5 MSC-BSS O (note 9) 3-4 */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, NULL);
- /* Classmark Information 3 3.2.2.20 MSC-BSS O (note 4) 3-34 */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_CM_INFO_3].value, BSSAP_PDU_TYPE_BSSMAP, BE_CM_INFO_3, NULL);
- /* Current Channel type 1 3.2.2.49 MSC-BSS O (note 8) 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CURR_CHAN_1].value, BSSAP_PDU_TYPE_BSSMAP, BE_CURR_CHAN_1, NULL);
- /* Speech Version (Used) 3.2.2.51 MSC-BSS O (note 10) 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_SPEECH_VER].value, BSSAP_PDU_TYPE_BSSMAP, BE_SPEECH_VER, " (Used)");
- /* Group Call Reference 3.2.2.55 MSC-BSS O (note 5) 7 */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_GROUP_CALL_REF].value, BSSAP_PDU_TYPE_BSSMAP, BE_GROUP_CALL_REF, NULL);
- /* Talker Flag 3.2.2.54 MSC-BSS O (note 11) 1 */
- ELEM_OPT_T(gsm_bssmap_elem_strings[BE_TALKER_FLAG].value, BSSAP_PDU_TYPE_BSSMAP, BE_TALKER_FLAG, NULL);
- /* Configuration Evolution Indication 3.2.2.57 MSC-BSS O (note 12) 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CONF_EVO_IND].value, BSSAP_PDU_TYPE_BSSMAP, BE_CONF_EVO_IND, NULL);
- /* Chosen Encryption Algorithm (Serving) 3.2.2.44 MSC-BSS O (note 2) 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CHOSEN_ENC_ALG].value, BSSAP_PDU_TYPE_BSSMAP, BE_CHOSEN_ENC_ALG, " (Serving)");
- /* Old BSS to New BSS Information 3.2.2.58 MSC-BSS O (note 13) 2-n */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_OLD2NEW_INFO].value, BSSAP_PDU_TYPE_BSSMAP, BE_OLD2NEW_INFO, NULL);
- /* LSA Information 3.2.2.23 MSC-BSS O (note 14) 3+4n */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_LSA_INFO].value, BSSAP_PDU_TYPE_BSSMAP, BE_LSA_INFO, NULL);
- /* LSA Access Control Suppression 3.2.2.61 MSC-BSS O (note 15) 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_LSA_ACC_CTRL].value, BSSAP_PDU_TYPE_BSSMAP, BE_LSA_ACC_CTRL, NULL);
- /* Service Handover 3.2.2.75 MSC-BSS O (note 21) 3 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_SERV_HO].value, BSSAP_PDU_TYPE_BSSMAP, BE_SERV_HO, NULL);
- /* IMSI 3.2.2.6 MSC-BSC O (note 16) 3-10 */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_IMSI].value, BSSAP_PDU_TYPE_BSSMAP, BE_IMSI, NULL);
- /* Source RNC to target RNC transparent information (UMTS) 3.2.2.76 MSC-BSS O (note 18) n-m */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SRC_RNC_TO_TAR_RNC_UMTS].value, BSSAP_PDU_TYPE_BSSMAP, BE_SRC_RNC_TO_TAR_RNC_UMTS, NULL);
- /* Source RNC to target RNC transparent information (cdma2000) 3.2.2.77 MSC-BSS O (note 19) n-m */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SRC_RNC_TO_TAR_RNC_CDMA].value, BSSAP_PDU_TYPE_BSSMAP, BE_SRC_RNC_TO_TAR_RNC_CDMA, NULL);
- /* SNA Access Information 3.2.2.82 MSC-BSC O (note 22) 2+n */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SNA_ACC_INF].value, BSSAP_PDU_TYPE_BSSMAP, BE_SNA_ACC_INF, NULL);
- /* Talker Priority 3.2.2.89 MSC-BSC O (note 23) 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_TALKER_PRI].value, BSSAP_PDU_TYPE_BSSMAP, BE_TALKER_PRI, NULL);
- /* AoIP Transport Layer Address (MGW) 3.2.2.102 MSC-BSS O (note 24) 10-22 */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_AOIP_TRANS_LAY_ADD].value, BSSAP_PDU_TYPE_BSSMAP, BE_AOIP_TRANS_LAY_ADD, NULL);
- /* Codec List (MSC Preferred) 3.2.2.103 MSC-BSS O (note 25) 3-n */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SPEECH_CODEC_LST].value, BSSAP_PDU_TYPE_BSSMAP, BE_SPEECH_CODEC_LST, "(MSC Preferred)");
- /* Call Identifier 3.2.2.105 MSC-BSS O (note 24) 5 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CALL_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_CALL_ID, NULL);
-
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
+
+ curr_offset = offset;
+ curr_len = len;
+
+ /* Channel Type 3.2.2.11 MSC-BSS M 5-13 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CHAN_TYPE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CHAN_TYPE, NULL);
+ /* Encryption Information 3.2.2.10 MSC-BSS M (note 1) 3-n */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_ENC_INFO].value, BSSAP_PDU_TYPE_BSSMAP, BE_ENC_INFO, NULL);
+
+ /* Classmark Information 1 3.2.2.30 MSC-BSS M# 2
+ * or
+ * Classmark Information 2 3.2.2.19 MSC-BSS M (note 6) 4-5
+ */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CM_INFO_1].value, BSSAP_PDU_TYPE_BSSMAP, BE_CM_INFO_1, NULL);
+
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_CM_INFO_2].value, BSSAP_PDU_TYPE_BSSMAP, BE_CM_INFO_2, NULL);
+ /* Cell Identifier (Serving) 3.2.2.17 MSC-BSS M (note 20) 5-10 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CELL_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID, " (Serving)");
+ /* Priority 3.2.2.18 MSC-BSS O 3 */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_PRIO].value, BSSAP_PDU_TYPE_BSSMAP, BE_PRIO, NULL);
+ /* Circuit Identity Code 3.2.2.2 MSC-BSS O (note 7, 28 3 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CIC].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC, NULL);
+ /* Downlink DTX Flag 3.2.2.26 MSC-BSS O (note 3) 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_DOWN_DTX_FLAG].value, BSSAP_PDU_TYPE_BSSMAP, BE_DOWN_DTX_FLAG, NULL);
+ /* Cell Identifier (Target) 3.2.2.17 MSC-BSS M (note 17) 3-10 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CELL_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID, " (Target)");
+ /* Interference Band To Be Used 3.2.2.21 MSC-BSS O 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_INT_BAND].value, BSSAP_PDU_TYPE_BSSMAP, BE_INT_BAND, NULL);
+ /* Cause 3.2.2.5 MSC-BSS O (note 9) 3-4 */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, NULL);
+ /* Classmark Information 3 3.2.2.20 MSC-BSS O (note 4) 3-34 */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_CM_INFO_3].value, BSSAP_PDU_TYPE_BSSMAP, BE_CM_INFO_3, NULL);
+ /* Current Channel type 1 3.2.2.49 MSC-BSS O (note 8) 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CURR_CHAN_1].value, BSSAP_PDU_TYPE_BSSMAP, BE_CURR_CHAN_1, NULL);
+ /* Speech Version (Used) 3.2.2.51 MSC-BSS O (note 10) 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_SPEECH_VER].value, BSSAP_PDU_TYPE_BSSMAP, BE_SPEECH_VER, " (Used)");
+ /* Group Call Reference 3.2.2.55 MSC-BSS O (note 5) 7 */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_GROUP_CALL_REF].value, BSSAP_PDU_TYPE_BSSMAP, BE_GROUP_CALL_REF, NULL);
+ /* Talker Flag 3.2.2.54 MSC-BSS O (note 11) 1 */
+ ELEM_OPT_T(gsm_bssmap_elem_strings[BE_TALKER_FLAG].value, BSSAP_PDU_TYPE_BSSMAP, BE_TALKER_FLAG, NULL);
+ /* Configuration Evolution Indication 3.2.2.57 MSC-BSS O (note 12) 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CONF_EVO_IND].value, BSSAP_PDU_TYPE_BSSMAP, BE_CONF_EVO_IND, NULL);
+ /* Chosen Encryption Algorithm (Serving) 3.2.2.44 MSC-BSS O (note 2) 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CHOSEN_ENC_ALG].value, BSSAP_PDU_TYPE_BSSMAP, BE_CHOSEN_ENC_ALG, " (Serving)");
+ /* Old BSS to New BSS Information 3.2.2.58 MSC-BSS O (note 13) 2-n */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_OLD2NEW_INFO].value, BSSAP_PDU_TYPE_BSSMAP, BE_OLD2NEW_INFO, NULL);
+ /* LSA Information 3.2.2.23 MSC-BSS O (note 14) 3+4n */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_LSA_INFO].value, BSSAP_PDU_TYPE_BSSMAP, BE_LSA_INFO, NULL);
+ /* LSA Access Control Suppression 3.2.2.61 MSC-BSS O (note 15) 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_LSA_ACC_CTRL].value, BSSAP_PDU_TYPE_BSSMAP, BE_LSA_ACC_CTRL, NULL);
+ /* Service Handover 3.2.2.75 MSC-BSS O (note 21) 3 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_SERV_HO].value, BSSAP_PDU_TYPE_BSSMAP, BE_SERV_HO, NULL);
+ /* IMSI 3.2.2.6 MSC-BSC O (note 16) 3-10 */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_IMSI].value, BSSAP_PDU_TYPE_BSSMAP, BE_IMSI, NULL);
+ /* Source RNC to target RNC transparent information (UMTS) 3.2.2.76 MSC-BSS O (note 18) n-m */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SRC_RNC_TO_TAR_RNC_UMTS].value, BSSAP_PDU_TYPE_BSSMAP, BE_SRC_RNC_TO_TAR_RNC_UMTS, NULL);
+ /* Source RNC to target RNC transparent information (cdma2000) 3.2.2.77 MSC-BSS O (note 19) n-m */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SRC_RNC_TO_TAR_RNC_CDMA].value, BSSAP_PDU_TYPE_BSSMAP, BE_SRC_RNC_TO_TAR_RNC_CDMA, NULL);
+ /* SNA Access Information 3.2.2.82 MSC-BSC O (note 22) 2+n */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SNA_ACC_INF].value, BSSAP_PDU_TYPE_BSSMAP, BE_SNA_ACC_INF, NULL);
+ /* Talker Priority 3.2.2.89 MSC-BSC O (note 23) 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_TALKER_PRI].value, BSSAP_PDU_TYPE_BSSMAP, BE_TALKER_PRI, NULL);
+ /* AoIP Transport Layer Address (MGW) 3.2.2.102 MSC-BSS O (note 24) 10-22 */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_AOIP_TRANS_LAY_ADD].value, BSSAP_PDU_TYPE_BSSMAP, BE_AOIP_TRANS_LAY_ADD, NULL);
+ /* Codec List (MSC Preferred) 3.2.2.103 MSC-BSS O (note 25) 3-n */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SPEECH_CODEC_LST].value, BSSAP_PDU_TYPE_BSSMAP, BE_SPEECH_CODEC_LST, "(MSC Preferred)");
+ /* Call Identifier 3.2.2.105 MSC-BSS O (note 24) 5 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CALL_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_CALL_ID, NULL);
+
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
@@ -4422,41 +4422,41 @@ bssmap_ho_req(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
static void
bssmap_ho_reqd(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
-
- curr_offset = offset;
- curr_len = len;
-
- /* Cause 3.2.2.5 BSS-MSC M 3-4 */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, NULL);
- /* Response Request 3.2.2.28 BSS-MSC O (note 8) 1 */
- ELEM_OPT_T(gsm_bssmap_elem_strings[BE_RESP_REQ].value, BSSAP_PDU_TYPE_BSSMAP, BE_RESP_REQ, NULL);
- /* Cell Identifier List (Preferred) 3.2.2.27 BSS-MSC M (note 4) 2n+3 to 7n+3 */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CELL_ID_LIST].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID_LIST, " (Preferred)");
- /* Circuit Pool List 3.2.2.46 BSS-MSC O (note 1) V */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_CCT_POOL_LIST].value, BSSAP_PDU_TYPE_BSSMAP, BE_CCT_POOL_LIST, NULL);
- /* Current Channel Type 1 3.2.2.49 BSS-MSC O (note 2) 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CURR_CHAN_1].value, BSSAP_PDU_TYPE_BSSMAP, BE_CURR_CHAN_1, NULL);
- /* Speech Version (Used) 3.2.2.51 BSS-MSC O (note 3) 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_SPEECH_VER].value, BSSAP_PDU_TYPE_BSSMAP, BE_SPEECH_VER, " (Used)");
- /* Queueing Indicator 3.2.2.50 BSS-MSC O 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_QUE_IND].value, BSSAP_PDU_TYPE_BSSMAP, BE_QUE_IND, NULL);
- /* Old BSS to New BSS Information 3.2.2.58 BSS-MSC O 2-n */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_OLD2NEW_INFO].value, BSSAP_PDU_TYPE_BSSMAP, BE_OLD2NEW_INFO, NULL);
- /* Source RNC to target RNC transparent information (UMTS) 3.2.2.76 BSS-MSC O (note 5) 3-m */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SRC_RNC_TO_TAR_RNC_UMTS].value, BSSAP_PDU_TYPE_BSSMAP, BE_SRC_RNC_TO_TAR_RNC_UMTS, NULL);
- /* Source RNC to target RNC transparent information (cdma2000) 3.2.2.77 BSS-MSC O (note 6) n-m */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SRC_RNC_TO_TAR_RNC_CDMA].value, BSSAP_PDU_TYPE_BSSMAP, BE_SRC_RNC_TO_TAR_RNC_CDMA, NULL);
- /* GERAN Classmark 3.2.2.78 BSS-MSC O (note 7) V */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_GERAN_CLS_M].value, BSSAP_PDU_TYPE_BSSMAP, BE_GERAN_CLS_M, NULL);
- /* Talker Priority 3.2.2.89 BSS-MSC O (note 9) 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_TALKER_PRI].value, BSSAP_PDU_TYPE_BSSMAP, BE_TALKER_PRI, NULL);
- /* Speech Codec (Used) 3.2.2.104 BSS-MSC O (note 10) 3-5 */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SPEECH_CODEC].value, BSSAP_PDU_TYPE_BSSMAP, BE_SPEECH_CODEC, "(Used)");
-
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
+
+ curr_offset = offset;
+ curr_len = len;
+
+ /* Cause 3.2.2.5 BSS-MSC M 3-4 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, NULL);
+ /* Response Request 3.2.2.28 BSS-MSC O (note 8) 1 */
+ ELEM_OPT_T(gsm_bssmap_elem_strings[BE_RESP_REQ].value, BSSAP_PDU_TYPE_BSSMAP, BE_RESP_REQ, NULL);
+ /* Cell Identifier List (Preferred) 3.2.2.27 BSS-MSC M (note 4) 2n+3 to 7n+3 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CELL_ID_LIST].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID_LIST, " (Preferred)");
+ /* Circuit Pool List 3.2.2.46 BSS-MSC O (note 1) V */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_CCT_POOL_LIST].value, BSSAP_PDU_TYPE_BSSMAP, BE_CCT_POOL_LIST, NULL);
+ /* Current Channel Type 1 3.2.2.49 BSS-MSC O (note 2) 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CURR_CHAN_1].value, BSSAP_PDU_TYPE_BSSMAP, BE_CURR_CHAN_1, NULL);
+ /* Speech Version (Used) 3.2.2.51 BSS-MSC O (note 3) 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_SPEECH_VER].value, BSSAP_PDU_TYPE_BSSMAP, BE_SPEECH_VER, " (Used)");
+ /* Queueing Indicator 3.2.2.50 BSS-MSC O 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_QUE_IND].value, BSSAP_PDU_TYPE_BSSMAP, BE_QUE_IND, NULL);
+ /* Old BSS to New BSS Information 3.2.2.58 BSS-MSC O 2-n */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_OLD2NEW_INFO].value, BSSAP_PDU_TYPE_BSSMAP, BE_OLD2NEW_INFO, NULL);
+ /* Source RNC to target RNC transparent information (UMTS) 3.2.2.76 BSS-MSC O (note 5) 3-m */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SRC_RNC_TO_TAR_RNC_UMTS].value, BSSAP_PDU_TYPE_BSSMAP, BE_SRC_RNC_TO_TAR_RNC_UMTS, NULL);
+ /* Source RNC to target RNC transparent information (cdma2000) 3.2.2.77 BSS-MSC O (note 6) n-m */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SRC_RNC_TO_TAR_RNC_CDMA].value, BSSAP_PDU_TYPE_BSSMAP, BE_SRC_RNC_TO_TAR_RNC_CDMA, NULL);
+ /* GERAN Classmark 3.2.2.78 BSS-MSC O (note 7) V */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_GERAN_CLS_M].value, BSSAP_PDU_TYPE_BSSMAP, BE_GERAN_CLS_M, NULL);
+ /* Talker Priority 3.2.2.89 BSS-MSC O (note 9) 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_TALKER_PRI].value, BSSAP_PDU_TYPE_BSSMAP, BE_TALKER_PRI, NULL);
+ /* Speech Codec (Used) 3.2.2.104 BSS-MSC O (note 10) 3-5 */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SPEECH_CODEC].value, BSSAP_PDU_TYPE_BSSMAP, BE_SPEECH_CODEC, "(Used)");
+
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
@@ -4465,41 +4465,41 @@ bssmap_ho_reqd(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
static void
bssmap_ho_req_ack(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
-
- curr_offset = offset;
- curr_len = len;
-
- /* Layer 3 Information 3.2.2.24 BSS-MSC M (note 1) 11-n */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_L3_INFO].value, BSSAP_PDU_TYPE_BSSMAP, BE_L3_INFO, NULL);
- /* Chosen Channel 3.2.2.33 BSS-MSC O (note 4) 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CHOSEN_CHAN].value, BSSAP_PDU_TYPE_BSSMAP, BE_CHOSEN_CHAN, NULL);
- /* Chosen Encryption Algorithm 3.2.2.44 BSS-MSC O (note 5) 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CHOSEN_ENC_ALG].value, BSSAP_PDU_TYPE_BSSMAP, BE_CHOSEN_ENC_ALG, NULL);
- /* Circuit Pool 3.2.2.45 BSS-MSC O (note 2) 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CCT_POOL].value, BSSAP_PDU_TYPE_BSSMAP, BE_CCT_POOL, NULL);
- /* Speech Version (Chosen) 3.2.2.51 BSS-MSC O (note 6) 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_SPEECH_VER].value, BSSAP_PDU_TYPE_BSSMAP, BE_SPEECH_VER, " (Chosen)");
- /* Circuit Identity Code 3.2.2.2 BSS-MSC O (note 3) 3 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CIC].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC, NULL);
- /* LSA Identifier 3.2.2.15 BSS-MSC O (note 7) 5 */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_LSA_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_LSA_ID, NULL);
- /* New BSS to Old BSS Information 3.2.2.80 BSS-MSC O (note 8) 2-n */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_NEW_BSS_TO_OLD_BSS_INF].value, BSSAP_PDU_TYPE_BSSMAP, BE_NEW_BSS_TO_OLD_BSS_INF, NULL);
- /* Inter-System Information 3.2.2.81 BSS-MSC O (note 9) 2-n */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_INTER_SYS_INF].value, BSSAP_PDU_TYPE_BSSMAP, BE_INTER_SYS_INF, NULL);
- /* Talker Priority 3.2.2.89 BSS-MSC O (note 10) 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_TALKER_PRI].value, BSSAP_PDU_TYPE_BSSMAP, BE_TALKER_PRI, NULL);
- /* AoIP Transport Layer Address (BSS) 3.2.2.102 BSS-MSC O (note 11) 10-22 */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_AOIP_TRANS_LAY_ADD].value, BSSAP_PDU_TYPE_BSSMAP, BE_AOIP_TRANS_LAY_ADD, NULL);
- /* Codec List (BSS Supported) 3.2.2.103 BSS-MSC O (note 12) 3-n */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SPEECH_CODEC_LST].value, BSSAP_PDU_TYPE_BSSMAP, BE_SPEECH_CODEC_LST, "(BSS Supported)");
- /* Speech Codec (Chosen) 3.2.2.104 BSS-MSC O (note 12) 3-5 */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SPEECH_CODEC].value, BSSAP_PDU_TYPE_BSSMAP, BE_SPEECH_CODEC, "(Chosen)");
-
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
+
+ curr_offset = offset;
+ curr_len = len;
+
+ /* Layer 3 Information 3.2.2.24 BSS-MSC M (note 1) 11-n */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_L3_INFO].value, BSSAP_PDU_TYPE_BSSMAP, BE_L3_INFO, NULL);
+ /* Chosen Channel 3.2.2.33 BSS-MSC O (note 4) 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CHOSEN_CHAN].value, BSSAP_PDU_TYPE_BSSMAP, BE_CHOSEN_CHAN, NULL);
+ /* Chosen Encryption Algorithm 3.2.2.44 BSS-MSC O (note 5) 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CHOSEN_ENC_ALG].value, BSSAP_PDU_TYPE_BSSMAP, BE_CHOSEN_ENC_ALG, NULL);
+ /* Circuit Pool 3.2.2.45 BSS-MSC O (note 2) 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CCT_POOL].value, BSSAP_PDU_TYPE_BSSMAP, BE_CCT_POOL, NULL);
+ /* Speech Version (Chosen) 3.2.2.51 BSS-MSC O (note 6) 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_SPEECH_VER].value, BSSAP_PDU_TYPE_BSSMAP, BE_SPEECH_VER, " (Chosen)");
+ /* Circuit Identity Code 3.2.2.2 BSS-MSC O (note 3) 3 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CIC].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC, NULL);
+ /* LSA Identifier 3.2.2.15 BSS-MSC O (note 7) 5 */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_LSA_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_LSA_ID, NULL);
+ /* New BSS to Old BSS Information 3.2.2.80 BSS-MSC O (note 8) 2-n */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_NEW_BSS_TO_OLD_BSS_INF].value, BSSAP_PDU_TYPE_BSSMAP, BE_NEW_BSS_TO_OLD_BSS_INF, NULL);
+ /* Inter-System Information 3.2.2.81 BSS-MSC O (note 9) 2-n */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_INTER_SYS_INF].value, BSSAP_PDU_TYPE_BSSMAP, BE_INTER_SYS_INF, NULL);
+ /* Talker Priority 3.2.2.89 BSS-MSC O (note 10) 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_TALKER_PRI].value, BSSAP_PDU_TYPE_BSSMAP, BE_TALKER_PRI, NULL);
+ /* AoIP Transport Layer Address (BSS) 3.2.2.102 BSS-MSC O (note 11) 10-22 */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_AOIP_TRANS_LAY_ADD].value, BSSAP_PDU_TYPE_BSSMAP, BE_AOIP_TRANS_LAY_ADD, NULL);
+ /* Codec List (BSS Supported) 3.2.2.103 BSS-MSC O (note 12) 3-n */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SPEECH_CODEC_LST].value, BSSAP_PDU_TYPE_BSSMAP, BE_SPEECH_CODEC_LST, "(BSS Supported)");
+ /* Speech Codec (Chosen) 3.2.2.104 BSS-MSC O (note 12) 3-5 */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SPEECH_CODEC].value, BSSAP_PDU_TYPE_BSSMAP, BE_SPEECH_CODEC, "(Chosen)");
+
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
@@ -4508,23 +4508,23 @@ bssmap_ho_req_ack(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
static void
bssmap_ho_cmd(tvbuff_t *tvb, proto_tree *tree, 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;
- /* Layer 3 Information 3.2.2.24 MSC-BSS M (note 1) 11-n */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_L3_INFO].value, BSSAP_PDU_TYPE_BSSMAP, BE_L3_INFO, NULL);
- /* Cell Identifier 3.2.2.17 MSC-BSS O 3-10 */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_CELL_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID, NULL);
- /* New BSS to Old BSS Information 3.2.2.80 MSC-BSS O (note 2) 2-n */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_NEW_BSS_TO_OLD_BSS_INF].value, BSSAP_PDU_TYPE_BSSMAP, BE_NEW_BSS_TO_OLD_BSS_INF, NULL);
- /* Talker Priority 3.2.2.89 MSC-BSS O (note 3) 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_TALKER_PRI].value, BSSAP_PDU_TYPE_BSSMAP, BE_TALKER_PRI, NULL);
+ /* Layer 3 Information 3.2.2.24 MSC-BSS M (note 1) 11-n */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_L3_INFO].value, BSSAP_PDU_TYPE_BSSMAP, BE_L3_INFO, NULL);
+ /* Cell Identifier 3.2.2.17 MSC-BSS O 3-10 */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_CELL_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID, NULL);
+ /* New BSS to Old BSS Information 3.2.2.80 MSC-BSS O (note 2) 2-n */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_NEW_BSS_TO_OLD_BSS_INF].value, BSSAP_PDU_TYPE_BSSMAP, BE_NEW_BSS_TO_OLD_BSS_INF, NULL);
+ /* Talker Priority 3.2.2.89 MSC-BSS O (note 3) 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_TALKER_PRI].value, BSSAP_PDU_TYPE_BSSMAP, BE_TALKER_PRI, NULL);
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
@@ -4533,40 +4533,40 @@ bssmap_ho_cmd(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
static void
bssmap_ho_complete(tvbuff_t *tvb, proto_tree *tree, 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;
- /* RR Cause 3.2.2.22 BSS-MSC O 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_RR_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_RR_CAUSE, NULL);
- /* Talker Priority 3.2.2.89 BSS-MSC O (note 1) 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_TALKER_PRI].value, BSSAP_PDU_TYPE_BSSMAP, BE_TALKER_PRI, NULL);
- /* Speech Codec (Chosen) 3.2.2.nn BSS-MSC O (note 2) 3-5 */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SPEECH_CODEC].value, BSSAP_PDU_TYPE_BSSMAP, BE_SPEECH_CODEC, "(Chosen)");
+ /* RR Cause 3.2.2.22 BSS-MSC O 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_RR_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_RR_CAUSE, NULL);
+ /* Talker Priority 3.2.2.89 BSS-MSC O (note 1) 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_TALKER_PRI].value, BSSAP_PDU_TYPE_BSSMAP, BE_TALKER_PRI, NULL);
+ /* Speech Codec (Chosen) 3.2.2.nn BSS-MSC O (note 2) 3-5 */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SPEECH_CODEC].value, BSSAP_PDU_TYPE_BSSMAP, BE_SPEECH_CODEC, "(Chosen)");
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
- * 3.2.1.13 HANDOVER SUCCEEDED
+ * 3.2.1.13 HANDOVER SUCCEEDED
*/
static void
bssmap_ho_succ(tvbuff_t *tvb, proto_tree *tree, 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;
- /* Talker Priority 3.2.2.89 MSC-BSS O (note 1) 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_TALKER_PRI].value, BSSAP_PDU_TYPE_BSSMAP, BE_TALKER_PRI, NULL);
+ /* Talker Priority 3.2.2.89 MSC-BSS O (note 1) 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_TALKER_PRI].value, BSSAP_PDU_TYPE_BSSMAP, BE_TALKER_PRI, NULL);
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
@@ -4575,23 +4575,23 @@ bssmap_ho_succ(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
static void
bssmap_ho_cand_enq(tvbuff_t *tvb, proto_tree *tree, 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;
- /* Number Of Mss 3.2.2.8 MSC-BSS M 2 */
- ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_NUM_MS].value, BSSAP_PDU_TYPE_BSSMAP, BE_NUM_MS, NULL);
+ /* Number Of Mss 3.2.2.8 MSC-BSS M 2 */
+ ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_NUM_MS].value, BSSAP_PDU_TYPE_BSSMAP, BE_NUM_MS, NULL);
- /* Cell Identifier List 3.2.2.27 MSC-BSS M 2n+3 to 7n+3 */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CELL_ID_LIST].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID_LIST, NULL);
+ /* Cell Identifier List 3.2.2.27 MSC-BSS M 2n+3 to 7n+3 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CELL_ID_LIST].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID_LIST, NULL);
- /* Cell Identifier 3.2.2.17 MSC-BSS M 3-10 */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CELL_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID, NULL);
+ /* Cell Identifier 3.2.2.17 MSC-BSS M 3-10 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CELL_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID, NULL);
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
@@ -4600,20 +4600,20 @@ bssmap_ho_cand_enq(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
static void
bssmap_ho_cand_resp(tvbuff_t *tvb, proto_tree *tree, 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;
- /* Number Of Mss 3.2.2.8 BSS-MSC M 2 */
- ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_NUM_MS].value, BSSAP_PDU_TYPE_BSSMAP, BE_NUM_MS, NULL);
+ /* Number Of Mss 3.2.2.8 BSS-MSC M 2 */
+ ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_NUM_MS].value, BSSAP_PDU_TYPE_BSSMAP, BE_NUM_MS, NULL);
- /* Cell Identifier 3.2.2.17 BSS-MSC M 3-10 */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CELL_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID, NULL);
+ /* Cell Identifier 3.2.2.17 BSS-MSC M 3-10 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CELL_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID, NULL);
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
@@ -4622,83 +4622,83 @@ bssmap_ho_cand_resp(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
static void
bssmap_ho_failure(tvbuff_t *tvb, proto_tree *tree, 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;
- /* Cause 3.2.2.5 BSS-MSC M 3-4 */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, NULL);
- /* RR Cause 3.2.2.22 BSS-MSC O 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_RR_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_RR_CAUSE, NULL);
- /* Circuit Pool 3.2.2.45 BSS-MSC O (note 1) 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CCT_POOL].value, BSSAP_PDU_TYPE_BSSMAP, BE_CCT_POOL, NULL);
- /* Circuit Pool List 3.2.2.46 BSS-MSC O (note 2) V */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_CCT_POOL_LIST].value, BSSAP_PDU_TYPE_BSSMAP, BE_CCT_POOL_LIST, NULL);
- /* GERAN Classmark 3.2.2.78 BSS-MSC O (note 3) V */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_GERAN_CLS_M].value, BSSAP_PDU_TYPE_BSSMAP, BE_GERAN_CLS_M, NULL);
- /* New BSS to Old BSS Information 3.2.2.80 BSS-MSC O (note 4) 2-n */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_NEW_BSS_TO_OLD_BSS_INF].value, BSSAP_PDU_TYPE_BSSMAP, BE_NEW_BSS_TO_OLD_BSS_INF, NULL);
- /* Inter-System Information 3.2.2.81 BSS-MSC O (note 5) 2-n */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_INTER_SYS_INF].value, BSSAP_PDU_TYPE_BSSMAP, BE_INTER_SYS_INF, NULL);
- /* Talker Priority 3.2.2.89 BSS-MSC O (note 6) 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_TALKER_PRI].value, BSSAP_PDU_TYPE_BSSMAP, BE_TALKER_PRI, NULL);
- /* Codec List (BSS Supported) 3.2.2.103 BSS-MSC O (note 7) 3-n */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SPEECH_CODEC_LST].value, BSSAP_PDU_TYPE_BSSMAP, BE_SPEECH_CODEC_LST, "(BSS Supported)");
+ /* Cause 3.2.2.5 BSS-MSC M 3-4 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, NULL);
+ /* RR Cause 3.2.2.22 BSS-MSC O 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_RR_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_RR_CAUSE, NULL);
+ /* Circuit Pool 3.2.2.45 BSS-MSC O (note 1) 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CCT_POOL].value, BSSAP_PDU_TYPE_BSSMAP, BE_CCT_POOL, NULL);
+ /* Circuit Pool List 3.2.2.46 BSS-MSC O (note 2) V */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_CCT_POOL_LIST].value, BSSAP_PDU_TYPE_BSSMAP, BE_CCT_POOL_LIST, NULL);
+ /* GERAN Classmark 3.2.2.78 BSS-MSC O (note 3) V */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_GERAN_CLS_M].value, BSSAP_PDU_TYPE_BSSMAP, BE_GERAN_CLS_M, NULL);
+ /* New BSS to Old BSS Information 3.2.2.80 BSS-MSC O (note 4) 2-n */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_NEW_BSS_TO_OLD_BSS_INF].value, BSSAP_PDU_TYPE_BSSMAP, BE_NEW_BSS_TO_OLD_BSS_INF, NULL);
+ /* Inter-System Information 3.2.2.81 BSS-MSC O (note 5) 2-n */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_INTER_SYS_INF].value, BSSAP_PDU_TYPE_BSSMAP, BE_INTER_SYS_INF, NULL);
+ /* Talker Priority 3.2.2.89 BSS-MSC O (note 6) 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_TALKER_PRI].value, BSSAP_PDU_TYPE_BSSMAP, BE_TALKER_PRI, NULL);
+ /* Codec List (BSS Supported) 3.2.2.103 BSS-MSC O (note 7) 3-n */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SPEECH_CODEC_LST].value, BSSAP_PDU_TYPE_BSSMAP, BE_SPEECH_CODEC_LST, "(BSS Supported)");
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
- * 3.2.1.17 RESOURCE REQUEST
+ * 3.2.1.17 RESOURCE REQUEST
*/
static void
bssmap_res_req(tvbuff_t *tvb, proto_tree *tree, 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;
- /* Periodicity 3.2.2.12 MSC-BSS M 2 */
- ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_PERIODICITY].value, BSSAP_PDU_TYPE_BSSMAP, BE_PERIODICITY, NULL);
- /* Resource Indication Method 3.2.2.29 MSC-BSS M 2 */
- ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_RES_IND_METHOD].value, BSSAP_PDU_TYPE_BSSMAP, BE_RES_IND_METHOD, NULL);
- /* Cell Identifier 3.2.2.17 MSC-BSS M 3-10 */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CELL_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID, NULL);
- /* Extended Resource Indicator 3.2.2.13 MSC-BSS O 2 */
- ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_EXT_RES_IND].value, BSSAP_PDU_TYPE_BSSMAP, BE_EXT_RES_IND, NULL);
+ /* Periodicity 3.2.2.12 MSC-BSS M 2 */
+ ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_PERIODICITY].value, BSSAP_PDU_TYPE_BSSMAP, BE_PERIODICITY, NULL);
+ /* Resource Indication Method 3.2.2.29 MSC-BSS M 2 */
+ ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_RES_IND_METHOD].value, BSSAP_PDU_TYPE_BSSMAP, BE_RES_IND_METHOD, NULL);
+ /* Cell Identifier 3.2.2.17 MSC-BSS M 3-10 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CELL_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID, NULL);
+ /* Extended Resource Indicator 3.2.2.13 MSC-BSS O 2 */
+ ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_EXT_RES_IND].value, BSSAP_PDU_TYPE_BSSMAP, BE_EXT_RES_IND, NULL);
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
- * 3.2.1.18 RESOURCE INDICATION
+ * 3.2.1.18 RESOURCE INDICATION
*/
static void
bssmap_res_ind(tvbuff_t *tvb, proto_tree *tree, 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;
- /* Resource Indication Method 3.2.2.29 BSS-MSC M 2 */
- ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_RES_IND_METHOD].value, BSSAP_PDU_TYPE_BSSMAP, BE_RES_IND_METHOD, NULL);
- /* Resource Available 3.2.2.4 BSS-MSC O (note 1) 21 */
- ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_RES_AVAIL].value, BSSAP_PDU_TYPE_BSSMAP, BE_RES_AVAIL, NULL);
- /* Cell Identifier 3.2.2.17 BSS-MSC M 3-10 */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CELL_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID, NULL);
- /* Total Resource Accessible 3.2.2.14 BSS-MSC O (note 2) 5 */
- ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_TOT_RES_ACC].value, BSSAP_PDU_TYPE_BSSMAP, BE_TOT_RES_ACC, NULL);
+ /* Resource Indication Method 3.2.2.29 BSS-MSC M 2 */
+ ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_RES_IND_METHOD].value, BSSAP_PDU_TYPE_BSSMAP, BE_RES_IND_METHOD, NULL);
+ /* Resource Available 3.2.2.4 BSS-MSC O (note 1) 21 */
+ ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_RES_AVAIL].value, BSSAP_PDU_TYPE_BSSMAP, BE_RES_AVAIL, NULL);
+ /* Cell Identifier 3.2.2.17 BSS-MSC M 3-10 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CELL_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID, NULL);
+ /* Total Resource Accessible 3.2.2.14 BSS-MSC O (note 2) 5 */
+ ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_TOT_RES_ACC].value, BSSAP_PDU_TYPE_BSSMAP, BE_TOT_RES_ACC, NULL);
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
* [2] 3.2.1.19 PAGING
@@ -4706,27 +4706,27 @@ bssmap_res_ind(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
static void
bssmap_paging(tvbuff_t *tvb, proto_tree *tree, 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;
- /* IMSI 3.2.2.6 MSC-BSS M 3-10 */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_IMSI].value, BSSAP_PDU_TYPE_BSSMAP, BE_IMSI, NULL);
- /* TMSI 3.2.2.7 MSC-BSS O (note 1) 6 */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_TMSI].value, BSSAP_PDU_TYPE_BSSMAP, BE_TMSI, NULL);
- /* Cell Identifier List 3.2.2.27 MSC-BSS M 3 to 3+7n */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CELL_ID_LIST].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID_LIST, NULL);
- /* Channel Needed 3.2.2.36 MSC-BSS O (note 2) 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CHAN_NEEDED].value, BSSAP_PDU_TYPE_BSSMAP, BE_CHAN_NEEDED, NULL);
- /* eMLPP Priority 3.2.2.56 MSC-BSS O (note 3) 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_EMLPP_PRIO].value, BSSAP_PDU_TYPE_BSSMAP, BE_EMLPP_PRIO, NULL);
- /* Paging Information 3.2.2.85 MSC-BSS O 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_PAGING_INF].value, BSSAP_PDU_TYPE_BSSMAP, BE_PAGING_INF, NULL);
+ /* IMSI 3.2.2.6 MSC-BSS M 3-10 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_IMSI].value, BSSAP_PDU_TYPE_BSSMAP, BE_IMSI, NULL);
+ /* TMSI 3.2.2.7 MSC-BSS O (note 1) 6 */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_TMSI].value, BSSAP_PDU_TYPE_BSSMAP, BE_TMSI, NULL);
+ /* Cell Identifier List 3.2.2.27 MSC-BSS M 3 to 3+7n */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CELL_ID_LIST].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID_LIST, NULL);
+ /* Channel Needed 3.2.2.36 MSC-BSS O (note 2) 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CHAN_NEEDED].value, BSSAP_PDU_TYPE_BSSMAP, BE_CHAN_NEEDED, NULL);
+ /* eMLPP Priority 3.2.2.56 MSC-BSS O (note 3) 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_EMLPP_PRIO].value, BSSAP_PDU_TYPE_BSSMAP, BE_EMLPP_PRIO, NULL);
+ /* Paging Information 3.2.2.85 MSC-BSS O 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_PAGING_INF].value, BSSAP_PDU_TYPE_BSSMAP, BE_PAGING_INF, NULL);
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
@@ -4735,17 +4735,17 @@ bssmap_paging(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
static void
bssmap_clear_req(tvbuff_t *tvb, proto_tree *tree, 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;
- /* Cause 3.2.2.5 BSS-MSC M 3-4 */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, NULL);
+ /* Cause 3.2.2.5 BSS-MSC M 3-4 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, NULL);
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
@@ -4754,22 +4754,22 @@ bssmap_clear_req(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
static void
bssmap_clear_cmd(tvbuff_t *tvb, proto_tree *tree, 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;
- /* Layer 3 Header Information 3.2.2.9 MSC-BSS O (note) 4 */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_L3_HEADER_INFO].value, BSSAP_PDU_TYPE_BSSMAP, BE_L3_HEADER_INFO, NULL);
- /* Cause 3.2.2.5 MSC-BSS M 3-4 */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, NULL);
+ /* Layer 3 Header Information 3.2.2.9 MSC-BSS O (note) 4 */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_L3_HEADER_INFO].value, BSSAP_PDU_TYPE_BSSMAP, BE_L3_HEADER_INFO, NULL);
+ /* Cause 3.2.2.5 MSC-BSS M 3-4 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, NULL);
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
- * 3.2.1.22 CLEAR COMPLETE
+ * 3.2.1.22 CLEAR COMPLETE
* No data
*/
@@ -4779,21 +4779,21 @@ bssmap_clear_cmd(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
void
bssmap_reset(tvbuff_t *tvb, proto_tree *tree, 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;
- /* Cause 3.2.2.5 Both M 3-4 */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, NULL);
+ /* Cause 3.2.2.5 Both M 3-4 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, NULL);
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
- * 3.2.1.24 RESET ACKNOWLEDGE
+ * 3.2.1.24 RESET ACKNOWLEDGE
* No data
*/
/*
@@ -4802,33 +4802,33 @@ bssmap_reset(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
static void
bssmap_ho_performed(tvbuff_t *tvb, proto_tree *tree, 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;
- /* Cause 3.2.2.5 BSS-MSC M 3-4 */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, NULL);
- /* Cell Identifier 3.2.2.17 BSS-MSC M (note 5) 3-10 */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CELL_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID, NULL);
- /* Chosen Channel 3.2.2.33 BSS-MSC O (note 1) 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CHOSEN_CHAN].value, BSSAP_PDU_TYPE_BSSMAP, BE_CHOSEN_CHAN, NULL);
- /* Chosen Encryption Algorithm 3.2.2.44 BSS-MSC O (note 2) 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CHOSEN_ENC_ALG].value, BSSAP_PDU_TYPE_BSSMAP, BE_CHOSEN_ENC_ALG, NULL);
- /* Speech Version (Chosen) 3.2.2.51 BSS-MSC O (note 3) 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_SPEECH_VER].value, BSSAP_PDU_TYPE_BSSMAP, BE_SPEECH_VER, " (Chosen)");
- /* LSA Identifier 3.2.2.15 BSS-MSC O (note 4) 5 */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_LSA_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_LSA_ID, NULL);
- /* Talker Priority 3.2.2.89 BSS-MSC O (note 6) 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_TALKER_PRI].value, BSSAP_PDU_TYPE_BSSMAP, BE_TALKER_PRI, NULL);
- /* Codec List (BSS Supported) (serving cell) 3.2.2.103 BSS-MSC O (note 7) 3-n */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SPEECH_CODEC_LST].value, BSSAP_PDU_TYPE_BSSMAP, BE_SPEECH_CODEC_LST, "(BSS Supported)");
- /* Speech Codec (Chosen) 3.2.2.104 BSS-MSC O (note 8) 3-5 */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SPEECH_CODEC].value, BSSAP_PDU_TYPE_BSSMAP, BE_SPEECH_CODEC, "(Chosen)");
+ /* Cause 3.2.2.5 BSS-MSC M 3-4 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, NULL);
+ /* Cell Identifier 3.2.2.17 BSS-MSC M (note 5) 3-10 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CELL_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID, NULL);
+ /* Chosen Channel 3.2.2.33 BSS-MSC O (note 1) 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CHOSEN_CHAN].value, BSSAP_PDU_TYPE_BSSMAP, BE_CHOSEN_CHAN, NULL);
+ /* Chosen Encryption Algorithm 3.2.2.44 BSS-MSC O (note 2) 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CHOSEN_ENC_ALG].value, BSSAP_PDU_TYPE_BSSMAP, BE_CHOSEN_ENC_ALG, NULL);
+ /* Speech Version (Chosen) 3.2.2.51 BSS-MSC O (note 3) 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_SPEECH_VER].value, BSSAP_PDU_TYPE_BSSMAP, BE_SPEECH_VER, " (Chosen)");
+ /* LSA Identifier 3.2.2.15 BSS-MSC O (note 4) 5 */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_LSA_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_LSA_ID, NULL);
+ /* Talker Priority 3.2.2.89 BSS-MSC O (note 6) 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_TALKER_PRI].value, BSSAP_PDU_TYPE_BSSMAP, BE_TALKER_PRI, NULL);
+ /* Codec List (BSS Supported) (serving cell) 3.2.2.103 BSS-MSC O (note 7) 3-n */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SPEECH_CODEC_LST].value, BSSAP_PDU_TYPE_BSSMAP, BE_SPEECH_CODEC_LST, "(BSS Supported)");
+ /* Speech Codec (Chosen) 3.2.2.104 BSS-MSC O (note 8) 3-5 */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SPEECH_CODEC].value, BSSAP_PDU_TYPE_BSSMAP, BE_SPEECH_CODEC, "(Chosen)");
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
@@ -4837,76 +4837,76 @@ bssmap_ho_performed(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
static void
bssmap_overload(tvbuff_t *tvb, proto_tree *tree, 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;
- /* Cause 3.2.2.5 Both M 3-4 */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, NULL);
- /* Cell Identifier 3.2.2.17 BSS-MSC O 3-10 */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_CELL_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID, NULL);
+ /* Cause 3.2.2.5 Both M 3-4 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, NULL);
+ /* Cell Identifier 3.2.2.17 BSS-MSC O 3-10 */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_CELL_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID, NULL);
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
- * 3.2.1.27 MSC INVOKE TRACE
+ * 3.2.1.27 MSC INVOKE TRACE
*/
static void
bssmap_msc_invoke_trace(tvbuff_t *tvb, proto_tree *tree, 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;
/* Trace Type 3.2.2.37 MSC-BSS M 2 */
- ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_TRACE_TYPE].value, BSSAP_PDU_TYPE_BSSMAP, BE_TRACE_TYPE, NULL);
- /* Triggerid 3.2.2.38 MSC-BSS O 3-22 */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_TRIGGERID].value, BSSAP_PDU_TYPE_BSSMAP, BE_TRIGGERID, NULL);
- /* Trace Reference 3.2.2.39 MSC-BSS M 3 */
- ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_TRACE_REF].value, BSSAP_PDU_TYPE_BSSMAP, BE_TRACE_REF, NULL);
- /* Transactionid 3.2.2.40 MSC-BSS O 4 */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_TRANSID].value, BSSAP_PDU_TYPE_BSSMAP, BE_TRANSID, NULL);
- /* Mobile Identity 3.2.2.41 MSC-BSS O 3-10 */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_MID].value, BSSAP_PDU_TYPE_BSSMAP, BE_MID, NULL);
- /* OMCId 3.2.2.42 MSC-BSS O 3-22 */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_OMCID].value, BSSAP_PDU_TYPE_BSSMAP, BE_OMCID, NULL);
-
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_TRACE_TYPE].value, BSSAP_PDU_TYPE_BSSMAP, BE_TRACE_TYPE, NULL);
+ /* Triggerid 3.2.2.38 MSC-BSS O 3-22 */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_TRIGGERID].value, BSSAP_PDU_TYPE_BSSMAP, BE_TRIGGERID, NULL);
+ /* Trace Reference 3.2.2.39 MSC-BSS M 3 */
+ ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_TRACE_REF].value, BSSAP_PDU_TYPE_BSSMAP, BE_TRACE_REF, NULL);
+ /* Transactionid 3.2.2.40 MSC-BSS O 4 */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_TRANSID].value, BSSAP_PDU_TYPE_BSSMAP, BE_TRANSID, NULL);
+ /* Mobile Identity 3.2.2.41 MSC-BSS O 3-10 */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_MID].value, BSSAP_PDU_TYPE_BSSMAP, BE_MID, NULL);
+ /* OMCId 3.2.2.42 MSC-BSS O 3-22 */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_OMCID].value, BSSAP_PDU_TYPE_BSSMAP, BE_OMCID, NULL);
+
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
- * 3.2.1.28 BSS INVOKE TRACE
+ * 3.2.1.28 BSS INVOKE TRACE
*/
static void
bssmap_bss_invoke_trace(tvbuff_t *tvb, proto_tree *tree, 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;
- /* Trace Type 3.2.2.37 Both M 2 */
- ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_TRACE_TYPE].value, BSSAP_PDU_TYPE_BSSMAP, BE_TRACE_TYPE, NULL);
- /* Forward Indicator 3.2.2.43 Both O 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_FOR_IND].value, BSSAP_PDU_TYPE_BSSMAP, BE_FOR_IND, NULL);
- /* Triggerid 3.2.2.38 Both O 3-22 */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_TRIGGERID].value, BSSAP_PDU_TYPE_BSSMAP, BE_TRIGGERID, NULL);
- /* Trace Reference 3.2.2.39 Both M 3 */
- ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_TRACE_REF].value, BSSAP_PDU_TYPE_BSSMAP, BE_TRACE_REF, NULL);
- /* TransactionId 3.2.2.40 Both O 4 */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_TRANSID].value, BSSAP_PDU_TYPE_BSSMAP, BE_TRANSID, NULL);
- /* OMCId 3.2.2.42 Both O 3-22 */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_OMCID].value, BSSAP_PDU_TYPE_BSSMAP, BE_OMCID, NULL);
-
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ /* Trace Type 3.2.2.37 Both M 2 */
+ ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_TRACE_TYPE].value, BSSAP_PDU_TYPE_BSSMAP, BE_TRACE_TYPE, NULL);
+ /* Forward Indicator 3.2.2.43 Both O 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_FOR_IND].value, BSSAP_PDU_TYPE_BSSMAP, BE_FOR_IND, NULL);
+ /* Triggerid 3.2.2.38 Both O 3-22 */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_TRIGGERID].value, BSSAP_PDU_TYPE_BSSMAP, BE_TRIGGERID, NULL);
+ /* Trace Reference 3.2.2.39 Both M 3 */
+ ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_TRACE_REF].value, BSSAP_PDU_TYPE_BSSMAP, BE_TRACE_REF, NULL);
+ /* TransactionId 3.2.2.40 Both O 4 */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_TRANSID].value, BSSAP_PDU_TYPE_BSSMAP, BE_TRANSID, NULL);
+ /* OMCId 3.2.2.42 Both O 3-22 */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_OMCID].value, BSSAP_PDU_TYPE_BSSMAP, BE_OMCID, NULL);
+
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
@@ -4915,21 +4915,21 @@ bssmap_bss_invoke_trace(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint l
static void
bssmap_cm_upd(tvbuff_t *tvb, proto_tree *tree, 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;
- /* Classmark Information Type 2 3.2.2.19 Both M 4-5 */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CM_INFO_2].value, BSSAP_PDU_TYPE_BSSMAP, BE_CM_INFO_2, NULL);
- /* Classmark Information Type 3 3.2.2.20 Both O (note 1) 3-34 */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_CM_INFO_3].value, BSSAP_PDU_TYPE_BSSMAP, BE_CM_INFO_3, NULL);
- /* Talker Priority 3.2.2.89 Both O (note 2) 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_TALKER_PRI].value, BSSAP_PDU_TYPE_BSSMAP, BE_TALKER_PRI, NULL);
+ /* Classmark Information Type 2 3.2.2.19 Both M 4-5 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CM_INFO_2].value, BSSAP_PDU_TYPE_BSSMAP, BE_CM_INFO_2, NULL);
+ /* Classmark Information Type 3 3.2.2.20 Both O (note 1) 3-34 */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_CM_INFO_3].value, BSSAP_PDU_TYPE_BSSMAP, BE_CM_INFO_3, NULL);
+ /* Talker Priority 3.2.2.89 Both O (note 2) 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_TALKER_PRI].value, BSSAP_PDU_TYPE_BSSMAP, BE_TALKER_PRI, NULL);
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
@@ -4938,21 +4938,21 @@ bssmap_cm_upd(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
static void
bssmap_ciph_mode_cmd(tvbuff_t *tvb, proto_tree *tree, 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;
- /* Layer 3 Header Information 3.2.2.9 MSC-BSS O (note) 4 */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_L3_HEADER_INFO].value, BSSAP_PDU_TYPE_BSSMAP, BE_L3_HEADER_INFO, NULL);
- /* Encryption Information 3.2.2.10 MSC-BSS M 3-n */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_ENC_INFO].value, BSSAP_PDU_TYPE_BSSMAP, BE_ENC_INFO, NULL);
- /* Cipher Response Mode 3.2.2.34 MSC-BSS O 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CIPH_RESP_MODE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIPH_RESP_MODE, NULL);
+ /* Layer 3 Header Information 3.2.2.9 MSC-BSS O (note) 4 */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_L3_HEADER_INFO].value, BSSAP_PDU_TYPE_BSSMAP, BE_L3_HEADER_INFO, NULL);
+ /* Encryption Information 3.2.2.10 MSC-BSS M 3-n */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_ENC_INFO].value, BSSAP_PDU_TYPE_BSSMAP, BE_ENC_INFO, NULL);
+ /* Cipher Response Mode 3.2.2.34 MSC-BSS O 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CIPH_RESP_MODE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIPH_RESP_MODE, NULL);
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
@@ -4961,19 +4961,19 @@ bssmap_ciph_mode_cmd(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
static void
bssmap_ciph_mode_complete(tvbuff_t *tvb, proto_tree *tree, 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;
- /* Layer 3 Message Contents 3.2.2.35 BSS-MSC O 2-n */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_L3_MSG].value, BSSAP_PDU_TYPE_BSSMAP, BE_L3_MSG, NULL);
- /* Chosen Encryption Algorithm 3.2.2.44 BSS-MSC O (note) 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CHOSEN_ENC_ALG].value, BSSAP_PDU_TYPE_BSSMAP, BE_CHOSEN_ENC_ALG, NULL);
+ /* Layer 3 Message Contents 3.2.2.35 BSS-MSC O 2-n */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_L3_MSG].value, BSSAP_PDU_TYPE_BSSMAP, BE_L3_MSG, NULL);
+ /* Chosen Encryption Algorithm 3.2.2.44 BSS-MSC O (note) 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CHOSEN_ENC_ALG].value, BSSAP_PDU_TYPE_BSSMAP, BE_CHOSEN_ENC_ALG, NULL);
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
@@ -4982,30 +4982,30 @@ bssmap_ciph_mode_complete(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint
static void
bssmap_cl3_info(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
{
- guint32 consumed;
- guint32 curr_offset;
- guint curr_len;
+ guint32 consumed;
+ guint32 curr_offset;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* Cell Identifier 3.2.2.17 BSS-MSC M 3-10 */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CELL_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID, NULL);
- /* Layer 3 Information 3.2.2.24 BSS-MSC M 3-n */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_L3_INFO].value, BSSAP_PDU_TYPE_BSSMAP, BE_L3_INFO, NULL);
- /* Chosen Channel 3.2.2.33 BSS-MSC O (note 1) 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CHOSEN_CHAN].value, BSSAP_PDU_TYPE_BSSMAP, BE_CHOSEN_CHAN, NULL);
- /* LSA Identifier List 3.2.2.16 BSS-MSC O (note 2) 3+3n */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_LSA_ID_LIST].value, BSSAP_PDU_TYPE_BSSMAP, BE_LSA_ID_LIST, NULL);
- /* APDU 3.2.2.68 BSS-MSC O (note 3) 3-n */
- ELEM_OPT_TLV_E(gsm_bssmap_elem_strings[BE_APDU].value, BSSAP_PDU_TYPE_BSSMAP, BE_APDU, NULL);
- /* Codec List (BSS Supported) 3.2.2.103 BSS-MSC O (note 4) 3-n */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SPEECH_CODEC_LST].value, BSSAP_PDU_TYPE_BSSMAP, BE_SPEECH_CODEC_LST, "(BSS Supported)");
+ /* Cell Identifier 3.2.2.17 BSS-MSC M 3-10 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CELL_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID, NULL);
+ /* Layer 3 Information 3.2.2.24 BSS-MSC M 3-n */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_L3_INFO].value, BSSAP_PDU_TYPE_BSSMAP, BE_L3_INFO, NULL);
+ /* Chosen Channel 3.2.2.33 BSS-MSC O (note 1) 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CHOSEN_CHAN].value, BSSAP_PDU_TYPE_BSSMAP, BE_CHOSEN_CHAN, NULL);
+ /* LSA Identifier List 3.2.2.16 BSS-MSC O (note 2) 3+3n */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_LSA_ID_LIST].value, BSSAP_PDU_TYPE_BSSMAP, BE_LSA_ID_LIST, NULL);
+ /* APDU 3.2.2.68 BSS-MSC O (note 3) 3-n */
+ ELEM_OPT_TLV_E(gsm_bssmap_elem_strings[BE_APDU].value, BSSAP_PDU_TYPE_BSSMAP, BE_APDU, NULL);
+ /* Codec List (BSS Supported) 3.2.2.103 BSS-MSC O (note 4) 3-n */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SPEECH_CODEC_LST].value, BSSAP_PDU_TYPE_BSSMAP, BE_SPEECH_CODEC_LST, "(BSS Supported)");
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
- * 3.2.1.33 QUEUEING INDICATION
+ * 3.2.1.33 QUEUEING INDICATION
* No data
*/
@@ -5015,22 +5015,22 @@ bssmap_cl3_info(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
static void
bssmap_sapi_rej(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
{
- guint32 consumed;
- guint32 curr_offset;
- guint curr_len;
+ guint32 consumed;
+ guint32 curr_offset;
+ guint curr_len;
- curr_offset = offset;
- curr_len = len;
+ curr_offset = offset;
+ curr_len = len;
- /* DLCI 3.2.2.25 BSS-MSC M 2 */
- ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_DLCI].value, BSSAP_PDU_TYPE_BSSMAP, BE_DLCI, NULL);
- /* Cause 3.2.2.5 BSS-MSC M 3-4 */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, NULL);
+ /* DLCI 3.2.2.25 BSS-MSC M 2 */
+ ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_DLCI].value, BSSAP_PDU_TYPE_BSSMAP, BE_DLCI, NULL);
+ /* Cause 3.2.2.5 BSS-MSC M 3-4 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, NULL);
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
-/* 3.2.1.35 (void)
- * 3.2.1.36 (void)
+/* 3.2.1.35 (void)
+ * 3.2.1.36 (void)
*/
/*
* [2] 3.2.1.37 HANDOVER REQUIRED REJECT
@@ -5038,21 +5038,21 @@ bssmap_sapi_rej(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
static void
bssmap_ho_reqd_rej(tvbuff_t *tvb, proto_tree *tree, 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;
- /* Cause 3.2.2.5 MSC-BSS M 3-4 */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, NULL);
- /* New BSS to Old BSS Information 3.2.2.78 MSC-BSS O (note 1) 2-n */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_NEW_BSS_TO_OLD_BSS_INF].value, BSSAP_PDU_TYPE_BSSMAP, BE_NEW_BSS_TO_OLD_BSS_INF, NULL);
- /* Talker Priority 3.2.2.89 MSC-BSS O (note 2) 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_TALKER_PRI].value, BSSAP_PDU_TYPE_BSSMAP, BE_TALKER_PRI, NULL);
+ /* Cause 3.2.2.5 MSC-BSS M 3-4 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, NULL);
+ /* New BSS to Old BSS Information 3.2.2.78 MSC-BSS O (note 1) 2-n */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_NEW_BSS_TO_OLD_BSS_INF].value, BSSAP_PDU_TYPE_BSSMAP, BE_NEW_BSS_TO_OLD_BSS_INF, NULL);
+ /* Talker Priority 3.2.2.89 MSC-BSS O (note 2) 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_TALKER_PRI].value, BSSAP_PDU_TYPE_BSSMAP, BE_TALKER_PRI, NULL);
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
@@ -5061,19 +5061,19 @@ bssmap_ho_reqd_rej(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
static void
bssmap_reset_cct(tvbuff_t *tvb, proto_tree *tree, 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;
- /* Circuit Identity Code 3.2.2.2 Both M 3 */
- ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_CIC].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC, NULL);
- /* Cause 3.2.2.5 Both M 3-4 */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, NULL);
+ /* Circuit Identity Code 3.2.2.2 Both M 3 */
+ ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_CIC].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC, NULL);
+ /* Cause 3.2.2.5 Both M 3-4 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, NULL);
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
@@ -5082,36 +5082,36 @@ bssmap_reset_cct(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
static void
bssmap_reset_cct_ack(tvbuff_t *tvb, proto_tree *tree, 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;
- /* Circuit Identity 3.2.2.2 Both M 3 */
- ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_CIC].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC, NULL);
+ /* Circuit Identity 3.2.2.2 Both M 3 */
+ ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_CIC].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC, NULL);
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
- * 3.2.1.40 HANDOVER DETECT
+ * 3.2.1.40 HANDOVER DETECT
*/
static void
bssmap_ho_det(tvbuff_t *tvb, proto_tree *tree, 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;
- /* Talker Priority 3.2.2.89 BSS-MSC O (note 1) 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_TALKER_PRI].value, BSSAP_PDU_TYPE_BSSMAP, BE_TALKER_PRI, NULL);
+ /* Talker Priority 3.2.2.89 BSS-MSC O (note 1) 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_TALKER_PRI].value, BSSAP_PDU_TYPE_BSSMAP, BE_TALKER_PRI, NULL);
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
* [2] 3.2.1.41 CIRCUIT GROUP BLOCK
@@ -5119,21 +5119,21 @@ bssmap_ho_det(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
static void
bssmap_cct_group_block(tvbuff_t *tvb, proto_tree *tree, 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;
- /* Cause 3.2.2.5 Both M 3-4 */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, NULL);
- /* Circuit Identity Code 3.2.2.2 Both M 3 */
- ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_CIC].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC, NULL);
- /* Circuit Identity Code List 3.2.2.31 Both M 4-35 */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CIC_LIST].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC_LIST, NULL);
+ /* Cause 3.2.2.5 Both M 3-4 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, NULL);
+ /* Circuit Identity Code 3.2.2.2 Both M 3 */
+ ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_CIC].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC, NULL);
+ /* Circuit Identity Code List 3.2.2.31 Both M 4-35 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CIC_LIST].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC_LIST, NULL);
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
@@ -5142,19 +5142,19 @@ bssmap_cct_group_block(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint le
static void
bssmap_cct_group_block_ack(tvbuff_t *tvb, proto_tree *tree, 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;
- /* Circuit Identity Code 3.2.2.2 Both M 3 */
- ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_CIC].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC, NULL);
- /* Circuit Identity Code List 3.2.2.31 Both M 4-35 */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CIC_LIST].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC_LIST, NULL);
+ /* Circuit Identity Code 3.2.2.2 Both M 3 */
+ ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_CIC].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC, NULL);
+ /* Circuit Identity Code List 3.2.2.31 Both M 4-35 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CIC_LIST].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC_LIST, NULL);
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
@@ -5163,19 +5163,19 @@ bssmap_cct_group_block_ack(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guin
static void
bssmap_cct_group_unblock(tvbuff_t *tvb, proto_tree *tree, 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;
- /* Circuit Identity Code 3.2.2.2 Both M 3 */
- ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_CIC].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC, NULL);
- /* Circuit Identity Code List 3.2.2.31 Both M 4-35 */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CIC_LIST].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC_LIST, NULL);
+ /* Circuit Identity Code 3.2.2.2 Both M 3 */
+ ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_CIC].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC, NULL);
+ /* Circuit Identity Code List 3.2.2.31 Both M 4-35 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CIC_LIST].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC_LIST, NULL);
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
@@ -5184,19 +5184,19 @@ bssmap_cct_group_unblock(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint
static void
bssmap_cct_group_unblock_ack(tvbuff_t *tvb, proto_tree *tree, 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;
- /* Circuit Identity Code 3.2.2.2 Both M 3 */
- ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_CIC].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC, NULL);
- /* Circuit Identity Code List 3.2.2.31 Both M 4-35 */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CIC_LIST].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC_LIST, NULL);
+ /* Circuit Identity Code 3.2.2.2 Both M 3 */
+ ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_CIC].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC, NULL);
+ /* Circuit Identity Code List 3.2.2.31 Both M 4-35 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CIC_LIST].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC_LIST, NULL);
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
@@ -5205,37 +5205,37 @@ bssmap_cct_group_unblock_ack(tvbuff_t *tvb, proto_tree *tree, guint32 offset, gu
static void
bssmap_confusion(tvbuff_t *tvb, proto_tree *tree, 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;
- /* Cause 3.2.2.5 Both M 3-4 */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, NULL);
- /* Diagnostics 3.2.2.32 Both M 4-n */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_DIAG].value, BSSAP_PDU_TYPE_BSSMAP, BE_DIAG, NULL);
+ /* Cause 3.2.2.5 Both M 3-4 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, NULL);
+ /* Diagnostics 3.2.2.32 Both M 4-n */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_DIAG].value, BSSAP_PDU_TYPE_BSSMAP, BE_DIAG, NULL);
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
- * 3.2.1.46 CLASSMARK REQUEST
+ * 3.2.1.46 CLASSMARK REQUEST
*/
static void
bssmap_cls_m_req(tvbuff_t *tvb, proto_tree *tree, 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;
- /* Talker Priority 3.2.2.89 MSC-BSS O (note 1) 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_TALKER_PRI].value, BSSAP_PDU_TYPE_BSSMAP, BE_TALKER_PRI, NULL);
+ /* Talker Priority 3.2.2.89 MSC-BSS O (note 1) 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_TALKER_PRI].value, BSSAP_PDU_TYPE_BSSMAP, BE_TALKER_PRI, NULL);
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
* [2] 3.2.1.47 UNEQUIPPED CIRCUIT
@@ -5243,19 +5243,19 @@ bssmap_cls_m_req(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
static void
bssmap_unequipped_cct(tvbuff_t *tvb, proto_tree *tree, 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;
- /* Circuit Identity Code 3.2.2.2 Both M 3 */
- ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_CIC].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC, NULL);
- /* Circuit Identity Code List 3.2.2.31 Both O 4-35 */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_CIC_LIST].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC_LIST, NULL);
+ /* Circuit Identity Code 3.2.2.2 Both M 3 */
+ ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_CIC].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC, NULL);
+ /* Circuit Identity Code List 3.2.2.31 Both O 4-35 */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_CIC_LIST].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC_LIST, NULL);
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
@@ -5264,17 +5264,17 @@ bssmap_unequipped_cct(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len
static void
bssmap_ciph_mode_rej(tvbuff_t *tvb, proto_tree *tree, 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;
- /* Cause 3.2.2.5 BSS-MSC M 3-4 */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, NULL);
+ /* Cause 3.2.2.5 BSS-MSC M 3-4 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, NULL);
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
@@ -5283,384 +5283,384 @@ bssmap_ciph_mode_rej(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
static void
bssmap_load_ind(tvbuff_t *tvb, proto_tree *tree, 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;
- /* Time Indication 3.2.2.47 Both M 2 */
- ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_TIME_IND].value, BSSAP_PDU_TYPE_BSSMAP, BE_TIME_IND, NULL);
- /* Cell Identifier 3.2.2.17 Both M 3-10 */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CELL_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID, NULL);
- /* Cell Identifier List (Target) 3.2.2.27 Both M 3 to 3+7n */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CELL_ID_LIST].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID_LIST, " (Target)");
- /* Resource Situation 3.2.2.48 Both O (note 1) 4-N */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_RES_SIT].value, BSSAP_PDU_TYPE_BSSMAP, BE_RES_SIT, NULL);
- /* Cause 3.2.2.5 Both O (note 2) 4-5 */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, NULL);
+ /* Time Indication 3.2.2.47 Both M 2 */
+ ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_TIME_IND].value, BSSAP_PDU_TYPE_BSSMAP, BE_TIME_IND, NULL);
+ /* Cell Identifier 3.2.2.17 Both M 3-10 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CELL_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID, NULL);
+ /* Cell Identifier List (Target) 3.2.2.27 Both M 3 to 3+7n */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CELL_ID_LIST].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID_LIST, " (Target)");
+ /* Resource Situation 3.2.2.48 Both O (note 1) 4-N */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_RES_SIT].value, BSSAP_PDU_TYPE_BSSMAP, BE_RES_SIT, NULL);
+ /* Cause 3.2.2.5 Both O (note 2) 4-5 */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, NULL);
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
- * 3.2.1.50 VGCS/VBS SETUP
+ * 3.2.1.50 VGCS/VBS SETUP
*/
static void
bssmap_vgcs_vbs_setup(tvbuff_t *tvb, proto_tree *tree, 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;
- /* Group Call Reference 3.2.2.55 MSC-BSS M 7 */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_GROUP_CALL_REF].value, BSSAP_PDU_TYPE_BSSMAP, BE_GROUP_CALL_REF, NULL);
- /* Priority 3.2.2.18 MSC-BSS O 3 */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_PRIO].value, BSSAP_PDU_TYPE_BSSMAP, BE_PRIO, NULL);
- /* VGCS Feature Flags 3.2.2.88 MSC-BSS O 3 */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_VGCS_FEAT_FLG].value, BSSAP_PDU_TYPE_BSSMAP, BE_VGCS_FEAT_FLG, NULL);
+ /* Group Call Reference 3.2.2.55 MSC-BSS M 7 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_GROUP_CALL_REF].value, BSSAP_PDU_TYPE_BSSMAP, BE_GROUP_CALL_REF, NULL);
+ /* Priority 3.2.2.18 MSC-BSS O 3 */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_PRIO].value, BSSAP_PDU_TYPE_BSSMAP, BE_PRIO, NULL);
+ /* VGCS Feature Flags 3.2.2.88 MSC-BSS O 3 */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_VGCS_FEAT_FLG].value, BSSAP_PDU_TYPE_BSSMAP, BE_VGCS_FEAT_FLG, NULL);
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
- * 3.2.1.51 VGCS/VBS SETUP ACK
+ * 3.2.1.51 VGCS/VBS SETUP ACK
*/
static void
bssmap_vgcs_vbs_setup_ack(tvbuff_t *tvb, proto_tree *tree, 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;
- /* VGCS Feature Flags 3.2.2.88 BSS-MSC O(note 1) 3 */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_VGCS_FEAT_FLG].value, BSSAP_PDU_TYPE_BSSMAP, BE_VGCS_FEAT_FLG, NULL);
+ /* VGCS Feature Flags 3.2.2.88 BSS-MSC O(note 1) 3 */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_VGCS_FEAT_FLG].value, BSSAP_PDU_TYPE_BSSMAP, BE_VGCS_FEAT_FLG, NULL);
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
- * 3.2.1.52 VGCS/VBS SETUP REFUSE
+ * 3.2.1.52 VGCS/VBS SETUP REFUSE
*/
static void
bssmap_vgcs_vbs_setup_refuse(tvbuff_t *tvb, proto_tree *tree, 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;
- /* Cause 3.2.2.5 BSS-MSC M 3-4 */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, NULL);
+ /* Cause 3.2.2.5 BSS-MSC M 3-4 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, NULL);
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
- * 3.2.1.53 VGCS/VBS ASSIGNMENT REQUEST
+ * 3.2.1.53 VGCS/VBS ASSIGNMENT REQUEST
*/
static void
bssmap_vgcs_vbs_ass_req(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
-
- curr_offset = offset;
- curr_len = len;
-
- /* Channel Type 3.2.2.11 MSC-BSS M (note 2) 5-13 */
- ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_CURR_CHAN_1].value, BSSAP_PDU_TYPE_BSSMAP, BE_CURR_CHAN_1, NULL);
- /* Assignment Requirement 3.2.2.52 MSC-BSS M 2 */
- ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_ASS_REQ].value, BSSAP_PDU_TYPE_BSSMAP, BE_ASS_REQ, NULL);
- /* Cell Identifier 3.2.2.17 MSC-BSS M 3-10 */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CELL_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID, NULL);
- /* Group Call Reference 3.2.2.55 MSC-BSS M 7 */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_GROUP_CALL_REF].value, BSSAP_PDU_TYPE_BSSMAP, BE_GROUP_CALL_REF, NULL);
- /* Priority 3.2.2.18 MSC-BSS O 3 */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_PRIO].value, BSSAP_PDU_TYPE_BSSMAP, BE_PRIO, NULL);
- /* Circuit Identity Code 3.2.2.2 MSC-BSS O (note 4, 5) 3 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CIC].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC, NULL);
- /* Downlink DTX Flag 3.2.2.26 MSC-BSS O (note 2, 4) 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_DOWN_DTX_FLAG].value, BSSAP_PDU_TYPE_BSSMAP, BE_DOWN_DTX_FLAG, NULL);
- /* Encryption Information 3.2.2.10 MSC-BSS O 3-n */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_ENC_INFO].value, BSSAP_PDU_TYPE_BSSMAP, BE_ENC_INFO, NULL);
- /* VSTK_RAND 3.2.2.83 MSC-BSS O (note 1) 7 */
- /* VSTK 3.2.2.84 MSC-BSS O (note 1) 18 */
- /* Cell Identifier List Segment 3.2.2.27a MSC-BSS O (note 3) 4-? */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_CELL_ID_LIST_SEG].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID_LIST_SEG, NULL);
-
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
-}
-/*
- * 3.2.1.54 VGCS/VBS ASSIGNMENT RESULT
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
+
+ curr_offset = offset;
+ curr_len = len;
+
+ /* Channel Type 3.2.2.11 MSC-BSS M (note 2) 5-13 */
+ ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_CURR_CHAN_1].value, BSSAP_PDU_TYPE_BSSMAP, BE_CURR_CHAN_1, NULL);
+ /* Assignment Requirement 3.2.2.52 MSC-BSS M 2 */
+ ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_ASS_REQ].value, BSSAP_PDU_TYPE_BSSMAP, BE_ASS_REQ, NULL);
+ /* Cell Identifier 3.2.2.17 MSC-BSS M 3-10 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CELL_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID, NULL);
+ /* Group Call Reference 3.2.2.55 MSC-BSS M 7 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_GROUP_CALL_REF].value, BSSAP_PDU_TYPE_BSSMAP, BE_GROUP_CALL_REF, NULL);
+ /* Priority 3.2.2.18 MSC-BSS O 3 */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_PRIO].value, BSSAP_PDU_TYPE_BSSMAP, BE_PRIO, NULL);
+ /* Circuit Identity Code 3.2.2.2 MSC-BSS O (note 4, 5) 3 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CIC].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC, NULL);
+ /* Downlink DTX Flag 3.2.2.26 MSC-BSS O (note 2, 4) 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_DOWN_DTX_FLAG].value, BSSAP_PDU_TYPE_BSSMAP, BE_DOWN_DTX_FLAG, NULL);
+ /* Encryption Information 3.2.2.10 MSC-BSS O 3-n */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_ENC_INFO].value, BSSAP_PDU_TYPE_BSSMAP, BE_ENC_INFO, NULL);
+ /* VSTK_RAND 3.2.2.83 MSC-BSS O (note 1) 7 */
+ /* VSTK 3.2.2.84 MSC-BSS O (note 1) 18 */
+ /* Cell Identifier List Segment 3.2.2.27a MSC-BSS O (note 3) 4-? */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_CELL_ID_LIST_SEG].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID_LIST_SEG, NULL);
+
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
+}
+/*
+ * 3.2.1.54 VGCS/VBS ASSIGNMENT RESULT
*/
static void
bssmap_vgcs_vbs_ass_res(tvbuff_t *tvb, proto_tree *tree, 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;
+ /* Channel Type 3.2.2.11 BSS-MSC M (note 3, 4) 5 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CURR_CHAN_1].value, BSSAP_PDU_TYPE_BSSMAP, BE_CURR_CHAN_1, NULL);
+ /* Cell Identifier 3.2.2.17 BSS-MSC M 3-10 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CELL_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID, NULL);
+ /* Chosen Channel 3.2.2.33 BSS-MSC O (note 2) 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CHOSEN_CHAN].value, BSSAP_PDU_TYPE_BSSMAP, BE_CHOSEN_CHAN, NULL);
+ /* Circuit Identity Code 3.2.2.2 BSS-MSC O (note 5) 3 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CIC].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC, NULL);
+ /* Circuit Pool 3.2.2.45 BSS-MSC O (note 1) 2 */
- /* Channel Type 3.2.2.11 BSS-MSC M (note 3, 4) 5 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CURR_CHAN_1].value, BSSAP_PDU_TYPE_BSSMAP, BE_CURR_CHAN_1, NULL);
- /* Cell Identifier 3.2.2.17 BSS-MSC M 3-10 */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CELL_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID, NULL);
- /* Chosen Channel 3.2.2.33 BSS-MSC O (note 2) 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CHOSEN_CHAN].value, BSSAP_PDU_TYPE_BSSMAP, BE_CHOSEN_CHAN, NULL);
- /* Circuit Identity Code 3.2.2.2 BSS-MSC O (note 5) 3 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CIC].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC, NULL);
- /* Circuit Pool 3.2.2.45 BSS-MSC O (note 1) 2 */
-
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
- * 3.2.1.55 VGCS/VBS ASSIGNMENT FAILURE
+ * 3.2.1.55 VGCS/VBS ASSIGNMENT FAILURE
*/
static void
bssmap_vgcs_vbs_ass_fail(tvbuff_t *tvb, proto_tree *tree, 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;
+ /* Cause 3.2.2.5 BSS-MSC M 3-4 */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, NULL);
+ /* Circuit Pool 3.2.2.45 BSS-MSC O (note 1) 2 */
+ /* Circuit Pool List 3.2.2.46 BSS-MSC O (note 2) V */
- /* Cause 3.2.2.5 BSS-MSC M 3-4 */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, NULL);
- /* Circuit Pool 3.2.2.45 BSS-MSC O (note 1) 2 */
- /* Circuit Pool List 3.2.2.46 BSS-MSC O (note 2) V */
-
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
- * 3.2.1.56 VGCS/VBS QUEUING INDICATION
+ * 3.2.1.56 VGCS/VBS QUEUING INDICATION
* No data
*/
/*
- * 3.2.1.57 UPLINK REQUEST
+ * 3.2.1.57 UPLINK REQUEST
*/
static void
bssmap_uplink_req(tvbuff_t *tvb, proto_tree *tree, 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;
- /* Talker Priority 3.2.2.89 BSS-MSC O (note 1) 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_TALKER_PRI].value, BSSAP_PDU_TYPE_BSSMAP, BE_TALKER_PRI, NULL);
- /* Cell Identifier 3.2.2.17 BSS-MSC O (note 1) 3-10 */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CELL_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID, NULL);
- /* Layer 3 Information 3.2.2.24 BSS-MSC O (note 1,3) 3-n */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_L3_INFO].value, BSSAP_PDU_TYPE_BSSMAP, BE_L3_INFO, NULL);
- /* Mobile Identity 3.2.2.41 BSS-MSC O (note 1,2) 3-n */
-
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ /* Talker Priority 3.2.2.89 BSS-MSC O (note 1) 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_TALKER_PRI].value, BSSAP_PDU_TYPE_BSSMAP, BE_TALKER_PRI, NULL);
+ /* Cell Identifier 3.2.2.17 BSS-MSC O (note 1) 3-10 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CELL_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID, NULL);
+ /* Layer 3 Information 3.2.2.24 BSS-MSC O (note 1,3) 3-n */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_L3_INFO].value, BSSAP_PDU_TYPE_BSSMAP, BE_L3_INFO, NULL);
+ /* Mobile Identity 3.2.2.41 BSS-MSC O (note 1,2) 3-n */
+
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
- * 3.2.1.58 UPLINK REQUEST ACKNOWLEDGE
+ * 3.2.1.58 UPLINK REQUEST ACKNOWLEDGE
*/
static void
bssmap_uplink_req_ack(tvbuff_t *tvb, proto_tree *tree, 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;
+ /* Talker Priority 3.2.2.89 MSC-BSS O (note 1) 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_TALKER_PRI].value, BSSAP_PDU_TYPE_BSSMAP, BE_TALKER_PRI, NULL);
+ /* Emergency set indication 3.2.2.90 MSC-BSS O (note 1) 1 */
+ ELEM_OPT_T(gsm_bssmap_elem_strings[BE_EMRG_SET_IND].value, BSSAP_PDU_TYPE_BSSMAP, BE_EMRG_SET_IND, NULL);
+ /* Talker Identity 3.2.2.91 MSC-BSS O 3-20 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_TALKER_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_TALKER_ID, NULL);
- /* Talker Priority 3.2.2.89 MSC-BSS O (note 1) 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_TALKER_PRI].value, BSSAP_PDU_TYPE_BSSMAP, BE_TALKER_PRI, NULL);
- /* Emergency set indication 3.2.2.90 MSC-BSS O (note 1) 1 */
- ELEM_OPT_T(gsm_bssmap_elem_strings[BE_EMRG_SET_IND].value, BSSAP_PDU_TYPE_BSSMAP, BE_EMRG_SET_IND, NULL);
- /* Talker Identity 3.2.2.91 MSC-BSS O 3-20 */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_TALKER_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_TALKER_ID, NULL);
-
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
- * 3.2.1.59 UPLINK REQUEST CONFIRMATION
+ * 3.2.1.59 UPLINK REQUEST CONFIRMATION
*/
static void
bssmap_uplink_req_conf(tvbuff_t *tvb, proto_tree *tree, 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;
- /* Cell Identifier 3.2.2.17 BSS-MSC M 3-10 */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CELL_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID, NULL);
- /* Talker Identity 3.2.2.91 BSS-MSC O 3-20 */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_TALKER_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_TALKER_ID, NULL);
- /* Layer 3 Information 3.2.2.24 BSS-MSC M 3-n */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_L3_INFO].value, BSSAP_PDU_TYPE_BSSMAP, BE_L3_INFO, NULL);
-
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ /* Cell Identifier 3.2.2.17 BSS-MSC M 3-10 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CELL_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID, NULL);
+ /* Talker Identity 3.2.2.91 BSS-MSC O 3-20 */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_TALKER_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_TALKER_ID, NULL);
+ /* Layer 3 Information 3.2.2.24 BSS-MSC M 3-n */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_L3_INFO].value, BSSAP_PDU_TYPE_BSSMAP, BE_L3_INFO, NULL);
+
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
- * 3.2.1.59a UPLINK APPLICATION DATA
+ * 3.2.1.59a UPLINK APPLICATION DATA
*/
static void
bssmap_uplink_app_data(tvbuff_t *tvb, proto_tree *tree, 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;
- /* Cell Identifier 3.2.2.17 BSS-MSC M 3-10 */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CELL_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID, NULL);
- /* Layer 3 Information 3.2.2.24 BSS-MSC M 3-n */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_L3_INFO].value, BSSAP_PDU_TYPE_BSSMAP, BE_L3_INFO, NULL);
- /* Application Data information 3.2.2.100 BSS-MSC M 3 */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_APP_DATA_INF].value, BSSAP_PDU_TYPE_BSSMAP, BE_APP_DATA_INF, NULL);
+ /* Cell Identifier 3.2.2.17 BSS-MSC M 3-10 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CELL_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID, NULL);
+ /* Layer 3 Information 3.2.2.24 BSS-MSC M 3-n */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_L3_INFO].value, BSSAP_PDU_TYPE_BSSMAP, BE_L3_INFO, NULL);
+ /* Application Data information 3.2.2.100 BSS-MSC M 3 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_APP_DATA_INF].value, BSSAP_PDU_TYPE_BSSMAP, BE_APP_DATA_INF, NULL);
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
- * 3.2.1.60 UPLINK RELEASE INDICATION
+ * 3.2.1.60 UPLINK RELEASE INDICATION
*/
static void
bssmap_uplink_rel_ind(tvbuff_t *tvb, proto_tree *tree, 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;
+ /* Cause 3.2.2.5 BSS-MSC M 3-4 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, NULL);
+ /* Talker Priority 3.2.2.89 BSS-MSC O (note 1) 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_TALKER_PRI].value, BSSAP_PDU_TYPE_BSSMAP, BE_TALKER_PRI, NULL);
- /* Cause 3.2.2.5 BSS-MSC M 3-4 */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, NULL);
- /* Talker Priority 3.2.2.89 BSS-MSC O (note 1) 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_TALKER_PRI].value, BSSAP_PDU_TYPE_BSSMAP, BE_TALKER_PRI, NULL);
-
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
- * 3.2.1.61 UPLINK REJECT COMMAND
+ * 3.2.1.61 UPLINK REJECT COMMAND
*/
static void
bssmap_uplink_rej_cmd(tvbuff_t *tvb, proto_tree *tree, 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;
- /* Cause 3.2.2.5 MSC-BSS M 3-4 */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, NULL);
- /* Current Talker Priority 3.2.2.89 MSC-BSS O (note 1) 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_TALKER_PRI].value, BSSAP_PDU_TYPE_BSSMAP, BE_TALKER_PRI, "Current");
- /* Rejected Talker Priority 3.2.2.89 MSC-BSS O (note 1) 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_TALKER_PRI].value, BSSAP_PDU_TYPE_BSSMAP, BE_TALKER_PRI, "Rejected");
- /* Talker Identity 3.2.2.91 MSC-BSS O 3-20 */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_TALKER_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_TALKER_ID, NULL);
+ /* Cause 3.2.2.5 MSC-BSS M 3-4 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, NULL);
+ /* Current Talker Priority 3.2.2.89 MSC-BSS O (note 1) 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_TALKER_PRI].value, BSSAP_PDU_TYPE_BSSMAP, BE_TALKER_PRI, "Current");
+ /* Rejected Talker Priority 3.2.2.89 MSC-BSS O (note 1) 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_TALKER_PRI].value, BSSAP_PDU_TYPE_BSSMAP, BE_TALKER_PRI, "Rejected");
+ /* Talker Identity 3.2.2.91 MSC-BSS O 3-20 */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_TALKER_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_TALKER_ID, NULL);
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
- * 3.2.1.62 UPLINK RELEASE COMMAND
+ * 3.2.1.62 UPLINK RELEASE COMMAND
*/
static void
bssmap_uplink_rel_cmd(tvbuff_t *tvb, proto_tree *tree, 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;
- /* Cause 3.2.2.5 MSC-BSS M 3-4 */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, NULL);
+ /* Cause 3.2.2.5 MSC-BSS M 3-4 */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, NULL);
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
- * 3.2.1.63 UPLINK SEIZED COMMAND
+ * 3.2.1.63 UPLINK SEIZED COMMAND
*/
static void
bssmap_uplink_seized_cmd(tvbuff_t *tvb, proto_tree *tree, 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;
- /* Cause 3.2.2.5 MSC-BSS M 3-4 */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, NULL);
- /* Talker Priority 3.2.2.89 MSC-BSS O (note 1) 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_TALKER_PRI].value, BSSAP_PDU_TYPE_BSSMAP, BE_TALKER_PRI, NULL);
- /* Emergency set indication 3.2.2.90 MSC-BSS O (note 1) 1 */
- ELEM_OPT_T(gsm_bssmap_elem_strings[BE_EMRG_SET_IND].value, BSSAP_PDU_TYPE_BSSMAP, BE_EMRG_SET_IND, NULL);
- /* Talker Identity 3.2.2.91 MSC-BSS O 3-20 */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_TALKER_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_TALKER_ID, NULL);
+ /* Cause 3.2.2.5 MSC-BSS M 3-4 */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, NULL);
+ /* Talker Priority 3.2.2.89 MSC-BSS O (note 1) 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_TALKER_PRI].value, BSSAP_PDU_TYPE_BSSMAP, BE_TALKER_PRI, NULL);
+ /* Emergency set indication 3.2.2.90 MSC-BSS O (note 1) 1 */
+ ELEM_OPT_T(gsm_bssmap_elem_strings[BE_EMRG_SET_IND].value, BSSAP_PDU_TYPE_BSSMAP, BE_EMRG_SET_IND, NULL);
+ /* Talker Identity 3.2.2.91 MSC-BSS O 3-20 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_TALKER_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_TALKER_ID, NULL);
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
- * 3.2.1.64 SUSPEND
+ * 3.2.1.64 SUSPEND
*/
static void
bssmap_sus(tvbuff_t *tvb, proto_tree *tree, 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;
- /* DLCI 3.2.2.25 BSS-MSC M 2 */
- ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_DLCI].value, BSSAP_PDU_TYPE_BSSMAP, BE_DLCI, NULL);
+ /* DLCI 3.2.2.25 BSS-MSC M 2 */
+ ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_DLCI].value, BSSAP_PDU_TYPE_BSSMAP, BE_DLCI, NULL);
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
- * 3.2.1.65 RESUME
+ * 3.2.1.65 RESUME
*/
static void
bssmap_res(tvbuff_t *tvb, proto_tree *tree, 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;
- /* DLCI 3.2.2.25 BSS-MSC M 2 */
- ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_DLCI].value, BSSAP_PDU_TYPE_BSSMAP, BE_DLCI, NULL);
+ /* DLCI 3.2.2.25 BSS-MSC M 2 */
+ ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_DLCI].value, BSSAP_PDU_TYPE_BSSMAP, BE_DLCI, NULL);
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
* [2] 3.2.1.66 CHANGE CIRCUIT
@@ -5668,17 +5668,17 @@ bssmap_res(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
static void
bssmap_change_cct(tvbuff_t *tvb, proto_tree *tree, 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;
- /* Cause 3.2.2.5 MSC-BSS M 3-4 */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, NULL);
+ /* Cause 3.2.2.5 MSC-BSS M 3-4 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, NULL);
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
@@ -5687,17 +5687,17 @@ bssmap_change_cct(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
static void
bssmap_change_cct_ack(tvbuff_t *tvb, proto_tree *tree, 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;
- /* Circuit identity 3.2.2.2 BSS-MSC M 3 */
- ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_CIC].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC, NULL);
+ /* Circuit identity 3.2.2.2 BSS-MSC M 3 */
+ ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_CIC].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC, NULL);
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
@@ -5706,19 +5706,19 @@ bssmap_change_cct_ack(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len
static void
bssmap_common_id(tvbuff_t *tvb, proto_tree *tree, 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;
- /* IMSI 3.2.2.6 MSC-BSS M 3-10 */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_IMSI].value, BSSAP_PDU_TYPE_BSSMAP, BE_IMSI, NULL);
- /* SNA Access Information 3.2.2.82 MSC-BSC O (note) 2+n */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SNA_ACC_INF].value, BSSAP_PDU_TYPE_BSSMAP, BE_SNA_ACC_INF, NULL);
+ /* IMSI 3.2.2.6 MSC-BSS M 3-10 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_IMSI].value, BSSAP_PDU_TYPE_BSSMAP, BE_IMSI, NULL);
+ /* SNA Access Information 3.2.2.82 MSC-BSC O (note) 2+n */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SNA_ACC_INF].value, BSSAP_PDU_TYPE_BSSMAP, BE_SNA_ACC_INF, NULL);
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
@@ -5727,17 +5727,17 @@ bssmap_common_id(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
static void
bssmap_lsa_info(tvbuff_t *tvb, proto_tree *tree, 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;
- /* LSA Information 3.2.2.23 MSC-BSS M 3+4n */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_LSA_INFO].value, BSSAP_PDU_TYPE_BSSMAP, BE_LSA_INFO, NULL);
+ /* LSA Information 3.2.2.23 MSC-BSS M 3+4n */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_LSA_INFO].value, BSSAP_PDU_TYPE_BSSMAP, BE_LSA_INFO, NULL);
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
@@ -5746,18 +5746,18 @@ bssmap_lsa_info(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
void
bssmap_conn_oriented(tvbuff_t *tvb, proto_tree *tree, 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;
- ELEM_MAND_TLV_E(gsm_bssmap_elem_strings[BE_APDU].value, BSSAP_PDU_TYPE_BSSMAP, BE_APDU, NULL);
+ ELEM_MAND_TLV_E(gsm_bssmap_elem_strings[BE_APDU].value, BSSAP_PDU_TYPE_BSSMAP, BE_APDU, NULL);
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SEG].value, BSSAP_PDU_TYPE_BSSMAP, BE_SEG, NULL);
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SEG].value, BSSAP_PDU_TYPE_BSSMAP, BE_SEG, NULL);
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
@@ -5766,41 +5766,41 @@ bssmap_conn_oriented(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
static void
bssmap_perf_loc_req(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
{
- guint32 curr_offset;
- guint32 consumed;
- guint curr_len;
-
- curr_offset = offset;
- curr_len = len;
-
- /* Location Type 3.2.2.63 M 3-n */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_LOC_TYPE].value, BSSAP_PDU_TYPE_BSSMAP, BE_LOC_TYPE , NULL);
- /* Cell Identifier 3.2.2.17 O 5-10 */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CELL_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID, NULL);
- /* Classmark Information Type 3 3.2.2.20 O 3-14 */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_CM_INFO_3].value, BSSAP_PDU_TYPE_BSSMAP, BE_CM_INFO_3, NULL);
- /* LCS Client Type 3.2.2.67 C (note 3) 3-n */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_LCS_CLIENT].value, GSM_PDU_TYPE_BSSMAP_LE, DE_BMAPLE_LCS_CLIENT_TYPE, NULL);
- /* Chosen Channel 3.2.2.33 O 2 */
- ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CHOSEN_CHAN].value, BSSAP_PDU_TYPE_BSSMAP, BE_CHOSEN_CHAN, NULL);
- /* LCS Priority 3.2.2.62 O 3-n */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_LCS_PRIO].value, BSSAP_PDU_TYPE_BSSMAP, BE_LCS_PRIO, NULL);
- /* LCS QoS 3.2.2.60 C (note 1) 3-n */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_LCS_QOS].value, GSM_PDU_TYPE_BSSMAP_LE, DE_BMAPLE_LCSQOS, NULL);
- /* GPS Assistance Data 3.2.2.70 C (note 2) 3-n */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_GPS_ASSIST_DATA].value, BSSAP_PDU_TYPE_BSSMAP, BE_GPS_ASSIST_DATA, NULL);
- /* APDU 3.2.2.68 O 3-n */
- ELEM_OPT_TLV_E(gsm_bssmap_elem_strings[BE_APDU].value, BSSAP_PDU_TYPE_BSSMAP, BE_APDU, NULL);
- /* IMSI 3.2.2.6 O (note 4) 5-10 */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_IMSI].value, BSSAP_PDU_TYPE_BSSMAP, BE_IMSI, NULL);
- /* IMEI 3.2.2.86 O (note 4) 10 (use same decode as IMSI) */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_IMEI].value, BSSAP_PDU_TYPE_BSSMAP, BE_IMEI, NULL);
- /* GANSS Location Type 3.2.2.97 C 3 */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_GANSS_LOC_TYP].value, BSSAP_PDU_TYPE_BSSMAP, BE_GANSS_LOC_TYP, NULL);
- /* GANSS Assistance Data 3.2.2.95 C (note 5) 3-n */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_GANSS_ASS_DTA].value, BSSAP_PDU_TYPE_BSSMAP, BE_GANSS_ASS_DTA, NULL);
-
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
+
+ curr_offset = offset;
+ curr_len = len;
+
+ /* Location Type 3.2.2.63 M 3-n */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_LOC_TYPE].value, BSSAP_PDU_TYPE_BSSMAP, BE_LOC_TYPE , NULL);
+ /* Cell Identifier 3.2.2.17 O 5-10 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CELL_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID, NULL);
+ /* Classmark Information Type 3 3.2.2.20 O 3-14 */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_CM_INFO_3].value, BSSAP_PDU_TYPE_BSSMAP, BE_CM_INFO_3, NULL);
+ /* LCS Client Type 3.2.2.67 C (note 3) 3-n */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_LCS_CLIENT].value, GSM_PDU_TYPE_BSSMAP_LE, DE_BMAPLE_LCS_CLIENT_TYPE, NULL);
+ /* Chosen Channel 3.2.2.33 O 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CHOSEN_CHAN].value, BSSAP_PDU_TYPE_BSSMAP, BE_CHOSEN_CHAN, NULL);
+ /* LCS Priority 3.2.2.62 O 3-n */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_LCS_PRIO].value, BSSAP_PDU_TYPE_BSSMAP, BE_LCS_PRIO, NULL);
+ /* LCS QoS 3.2.2.60 C (note 1) 3-n */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_LCS_QOS].value, GSM_PDU_TYPE_BSSMAP_LE, DE_BMAPLE_LCSQOS, NULL);
+ /* GPS Assistance Data 3.2.2.70 C (note 2) 3-n */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_GPS_ASSIST_DATA].value, BSSAP_PDU_TYPE_BSSMAP, BE_GPS_ASSIST_DATA, NULL);
+ /* APDU 3.2.2.68 O 3-n */
+ ELEM_OPT_TLV_E(gsm_bssmap_elem_strings[BE_APDU].value, BSSAP_PDU_TYPE_BSSMAP, BE_APDU, NULL);
+ /* IMSI 3.2.2.6 O (note 4) 5-10 */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_IMSI].value, BSSAP_PDU_TYPE_BSSMAP, BE_IMSI, NULL);
+ /* IMEI 3.2.2.86 O (note 4) 10 (use same decode as IMSI) */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_IMEI].value, BSSAP_PDU_TYPE_BSSMAP, BE_IMEI, NULL);
+ /* GANSS Location Type 3.2.2.97 C 3 */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_GANSS_LOC_TYP].value, BSSAP_PDU_TYPE_BSSMAP, BE_GANSS_LOC_TYP, NULL);
+ /* GANSS Assistance Data 3.2.2.95 C (note 5) 3-n */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_GANSS_ASS_DTA].value, BSSAP_PDU_TYPE_BSSMAP, BE_GANSS_ASS_DTA, NULL);
+
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
* 3.2.1.72 PERFORM LOCATION RESPONSE
@@ -5808,27 +5808,27 @@ bssmap_perf_loc_req(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
static void
bssmap_perf_loc_res(tvbuff_t *tvb, proto_tree *tree, 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;
- /* Location Estimate 3.2.2.64 C (note 1) 3-n */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_LOC_EST].value, BSSAP_PDU_TYPE_BSSMAP, BE_LOC_EST, NULL);
- /* Positioning Data 3.2.2.65 O 3-n */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_POS_DATA].value, BSSAP_PDU_TYPE_BSSMAP, BE_POS_DATA, NULL);
- /* Deciphering Keys 3.2.2.71 C (note 2) 3-n */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_DECIPH_KEYS].value, GSM_PDU_TYPE_BSSMAP_LE, DE_BMAPLE_DECIPH_KEYS, NULL);
- /* LCS Cause 3.2.2.66 C (note 3) 3-n */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_LCS_CAUSE].value, GSM_PDU_TYPE_BSSMAP_LE, DE_BMAPLE_LCS_CAUSE, NULL);
- /* Velocity Estimate 3.2.2.87 O 3-n */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_VEL_EST].value, BSSAP_PDU_TYPE_BSSMAP, BE_VEL_EST, NULL);
- /* GANSS Positioning Data 3.2.2.96 O 3-n */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_GANSS_POS_DTA].value, BSSAP_PDU_TYPE_BSSMAP, BE_GANSS_POS_DTA, NULL);
+ /* Location Estimate 3.2.2.64 C (note 1) 3-n */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_LOC_EST].value, BSSAP_PDU_TYPE_BSSMAP, BE_LOC_EST, NULL);
+ /* Positioning Data 3.2.2.65 O 3-n */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_POS_DATA].value, BSSAP_PDU_TYPE_BSSMAP, BE_POS_DATA, NULL);
+ /* Deciphering Keys 3.2.2.71 C (note 2) 3-n */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_DECIPH_KEYS].value, GSM_PDU_TYPE_BSSMAP_LE, DE_BMAPLE_DECIPH_KEYS, NULL);
+ /* LCS Cause 3.2.2.66 C (note 3) 3-n */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_LCS_CAUSE].value, GSM_PDU_TYPE_BSSMAP_LE, DE_BMAPLE_LCS_CAUSE, NULL);
+ /* Velocity Estimate 3.2.2.87 O 3-n */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_VEL_EST].value, BSSAP_PDU_TYPE_BSSMAP, BE_VEL_EST, NULL);
+ /* GANSS Positioning Data 3.2.2.96 O 3-n */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_GANSS_POS_DTA].value, BSSAP_PDU_TYPE_BSSMAP, BE_GANSS_POS_DTA, NULL);
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
* 3.2.1.73 PERFORM LOCATION ABORT
@@ -5836,846 +5836,846 @@ bssmap_perf_loc_res(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
void
bssmap_perf_loc_abort(tvbuff_t *tvb, proto_tree *tree, 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;
- /* LCS Cause 3.2.2.66 M 3-n */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_LCS_CAUSE].value, GSM_PDU_TYPE_BSSMAP_LE, DE_BMAPLE_LCS_CAUSE, NULL);
+ /* LCS Cause 3.2.2.66 M 3-n */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_LCS_CAUSE].value, GSM_PDU_TYPE_BSSMAP_LE, DE_BMAPLE_LCS_CAUSE, NULL);
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
- * 3.2.1.74 CONNECTIONLESS INFORMATION
+ * 3.2.1.74 CONNECTIONLESS INFORMATION
*
-Network Element Identity (source) 3.2.2.69 Both M 3-n
-Network Element Identity (target) 3.2.2.69 Both M 3-n
-APDU 3.2.2.68 Both M 3-n
-Segmentation 3.2,2,74 Both C (note 1) 5
-Return Error Request 3.2.2.72 Both C (note 2) 3-n
-Return Error Cause 3.2.2.73 Both C (note 3) 3-n
+Network Element Identity (source) 3.2.2.69 Both M 3-n
+Network Element Identity (target) 3.2.2.69 Both M 3-n
+APDU 3.2.2.68 Both M 3-n
+Segmentation 3.2,2,74 Both C (note 1) 5
+Return Error Request 3.2.2.72 Both C (note 2) 3-n
+Return Error Cause 3.2.2.73 Both C (note 3) 3-n
*/
/*
- * 3.2.1.75 CHANNEL MODIFY REQUEST
+ * 3.2.1.75 CHANNEL MODIFY REQUEST
*/
static void
bssmap_chan_mod_req(tvbuff_t *tvb, proto_tree *tree, 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;
- /* Cause 3.2.2.5 BSS-MSC M 3-4 */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, NULL);
+ /* Cause 3.2.2.5 BSS-MSC M 3-4 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, NULL);
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
- * 3.2.1.76 EMERGENCY RESET INDICATION
+ * 3.2.1.76 EMERGENCY RESET INDICATION
*/
/*
-Cell Identifier 3.2.2.17 BSS-MSC O 3-10
+Cell Identifier 3.2.2.17 BSS-MSC O 3-10
ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CELL_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID, NULL);
-Layer 3 Information 3.2.2.24 BSS-MSC O (note 2) 3-n
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_L3_INFO].value, BSSAP_PDU_TYPE_BSSMAP, BE_L3_INFO, NULL);
-Mobile Identity 3.2.2.41 BSS-MSC O (note 1) 3-n
+Layer 3 Information 3.2.2.24 BSS-MSC O (note 2) 3-n
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_L3_INFO].value, BSSAP_PDU_TYPE_BSSMAP, BE_L3_INFO, NULL);
+Mobile Identity 3.2.2.41 BSS-MSC O (note 1) 3-n
*/
/*
- * 3.2.1.77 EMERGENCY RESET COMMAND
+ * 3.2.1.77 EMERGENCY RESET COMMAND
* No data
*/
/*
- * 3.2.1.78 VGCS ADDITIONAL INFORMATION
+ * 3.2.1.78 VGCS ADDITIONAL INFORMATION
*/
static void
bssmap_vgcs_add_inf(tvbuff_t *tvb, proto_tree *tree, 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;
- /* Talker Identity 3.2.2.91 MSC-BSS M 3-20 */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_TALKER_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_TALKER_ID, NULL);
+ /* Talker Identity 3.2.2.91 MSC-BSS M 3-20 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_TALKER_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_TALKER_ID, NULL);
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
- * 3.2.1.79 VGCS/VBS AREA CELL INFO
+ * 3.2.1.79 VGCS/VBS AREA CELL INFO
*
-Cell Identifier List Segment 3.2.2.27a MSC-BSS M 4-?
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_CELL_ID_LIST_SEG].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID_LIST_SEG, NULL);
-Assignment Requirement 3.2.2.52 MSC-BSS O 2
+Cell Identifier List Segment 3.2.2.27a MSC-BSS M 4-?
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_CELL_ID_LIST_SEG].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID_LIST_SEG, NULL);
+Assignment Requirement 3.2.2.52 MSC-BSS O 2
*
- * 3.2.1.80 VGCS/VBS ASSIGNMENT STATUS
+ * 3.2.1.80 VGCS/VBS ASSIGNMENT STATUS
*
-Cell Identifier List Segment for established cells 3.2.2.27b BSS-MSC O (note 1) 3-?
-Cell Identifier List Segment for cells to be established 3.2.2.27c BSS-MSC O (note 1) 3-?
-Cell Identifier List Segment for released cells - no user present 3.2.2.27e BSS-MSC O (note 1) 3-?
-Cell Identifier List Segment for not established cells - no establishment possible 3.2.2.27f BSS-MSC O (note 1) 3-?
-VGCS/VBS Cell Status 3.2.2.94 BSS-MSC O (note 2) 3
+Cell Identifier List Segment for established cells 3.2.2.27b BSS-MSC O (note 1) 3-?
+Cell Identifier List Segment for cells to be established 3.2.2.27c BSS-MSC O (note 1) 3-?
+Cell Identifier List Segment for released cells - no user present 3.2.2.27e BSS-MSC O (note 1) 3-?
+Cell Identifier List Segment for not established cells - no establishment possible 3.2.2.27f BSS-MSC O (note 1) 3-?
+VGCS/VBS Cell Status 3.2.2.94 BSS-MSC O (note 2) 3
*/
/*
- * 3.2.1.81 VGCS SMS
+ * 3.2.1.81 VGCS SMS
*/
static void
bssmap_vgcs_sms(tvbuff_t *tvb, proto_tree *tree, 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;
- /* SMS to VGCS 3.2.2.92 MSC-BSS M 2-250 */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_SMS_TO_VGCS].value, BSSAP_PDU_TYPE_BSSMAP, BE_SMS_TO_VGCS, NULL);
+ /* SMS to VGCS 3.2.2.92 MSC-BSS M 2-250 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_SMS_TO_VGCS].value, BSSAP_PDU_TYPE_BSSMAP, BE_SMS_TO_VGCS, NULL);
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
- * 3.2.1.82 NOTIFICATION DATA
+ * 3.2.1.82 NOTIFICATION DATA
*/
static void
bssmap_notification_data(tvbuff_t *tvb, proto_tree *tree, 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;
- /* Application Data 3.2.2.98 MSC-BSS M 11 */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_APP_DATA_INF].value, BSSAP_PDU_TYPE_BSSMAP, BE_APP_DATA_INF, NULL);
- /* Data Identity 3.2.2.99 MSC-BSS M 3 */
- /* MSISDN 3.2.2.101 MSC-BSS O 2-12 */
+ /* Application Data 3.2.2.98 MSC-BSS M 11 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_APP_DATA_INF].value, BSSAP_PDU_TYPE_BSSMAP, BE_APP_DATA_INF, NULL);
+ /* Data Identity 3.2.2.99 MSC-BSS M 3 */
+ /* MSISDN 3.2.2.101 MSC-BSS O 2-12 */
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
- * 3.2.1.83 INTERNAL HANDOVER REQUIRED
+ * 3.2.1.83 INTERNAL HANDOVER REQUIRED
*/
static void
bssmap_int_ho_req(tvbuff_t *tvb, proto_tree *tree, 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;
- /* Cause 3.2.2.5 BSS-MSC M 3-4 */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, NULL);
- /* Cell Identifier 3.2.2.17 BSS-MSC M 4-10 */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CELL_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID, NULL);
- /* AoIP Transport Layer Address (BSS) 3.2.2.nn BSS-MSC C (Note 1) 10-22 */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_AOIP_TRANS_LAY_ADD].value, BSSAP_PDU_TYPE_BSSMAP, BE_AOIP_TRANS_LAY_ADD, NULL);
- /* Codec List (BSS Supported) 3.2.2.nn BSS-MSC M 3-n */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SPEECH_CODEC_LST].value, BSSAP_PDU_TYPE_BSSMAP, BE_SPEECH_CODEC_LST, "(BSS Supported)");
+ /* Cause 3.2.2.5 BSS-MSC M 3-4 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, NULL);
+ /* Cell Identifier 3.2.2.17 BSS-MSC M 4-10 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CELL_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID, NULL);
+ /* AoIP Transport Layer Address (BSS) 3.2.2.nn BSS-MSC C (Note 1) 10-22 */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_AOIP_TRANS_LAY_ADD].value, BSSAP_PDU_TYPE_BSSMAP, BE_AOIP_TRANS_LAY_ADD, NULL);
+ /* Codec List (BSS Supported) 3.2.2.nn BSS-MSC M 3-n */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SPEECH_CODEC_LST].value, BSSAP_PDU_TYPE_BSSMAP, BE_SPEECH_CODEC_LST, "(BSS Supported)");
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
- * 3.2.1.84 INTERNAL HANDOVER REQUIRED REJECT
+ * 3.2.1.84 INTERNAL HANDOVER REQUIRED REJECT
*/
static void
bssmap_int_ho_req_rej(tvbuff_t *tvb, proto_tree *tree, 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;
- /* Cause 3.2.2.5 MSC-BSS M 3-4 */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, NULL);
- /* Codec List (MSC Preferred) 3.2.2.nn MSC-BSS O 3-n */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SPEECH_CODEC_LST].value, BSSAP_PDU_TYPE_BSSMAP, BE_SPEECH_CODEC_LST, "(BSS Supported)");
+ /* Cause 3.2.2.5 MSC-BSS M 3-4 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, NULL);
+ /* Codec List (MSC Preferred) 3.2.2.nn MSC-BSS O 3-n */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SPEECH_CODEC_LST].value, BSSAP_PDU_TYPE_BSSMAP, BE_SPEECH_CODEC_LST, "(BSS Supported)");
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
-/*
- * 3.2.1.85 INTERNAL HANDOVER COMMAND
+/*
+ * 3.2.1.85 INTERNAL HANDOVER COMMAND
*/
static void
bssmap_int_ho_cmd(tvbuff_t *tvb, proto_tree *tree, 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;
- /* Speech Codec (MSC Chosen) 3.2.2.nn MSC-BSS M (note 1) 3-n */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SPEECH_CODEC].value, BSSAP_PDU_TYPE_BSSMAP, BE_SPEECH_CODEC, "(Chosen)");
- /* Circuit Identity Code 3.2.2.2 MSC-BSS C (note 2) 3 */
- ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_CIC].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC, NULL);
- /* AoIP Transport Layer Address (MGW) 3.2.2.nn MSC-BSS C (note 2) 10-22 */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_AOIP_TRANS_LAY_ADD].value, BSSAP_PDU_TYPE_BSSMAP, BE_AOIP_TRANS_LAY_ADD, NULL);
+ /* Speech Codec (MSC Chosen) 3.2.2.nn MSC-BSS M (note 1) 3-n */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SPEECH_CODEC].value, BSSAP_PDU_TYPE_BSSMAP, BE_SPEECH_CODEC, "(Chosen)");
+ /* Circuit Identity Code 3.2.2.2 MSC-BSS C (note 2) 3 */
+ ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_CIC].value, BSSAP_PDU_TYPE_BSSMAP, BE_CIC, NULL);
+ /* AoIP Transport Layer Address (MGW) 3.2.2.nn MSC-BSS C (note 2) 10-22 */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_AOIP_TRANS_LAY_ADD].value, BSSAP_PDU_TYPE_BSSMAP, BE_AOIP_TRANS_LAY_ADD, NULL);
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
- * 3.2.1.86 INTERNAL HANDOVER ENQUIRY
+ * 3.2.1.86 INTERNAL HANDOVER ENQUIRY
*/
static void
bssmap_int_ho_enq(tvbuff_t *tvb, proto_tree *tree, 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;
- /* Speech Codec (MSC Chosen) 3.2.2.104 MSC-BSS M 3-n */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SPEECH_CODEC].value, BSSAP_PDU_TYPE_BSSMAP, BE_SPEECH_CODEC, "(Chosen)");
+ /* Speech Codec (MSC Chosen) 3.2.2.104 MSC-BSS M 3-n */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SPEECH_CODEC].value, BSSAP_PDU_TYPE_BSSMAP, BE_SPEECH_CODEC, "(Chosen)");
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
- * 3.2.1.87 RESET RESOURCE
+ * 3.2.1.87 RESET RESOURCE
*/
static void
bssmap_reset_res(tvbuff_t *tvb, proto_tree *tree, 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;
+ /* Cause 3.2.2.5 Both M 3-4 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, NULL);
+ /* Call Identifier List 3.2.2.106 Both M 6-n */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_CALL_ID_LST].value, BSSAP_PDU_TYPE_BSSMAP, BE_CALL_ID_LST, NULL);
- /* Cause 3.2.2.5 Both M 3-4 */
- ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_CAUSE, NULL);
- /* Call Identifier List 3.2.2.106 Both M 6-n */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_CALL_ID_LST].value, BSSAP_PDU_TYPE_BSSMAP, BE_CALL_ID_LST, NULL);
-
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
- * 3.2.1.88 RESET RESOURCE ACKNOWLEDGE
+ * 3.2.1.88 RESET RESOURCE ACKNOWLEDGE
*/
static void
bssmap_reset_res_ack(tvbuff_t *tvb, proto_tree *tree, 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;
+ /* Call Identifier List 3.2.2.106 Both M 6-n */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_CALL_ID_LST].value, BSSAP_PDU_TYPE_BSSMAP, BE_CALL_ID_LST, NULL);
- /* Call Identifier List 3.2.2.106 Both M 6-n */
- ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_CALL_ID_LST].value, BSSAP_PDU_TYPE_BSSMAP, BE_CALL_ID_LST, NULL);
-
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
-#define NUM_GSM_BSSMAP_MSG (sizeof(gsm_a_bssmap_msg_strings)/sizeof(value_string))
+#define NUM_GSM_BSSMAP_MSG (sizeof(gsm_a_bssmap_msg_strings)/sizeof(value_string))
static gint ett_gsm_bssmap_msg[NUM_GSM_BSSMAP_MSG];
static void (*bssmap_msg_fcn[])(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len) = {
- bssmap_ass_req, /* Assignment Request */
- bssmap_ass_complete, /* Assignment Complete */
- bssmap_ass_failure, /* Assignment Failure */
- bssmap_chan_mod_req, /* Channel Modify request */
- bssmap_ho_req, /* Handover Request */
- bssmap_ho_reqd, /* Handover Required */
- bssmap_ho_req_ack, /* Handover Request Acknowledge */
- bssmap_ho_cmd, /* Handover Command */
- bssmap_ho_complete, /* Handover Complete */
- bssmap_ho_succ , /* Handover Succeeded */
- bssmap_ho_failure, /* Handover Failure */
- bssmap_ho_performed, /* Handover Performed */
- bssmap_ho_cand_enq, /* Handover Candidate Enquire */
- bssmap_ho_cand_resp, /* Handover Candidate Response */
- bssmap_ho_reqd_rej, /* Handover Required Reject */
- bssmap_ho_det, /* Handover Detect */
- bssmap_int_ho_req, /* Internal Handover Required */
- bssmap_int_ho_req_rej, /* Internal Handover Required Reject */
- bssmap_int_ho_cmd, /* Internal Handover Command */
- bssmap_int_ho_enq, /* Internal Handover Enquiry */
- bssmap_clear_cmd, /* Clear Command */
- NULL /* no associated data */, /* Clear Complete */
- bssmap_clear_req, /* Clear Request */
- NULL, /* Reserved */
- NULL, /* Reserved */
- bssmap_sapi_rej, /* SAPI 'n' Reject */
- bssmap_confusion, /* Confusion */
- bssmap_sus, /* Suspend */
- bssmap_res, /* Resume */
- bssmap_conn_oriented, /* Connection Oriented Information */
- bssmap_perf_loc_req, /* Perform Location Request */
- bssmap_lsa_info, /* LSA Information */
- bssmap_perf_loc_res, /* Perform Location Response */
- bssmap_perf_loc_abort, /* Perform Location Abort */
- bssmap_common_id, /* Common Id */
- bssmap_reset, /* Reset */
- NULL /* no associated data */, /* Reset Acknowledge */
- bssmap_overload, /* Overload */
- NULL, /* Reserved */
- bssmap_reset_cct, /* Reset Circuit */
- bssmap_reset_cct_ack, /* Reset Circuit Acknowledge */
- bssmap_msc_invoke_trace, /* MSC Invoke Trace */
- bssmap_bss_invoke_trace, /* BSS Invoke Trace */
- NULL, /* Connectionless Information */
- bssmap_reset_res, /* Reset Resource */
- bssmap_reset_res_ack, /* Reset Resource Acknowledge */
- bssmap_block, /* Block */
- bssmap_block_ack, /* Blocking Acknowledge */
- bssmap_unblock, /* Unblock */
- bssmap_unblock_ack, /* Unblocking Acknowledge */
- bssmap_cct_group_block, /* Circuit Group Block */
- bssmap_cct_group_block_ack, /* Circuit Group Blocking Acknowledge */
- bssmap_cct_group_unblock, /* Circuit Group Unblock */
- bssmap_cct_group_unblock_ack, /* Circuit Group Unblocking Acknowledge */
- bssmap_unequipped_cct, /* Unequipped Circuit */
- bssmap_change_cct, /* Change Circuit */
- bssmap_change_cct_ack, /* Change Circuit Acknowledge */
- bssmap_res_req, /* Resource Request */
- bssmap_res_ind, /* Resource Indication */
- bssmap_paging, /* Paging */
- bssmap_ciph_mode_cmd, /* Cipher Mode Command */
- bssmap_cm_upd, /* Classmark Update */
- bssmap_ciph_mode_complete, /* Cipher Mode Complete */
- NULL /* no associated data */, /* Queuing Indication */
- bssmap_cl3_info, /* Complete Layer 3 Information */
- bssmap_cls_m_req /* no associated data */, /* Classmark Request */
- bssmap_ciph_mode_rej, /* Cipher Mode Reject */
- bssmap_load_ind, /* Load Indication */
- bssmap_vgcs_vbs_setup, /* VGCS/VBS Setup */
- bssmap_vgcs_vbs_setup_ack, /* VGCS/VBS Setup Ack */
- bssmap_vgcs_vbs_setup_refuse, /* VGCS/VBS Setup Refuse */
- bssmap_vgcs_vbs_ass_req, /* VGCS/VBS Assignment Request */
- bssmap_vgcs_vbs_ass_res, /* VGCS/VBS Assignment Result */
- bssmap_vgcs_vbs_ass_fail, /* VGCS/VBS Assignment Failure */
- NULL, /* No dsta VGCS/VBS Queuing Indication */
- bssmap_uplink_req, /* Uplink Request */
- bssmap_uplink_req_ack, /* Uplink Request Acknowledge */
- bssmap_uplink_req_conf, /* Uplink Request Confirmation */
- bssmap_uplink_rel_ind, /* Uplink Release Indication */
- bssmap_uplink_rej_cmd, /* Uplink Reject Command */
- bssmap_uplink_rel_cmd, /* Uplink Release Command */
- bssmap_uplink_seized_cmd, /* Uplink Seized Command */
- bssmap_vgcs_add_inf, /* VGCS Additional Information */
- bssmap_vgcs_sms, /* VGCS SMS */
- bssmap_notification_data, /* Notification Data*/
- bssmap_uplink_app_data, /* Uplink Application Data */
- NULL, /* NONE */
+ bssmap_ass_req, /* Assignment Request */
+ bssmap_ass_complete, /* Assignment Complete */
+ bssmap_ass_failure, /* Assignment Failure */
+ bssmap_chan_mod_req, /* Channel Modify request */
+ bssmap_ho_req, /* Handover Request */
+ bssmap_ho_reqd, /* Handover Required */
+ bssmap_ho_req_ack, /* Handover Request Acknowledge */
+ bssmap_ho_cmd, /* Handover Command */
+ bssmap_ho_complete, /* Handover Complete */
+ bssmap_ho_succ , /* Handover Succeeded */
+ bssmap_ho_failure, /* Handover Failure */
+ bssmap_ho_performed, /* Handover Performed */
+ bssmap_ho_cand_enq, /* Handover Candidate Enquire */
+ bssmap_ho_cand_resp, /* Handover Candidate Response */
+ bssmap_ho_reqd_rej, /* Handover Required Reject */
+ bssmap_ho_det, /* Handover Detect */
+ bssmap_int_ho_req, /* Internal Handover Required */
+ bssmap_int_ho_req_rej, /* Internal Handover Required Reject */
+ bssmap_int_ho_cmd, /* Internal Handover Command */
+ bssmap_int_ho_enq, /* Internal Handover Enquiry */
+ bssmap_clear_cmd, /* Clear Command */
+ NULL /* no associated data */, /* Clear Complete */
+ bssmap_clear_req, /* Clear Request */
+ NULL, /* Reserved */
+ NULL, /* Reserved */
+ bssmap_sapi_rej, /* SAPI 'n' Reject */
+ bssmap_confusion, /* Confusion */
+ bssmap_sus, /* Suspend */
+ bssmap_res, /* Resume */
+ bssmap_conn_oriented, /* Connection Oriented Information */
+ bssmap_perf_loc_req, /* Perform Location Request */
+ bssmap_lsa_info, /* LSA Information */
+ bssmap_perf_loc_res, /* Perform Location Response */
+ bssmap_perf_loc_abort, /* Perform Location Abort */
+ bssmap_common_id, /* Common Id */
+ bssmap_reset, /* Reset */
+ NULL /* no associated data */, /* Reset Acknowledge */
+ bssmap_overload, /* Overload */
+ NULL, /* Reserved */
+ bssmap_reset_cct, /* Reset Circuit */
+ bssmap_reset_cct_ack, /* Reset Circuit Acknowledge */
+ bssmap_msc_invoke_trace, /* MSC Invoke Trace */
+ bssmap_bss_invoke_trace, /* BSS Invoke Trace */
+ NULL, /* Connectionless Information */
+ bssmap_reset_res, /* Reset Resource */
+ bssmap_reset_res_ack, /* Reset Resource Acknowledge */
+ bssmap_block, /* Block */
+ bssmap_block_ack, /* Blocking Acknowledge */
+ bssmap_unblock, /* Unblock */
+ bssmap_unblock_ack, /* Unblocking Acknowledge */
+ bssmap_cct_group_block, /* Circuit Group Block */
+ bssmap_cct_group_block_ack, /* Circuit Group Blocking Acknowledge */
+ bssmap_cct_group_unblock, /* Circuit Group Unblock */
+ bssmap_cct_group_unblock_ack, /* Circuit Group Unblocking Acknowledge */
+ bssmap_unequipped_cct, /* Unequipped Circuit */
+ bssmap_change_cct, /* Change Circuit */
+ bssmap_change_cct_ack, /* Change Circuit Acknowledge */
+ bssmap_res_req, /* Resource Request */
+ bssmap_res_ind, /* Resource Indication */
+ bssmap_paging, /* Paging */
+ bssmap_ciph_mode_cmd, /* Cipher Mode Command */
+ bssmap_cm_upd, /* Classmark Update */
+ bssmap_ciph_mode_complete, /* Cipher Mode Complete */
+ NULL /* no associated data */, /* Queuing Indication */
+ bssmap_cl3_info, /* Complete Layer 3 Information */
+ bssmap_cls_m_req /* no associated data */, /* Classmark Request */
+ bssmap_ciph_mode_rej, /* Cipher Mode Reject */
+ bssmap_load_ind, /* Load Indication */
+ bssmap_vgcs_vbs_setup, /* VGCS/VBS Setup */
+ bssmap_vgcs_vbs_setup_ack, /* VGCS/VBS Setup Ack */
+ bssmap_vgcs_vbs_setup_refuse, /* VGCS/VBS Setup Refuse */
+ bssmap_vgcs_vbs_ass_req, /* VGCS/VBS Assignment Request */
+ bssmap_vgcs_vbs_ass_res, /* VGCS/VBS Assignment Result */
+ bssmap_vgcs_vbs_ass_fail, /* VGCS/VBS Assignment Failure */
+ NULL, /* No dsta VGCS/VBS Queuing Indication */
+ bssmap_uplink_req, /* Uplink Request */
+ bssmap_uplink_req_ack, /* Uplink Request Acknowledge */
+ bssmap_uplink_req_conf, /* Uplink Request Confirmation */
+ bssmap_uplink_rel_ind, /* Uplink Release Indication */
+ bssmap_uplink_rej_cmd, /* Uplink Reject Command */
+ bssmap_uplink_rel_cmd, /* Uplink Release Command */
+ bssmap_uplink_seized_cmd, /* Uplink Seized Command */
+ bssmap_vgcs_add_inf, /* VGCS Additional Information */
+ bssmap_vgcs_sms, /* VGCS SMS */
+ bssmap_notification_data, /* Notification Data*/
+ bssmap_uplink_app_data, /* Uplink Application Data */
+ NULL, /* NONE */
};
void
dissect_bssmap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- static gsm_a_tap_rec_t tap_rec[4];
- static gsm_a_tap_rec_t *tap_p;
- static guint tap_current=0;
- guint8 oct;
- guint32 offset, saved_offset;
- guint32 len;
- gint idx;
- proto_item *bssmap_item = NULL;
- proto_tree *bssmap_tree = NULL;
- const gchar *str;
- sccp_msg_info_t* sccp_msg_p;
-
- sccp_msg_p = pinfo->sccp_info;
-
- if (!(sccp_msg_p && sccp_msg_p->data.co.assoc)) {
- sccp_msg_p = NULL;
- }
-
- col_append_str(pinfo->cinfo, COL_INFO, "(BSSMAP) ");
-
- /*
- * set tap record pointer
- */
- tap_current++;
- if (tap_current >= 4)
- {
- tap_current = 0;
- }
- tap_p = &tap_rec[tap_current];
-
-
- offset = 0;
- saved_offset = offset;
-
- g_pinfo = pinfo;
- g_tree = tree;
-
- len = tvb_length(tvb);
-
- /*
- * add BSSMAP message name
- */
- oct = tvb_get_guint8(tvb, offset++);
-
- str = match_strval_idx((guint32) oct, gsm_a_bssmap_msg_strings, &idx);
-
- if (sccp_msg_p && !sccp_msg_p->data.co.label) {
- sccp_msg_p->data.co.label = se_strdup(val_to_str((guint32) oct, gsm_a_bssmap_msg_strings, "BSSMAP (0x%02x)"));
- }
-
- /*
- * create the protocol tree
- */
- if (str == NULL)
- {
- bssmap_item =
- proto_tree_add_protocol_format(tree, proto_a_bssmap, tvb, 0, len,
- "GSM A-I/F BSSMAP - Unknown BSSMAP Message Type (0x%02x)",
- oct);
-
- bssmap_tree = proto_item_add_subtree(bssmap_item, ett_bssmap_msg);
- }
- else
- {
- bssmap_item =
- proto_tree_add_protocol_format(tree, proto_a_bssmap, tvb, 0, -1,
- "GSM A-I/F BSSMAP - %s",
- str);
-
- bssmap_tree = proto_item_add_subtree(bssmap_item, ett_gsm_bssmap_msg[idx]);
-
- if (check_col(pinfo->cinfo, COL_INFO))
- {
- col_append_fstr(pinfo->cinfo, COL_INFO, "%s ", str);
- }
-
- /*
- * add BSSMAP message name
- */
- proto_tree_add_uint_format(bssmap_tree, hf_gsm_a_bssmap_msg_type,
- tvb, saved_offset, 1, oct, "Message Type %s",str);
- }
-
- tap_p->pdu_type = BSSAP_PDU_TYPE_BSSMAP;
- tap_p->message_type = oct;
-
- tap_queue_packet(gsm_a_tap, pinfo, tap_p);
-
- if (str == NULL) return;
-
- if ((len - offset) <= 0) return;
-
- /*
- * decode elements
- */
- if (bssmap_msg_fcn[idx] == NULL)
- {
- proto_tree_add_text(bssmap_tree,
- tvb, offset, len - offset,
- "Message Elements");
- }
- else
- {
- (*bssmap_msg_fcn[idx])(tvb, bssmap_tree, offset, len - offset);
- }
- g_pinfo = NULL;
- g_tree = NULL;
+ static gsm_a_tap_rec_t tap_rec[4];
+ static gsm_a_tap_rec_t *tap_p;
+ static guint tap_current=0;
+ guint8 oct;
+ guint32 offset, saved_offset;
+ guint32 len;
+ gint idx;
+ proto_item *bssmap_item = NULL;
+ proto_tree *bssmap_tree = NULL;
+ const gchar *str;
+ sccp_msg_info_t* sccp_msg_p;
+
+ sccp_msg_p = pinfo->sccp_info;
+
+ if (!(sccp_msg_p && sccp_msg_p->data.co.assoc)) {
+ sccp_msg_p = NULL;
+ }
+
+ col_append_str(pinfo->cinfo, COL_INFO, "(BSSMAP) ");
+
+ /*
+ * set tap record pointer
+ */
+ tap_current++;
+ if (tap_current >= 4)
+ {
+ tap_current = 0;
+ }
+ tap_p = &tap_rec[tap_current];
+
+
+ offset = 0;
+ saved_offset = offset;
+
+ g_pinfo = pinfo;
+ g_tree = tree;
+
+ len = tvb_length(tvb);
+
+ /*
+ * add BSSMAP message name
+ */
+ oct = tvb_get_guint8(tvb, offset++);
+
+ str = match_strval_idx((guint32) oct, gsm_a_bssmap_msg_strings, &idx);
+
+ if (sccp_msg_p && !sccp_msg_p->data.co.label) {
+ sccp_msg_p->data.co.label = se_strdup(val_to_str((guint32) oct, gsm_a_bssmap_msg_strings, "BSSMAP (0x%02x)"));
+ }
+
+ /*
+ * create the protocol tree
+ */
+ if (str == NULL)
+ {
+ bssmap_item =
+ proto_tree_add_protocol_format(tree, proto_a_bssmap, tvb, 0, len,
+ "GSM A-I/F BSSMAP - Unknown BSSMAP Message Type (0x%02x)",
+ oct);
+
+ bssmap_tree = proto_item_add_subtree(bssmap_item, ett_bssmap_msg);
+ }
+ else
+ {
+ bssmap_item =
+ proto_tree_add_protocol_format(tree, proto_a_bssmap, tvb, 0, -1,
+ "GSM A-I/F BSSMAP - %s",
+ str);
+
+ bssmap_tree = proto_item_add_subtree(bssmap_item, ett_gsm_bssmap_msg[idx]);
+
+ if (check_col(pinfo->cinfo, COL_INFO))
+ {
+ col_append_fstr(pinfo->cinfo, COL_INFO, "%s ", str);
+ }
+
+ /*
+ * add BSSMAP message name
+ */
+ proto_tree_add_uint_format(bssmap_tree, hf_gsm_a_bssmap_msg_type,
+ tvb, saved_offset, 1, oct, "Message Type %s",str);
+ }
+
+ tap_p->pdu_type = BSSAP_PDU_TYPE_BSSMAP;
+ tap_p->message_type = oct;
+
+ tap_queue_packet(gsm_a_tap, pinfo, tap_p);
+
+ if (str == NULL) return;
+
+ if ((len - offset) <= 0) return;
+
+ /*
+ * decode elements
+ */
+ if (bssmap_msg_fcn[idx] == NULL)
+ {
+ proto_tree_add_text(bssmap_tree,
+ tvb, offset, len - offset,
+ "Message Elements");
+ }
+ else
+ {
+ (*bssmap_msg_fcn[idx])(tvb, bssmap_tree, offset, len - offset);
+ }
+ g_pinfo = NULL;
+ g_tree = NULL;
}
/* Register the protocol with Wireshark */
void
proto_register_gsm_a_bssmap(void)
{
- guint i;
- guint last_offset;
-
- /* Setup list of header fields */
-
- static hf_register_info hf[] =
- {
- { &hf_gsm_a_bssmap_msg_type,
- { "BSSMAP Message Type", "gsm_a.bssmap_msgtype",
- FT_UINT8, BASE_HEX, VALS(gsm_a_bssmap_msg_strings), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_elem_id,
- { "Element ID", "gsm_a_bssmap.elem_id",
- FT_UINT8, BASE_DEC, NULL, 0,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_field_elem_id,
- { "Field Element ID", "gsm_a_bssmap.field_elem_id",
- FT_UINT8, BASE_HEX, VALS(bssmap_field_element_ids), 0,
- NULL, HFILL }
- },
- { &hf_gsm_a_length,
- { "Length", "gsm_a.len",
- FT_UINT16, BASE_DEC, NULL, 0,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_cell_ci,
- { "Cell CI", "gsm_a.cell_ci",
- FT_UINT16, BASE_HEX_DEC, 0, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_cell_lac,
- { "Cell LAC", "gsm_a.cell_lac",
- FT_UINT16, BASE_HEX_DEC, 0, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_sac,
- { "SAC", "gsm_a.sac",
- FT_UINT16, BASE_HEX, 0, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_dlci_cc,
- { "Control Channel", "bssap.dlci.cc",
- FT_UINT8, BASE_HEX, VALS(bssap_cc_values), 0xc0,
- NULL, HFILL}
- },
- { &hf_gsm_a_bssmap_dlci_spare,
- { "Spare", "bssap.dlci.spare",
- FT_UINT8, BASE_HEX, NULL, 0x38,
- NULL, HFILL}
- },
- { &hf_gsm_a_bssmap_dlci_sapi,
- { "SAPI", "bssap.dlci.sapi",
- FT_UINT8, BASE_HEX, VALS(bssap_sapi_values), 0x07,
- NULL, HFILL}
- },
- { &hf_gsm_a_bssmap_cause,
- { "BSSMAP Cause", "gsm_a_bssmap.cause",
- FT_UINT8, BASE_HEX, 0, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_be_cell_id_disc,
- { "Cell identification discriminator","gsm_a.be.cell_id_disc",
- FT_UINT8,BASE_DEC, VALS(gsm_a_be_cell_id_disc_vals), 0x0f,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_lsa_only,
- { "LSA only","ggsm_a_bssmap.lsa_only",
- FT_BOOLEAN,8, TFS(&bssmap_lsa_only_value), 0x01,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_act,
- { "Active mode support","gsm_a_bssmap.act",
- FT_BOOLEAN,8, NULL, 0x20,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_pref,
- { "Preferential access","gsm_a_bssmap.pref",
- FT_BOOLEAN,8, NULL, 0x10,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_lsa_inf_prio,
- { "Priority","gsm_a_bssmap.lsa_inf_prio",
- FT_UINT8,BASE_DEC, NULL, 0x0f,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_seq_len,
- { "Sequence Length","gsm_a_bssmap.seq_len",
- FT_UINT8,BASE_DEC, NULL, 0xf0,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_seq_no,
- { "Sequence Number","gsm_a_bssmap.seq_no",
- FT_UINT8,BASE_DEC, NULL, 0xf,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssap_cell_id_list_seg_cell_id_disc,
- { "Cell identification discriminator","gsm_a_bssmap.cell_id_list_seg_cell_id_disc",
- FT_UINT8,BASE_DEC, VALS(gsm_a_bssap_cell_id_list_seg_cell_id_disc_vals), 0xf,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssap_res_ind_method,
- { "Resource indication method","gsm_a_bssmap.res_ind_method",
- FT_UINT8,BASE_DEC, VALS(gsm_a_bssap_resource_indication_vals), 0xf,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_ch_mode,
- { "Channel mode","gsm_a_bssmap.cch_mode",
- FT_UINT8,BASE_DEC, VALS(gsm_a_bssmap_ch_mode_vals), 0xf0,
- NULL, HFILL }
- },
+ guint i;
+ guint last_offset;
+
+ /* Setup list of header fields */
+
+ static hf_register_info hf[] =
+ {
+ { &hf_gsm_a_bssmap_msg_type,
+ { "BSSMAP Message Type", "gsm_a.bssmap_msgtype",
+ FT_UINT8, BASE_HEX, VALS(gsm_a_bssmap_msg_strings), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_elem_id,
+ { "Element ID", "gsm_a_bssmap.elem_id",
+ FT_UINT8, BASE_DEC, NULL, 0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_field_elem_id,
+ { "Field Element ID", "gsm_a_bssmap.field_elem_id",
+ FT_UINT8, BASE_HEX, VALS(bssmap_field_element_ids), 0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_length,
+ { "Length", "gsm_a.len",
+ FT_UINT16, BASE_DEC, NULL, 0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_cell_ci,
+ { "Cell CI", "gsm_a.cell_ci",
+ FT_UINT16, BASE_HEX_DEC, 0, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_cell_lac,
+ { "Cell LAC", "gsm_a.cell_lac",
+ FT_UINT16, BASE_HEX_DEC, 0, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_sac,
+ { "SAC", "gsm_a.sac",
+ FT_UINT16, BASE_HEX, 0, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_dlci_cc,
+ { "Control Channel", "bssap.dlci.cc",
+ FT_UINT8, BASE_HEX, VALS(bssap_cc_values), 0xc0,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_bssmap_dlci_spare,
+ { "Spare", "bssap.dlci.spare",
+ FT_UINT8, BASE_HEX, NULL, 0x38,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_bssmap_dlci_sapi,
+ { "SAPI", "bssap.dlci.sapi",
+ FT_UINT8, BASE_HEX, VALS(bssap_sapi_values), 0x07,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_bssmap_cause,
+ { "BSSMAP Cause", "gsm_a_bssmap.cause",
+ FT_UINT8, BASE_HEX, 0, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_be_cell_id_disc,
+ { "Cell identification discriminator","gsm_a.be.cell_id_disc",
+ FT_UINT8,BASE_DEC, VALS(gsm_a_be_cell_id_disc_vals), 0x0f,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_lsa_only,
+ { "LSA only","ggsm_a_bssmap.lsa_only",
+ FT_BOOLEAN,8, TFS(&bssmap_lsa_only_value), 0x01,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_act,
+ { "Active mode support","gsm_a_bssmap.act",
+ FT_BOOLEAN,8, NULL, 0x20,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_pref,
+ { "Preferential access","gsm_a_bssmap.pref",
+ FT_BOOLEAN,8, NULL, 0x10,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_lsa_inf_prio,
+ { "Priority","gsm_a_bssmap.lsa_inf_prio",
+ FT_UINT8,BASE_DEC, NULL, 0x0f,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_seq_len,
+ { "Sequence Length","gsm_a_bssmap.seq_len",
+ FT_UINT8,BASE_DEC, NULL, 0xf0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_seq_no,
+ { "Sequence Number","gsm_a_bssmap.seq_no",
+ FT_UINT8,BASE_DEC, NULL, 0xf,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssap_cell_id_list_seg_cell_id_disc,
+ { "Cell identification discriminator","gsm_a_bssmap.cell_id_list_seg_cell_id_disc",
+ FT_UINT8,BASE_DEC, VALS(gsm_a_bssap_cell_id_list_seg_cell_id_disc_vals), 0xf,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssap_res_ind_method,
+ { "Resource indication method","gsm_a_bssmap.res_ind_method",
+ FT_UINT8,BASE_DEC, VALS(gsm_a_bssap_resource_indication_vals), 0xf,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_ch_mode,
+ { "Channel mode","gsm_a_bssmap.cch_mode",
+ FT_UINT8,BASE_DEC, VALS(gsm_a_bssmap_ch_mode_vals), 0xf0,
+ NULL, HFILL }
+ },
{ &hf_gsm_a_bssmap_cur_ch_mode,
{ "Channel Mode", "fe_cur_chan_type2.chan_mode",
FT_UINT8, BASE_HEX, VALS(chan_mode_vals), 0xf0,
NULL, HFILL }
},
- { &hf_gsm_a_bssmap_channel,
- { "Channel","gsm_a_bssmap.channel",
- FT_UINT8,BASE_DEC, VALS(gsm_a_bssmap_channel_vals), 0x0f,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_trace_trigger_id,
- { "Priority Indication","gsm_a_bssmap.trace_trigger_id",
- FT_STRING, BASE_NONE, NULL, 0x0,
+ { &hf_gsm_a_bssmap_channel,
+ { "Channel","gsm_a_bssmap.channel",
+ FT_UINT8,BASE_DEC, VALS(gsm_a_bssmap_channel_vals), 0x0f,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_trace_trigger_id,
+ { "Priority Indication","gsm_a_bssmap.trace_trigger_id",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_trace_priority_indication,
+ { "Priority Indication","gsm_a_bssmap.trace_priority_indication",
+ FT_UINT8,BASE_DEC, NULL, 0x00,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_trace_bss_record_type,
+ { "BSS Record Type","gsm_a_bssmap.bss_record__type",
+ FT_UINT8,BASE_DEC, VALS(gsm_a_bssmap_trace_bss_record_type_vals), 0x00,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_trace_msc_record_type,
+ { "MSC Record Type","gsm_a_bssmap.msc_record_type",
+ FT_UINT8,BASE_DEC, VALS(gsm_a_bssmap_trace_msc_record_type_vals), 0x00,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_trace_invoking_event,
+ { "Invoking Event","gsm_a_bssmap.trace_invoking_event",
+ FT_UINT8,BASE_DEC, VALS(gsm_a_bssmap_trace_invoking_event_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_trace_reference,
+ { "Trace Reference","gsm_a_bssmap.trace_id",
+ FT_UINT16,BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_trace_omc_id,
+ { "OMC ID","gsm_a_bssmap.trace_omc_id",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_be_rnc_id,
+ { "RNC-ID","gsm_a.be.rnc_id",
+ FT_UINT16,BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_apdu_protocol_id,
+ { "Protocol ID", "gsm_a.apdu_protocol_id",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_apdu_protocol_id_strings), 0x0,
+ "APDU embedded protocol id", HFILL }
+ },
+ { &hf_gsm_a_bssmap_periodicity,
+ { "Periodicity", "gsm_a_bssmap.periodicity",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_sm,
+ { "Subsequent Mode","gsm_a_bssmap.sm",
+ FT_BOOLEAN,8, NULL, 0x02,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_tarr,
+ { "Total Accessible Resource Requested","gsm_a_bssmap.tarr",
+ FT_BOOLEAN,8, NULL, 0x01,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_tot_no_of_fullr_ch,
+ { "Total number of accessible full rate channels", "gsm_a_bssmap.tot_no_of_fullr_ch",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_tot_no_of_hr_ch,
+ { "Total number of accessible half rate channels", "gsm_a_bssmap.tot_no_of_hr_ch",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_lsa_id,
+ { "Identification of Localised Service Area", "gsm_a_bssmap.lsa_id",
+ FT_UINT24, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_ep,
+ { "EP", "gsm_a_bssmap.ep",
+ FT_UINT8, BASE_DEC, NULL, 0x01,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_smi,
+ { "Subsequent Modification Indication(SMI)", "gsm_a_bssmap.smi",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_bssmap_smi_vals), 0x0f,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_lcs_pri,
+ { "Periodicity", "gsm_a_bssmap.lcs_pri",
+ FT_UINT8, BASE_DEC, VALS(lcs_priority_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_num_ms,
+ { "Number of handover candidates", "gsm_a_bssmap.num_ms",
+ FT_UINT8, BASE_DEC,NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_talker_pri,
+ { "Priority", "gsm_a_bssmap.talker_pri",
+ FT_UINT8, BASE_DEC,VALS(gsm_a_bssmap_talker_pri_vals), 0x03,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_paging_cause,
+ { "Paging Cause", "gsm_a_bssmap.paging_cause",
+ FT_UINT8, BASE_DEC,VALS(gsm_a_bssmap_paging_cause_vals), 0x06,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_paging_inf_flg,
+ { "VGCS/VBS flag","ggsm_a_bssmap.paging_inf_flg",
+ FT_BOOLEAN,8, TFS(&bssmap_paging_inf_flg_value), 0x01,
+ "If 1, a member of a VGCS/VBS-group", HFILL }
+ },
+ { &hf_gsm_a_bssmap_serv_ho_inf,
+ { "Service Handover information", "gsm_a_bssmap.serv_ho_inf",
+ FT_UINT8, BASE_HEX, NULL, 0x07,
+ NULL, HFILL }
+ },
+
+ { &hf_gsm_a_bssmap_spare_bits,
+ { "Spare bit(s)", "gsm_a_bssmap.spare_bits",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_tpind,
+ { "Talker priority indicator (TP Ind)","gsm_a_bssmap.tpind",
+ FT_BOOLEAN,8, TFS(&gsm_bssmap_tpind_vals), 0x01,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_asind_b2,
+ { "A-interface resource sharing indicator (AS Ind) bit 2","gsm_a_bssmap.asind_b2",
+ FT_BOOLEAN,8, TFS(&gsm_bssmap_asind_b2_vals), 0x02,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_asind_b3,
+ { "A-interface resource sharing indicator (AS Ind) bit 3","gsm_a_bssmap.asind_b3",
+ FT_BOOLEAN,8, TFS(&gsm_bssmap_asind_b3_vals), 0x04,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_bss_res,
+ { "Group or broadcast call re-establishment by the BSS indicator","gsm_a_bssmap.bss_res",
+ FT_BOOLEAN,8, TFS(&gsm_bssmap_bss_res_vals), 0x08,
NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_trace_priority_indication,
- { "Priority Indication","gsm_a_bssmap.trace_priority_indication",
- FT_UINT8,BASE_DEC, NULL, 0x00,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_trace_bss_record_type,
- { "BSS Record Type","gsm_a_bssmap.bss_record__type",
- FT_UINT8,BASE_DEC, VALS(gsm_a_bssmap_trace_bss_record_type_vals), 0x00,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_trace_msc_record_type,
- { "MSC Record Type","gsm_a_bssmap.msc_record_type",
- FT_UINT8,BASE_DEC, VALS(gsm_a_bssmap_trace_msc_record_type_vals), 0x00,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_trace_invoking_event,
- { "Invoking Event","gsm_a_bssmap.trace_invoking_event",
- FT_UINT8,BASE_DEC, VALS(gsm_a_bssmap_trace_invoking_event_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_trace_reference,
- { "Trace Reference","gsm_a_bssmap.trace_id",
- FT_UINT16,BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_trace_omc_id,
- { "OMC ID","gsm_a_bssmap.trace_omc_id",
- FT_STRING, BASE_NONE, NULL, 0x0,
+ },
+ { &hf_gsm_a_bssmap_tcp,
+ { "Talker Channel Parameter (TCP)","gsm_a_bssmap.tcp",
+ FT_BOOLEAN,8, TFS(&gsm_bssmap_bss_tcp_vals), 0x10,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_filler_bits,
+ { "Filler Bits","gsm_a_bssmap.filler_bits",
+ FT_UINT8, BASE_DEC,NULL, 0x07,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_aoip_trans_ipv4,
+ { "Transport Layer Address (IPv4)","gsm_a_bssmap.aoip_trans_ipv4",
+ FT_IPv4,BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_aoip_trans_ipv6,
+ { "Transport Layer Address (IPv6)","gsm_a_bssmap.aoip_trans_ipv6",
+ FT_IPv6,BASE_NONE, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_aoip_trans_port,
+ { "UDP Port","gsm_a_bssmap.aoip_trans_port",
+ FT_UINT16, BASE_DEC,NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_fi,
+ { "FI(Full IP)","gsm_a_bssmap.fi",
+ FT_BOOLEAN,8, TFS(&bssmap_fi_vals), 0x80,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_pi,
+ { "PI","gsm_a_bssmap.pi",
+ FT_BOOLEAN,8, TFS(&bssmap_pi_vals), 0x40,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_pt,
+ { "PT","gsm_a_bssmap.pt",
+ FT_BOOLEAN,8, TFS(&bssmap_pt_vals), 0x20,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_tf,
+ { "TF","gsm_a_bssmap.tf",
+ FT_BOOLEAN,8, TFS(&bssmap_tf_vals), 0x10,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssap_speech_codec,
+ { "Codec Type","gsm_a_bssmap.speech_codec",
+ FT_UINT8, BASE_DEC,VALS(bssap_speech_codec_values), 0x0f,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_fi2,
+ { "FI(Full IP)","gsm_a_bssmap.fi2",
+ FT_BOOLEAN,8, TFS(&bssmap_fi2_vals), 0x80,
NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_be_rnc_id,
- { "RNC-ID","gsm_a.be.rnc_id",
- FT_UINT16,BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_apdu_protocol_id,
- { "Protocol ID", "gsm_a.apdu_protocol_id",
- FT_UINT8, BASE_DEC, VALS(gsm_a_apdu_protocol_id_strings), 0x0,
- "APDU embedded protocol id", HFILL }
- },
- { &hf_gsm_a_bssmap_periodicity,
- { "Periodicity", "gsm_a_bssmap.periodicity",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_sm,
- { "Subsequent Mode","gsm_a_bssmap.sm",
- FT_BOOLEAN,8, NULL, 0x02,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_tarr,
- { "Total Accessible Resource Requested","gsm_a_bssmap.tarr",
- FT_BOOLEAN,8, NULL, 0x01,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_tot_no_of_fullr_ch,
- { "Total number of accessible full rate channels", "gsm_a_bssmap.tot_no_of_fullr_ch",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_tot_no_of_hr_ch,
- { "Total number of accessible half rate channels", "gsm_a_bssmap.tot_no_of_hr_ch",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_lsa_id,
- { "Identification of Localised Service Area", "gsm_a_bssmap.lsa_id",
- FT_UINT24, BASE_HEX, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_ep,
- { "EP", "gsm_a_bssmap.ep",
- FT_UINT8, BASE_DEC, NULL, 0x01,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_smi,
- { "Subsequent Modification Indication(SMI)", "gsm_a_bssmap.smi",
- FT_UINT8, BASE_DEC, VALS(gsm_a_bssmap_smi_vals), 0x0f,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_lcs_pri,
- { "Periodicity", "gsm_a_bssmap.lcs_pri",
- FT_UINT8, BASE_DEC, VALS(lcs_priority_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_num_ms,
- { "Number of handover candidates", "gsm_a_bssmap.num_ms",
- FT_UINT8, BASE_DEC,NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_talker_pri,
- { "Priority", "gsm_a_bssmap.talker_pri",
- FT_UINT8, BASE_DEC,VALS(gsm_a_bssmap_talker_pri_vals), 0x03,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_paging_cause,
- { "Paging Cause", "gsm_a_bssmap.paging_cause",
- FT_UINT8, BASE_DEC,VALS(gsm_a_bssmap_paging_cause_vals), 0x06,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_paging_inf_flg,
- { "VGCS/VBS flag","ggsm_a_bssmap.paging_inf_flg",
- FT_BOOLEAN,8, TFS(&bssmap_paging_inf_flg_value), 0x01,
- "If 1, a member of a VGCS/VBS-group", HFILL }
- },
- { &hf_gsm_a_bssmap_serv_ho_inf,
- { "Service Handover information", "gsm_a_bssmap.serv_ho_inf",
- FT_UINT8, BASE_HEX, NULL, 0x07,
- NULL, HFILL }
- },
-
- { &hf_gsm_a_bssmap_spare_bits,
- { "Spare bit(s)", "gsm_a_bssmap.spare_bits",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_tpind,
- { "Talker priority indicator (TP Ind)","gsm_a_bssmap.tpind",
- FT_BOOLEAN,8, TFS(&gsm_bssmap_tpind_vals), 0x01,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_asind_b2,
- { "A-interface resource sharing indicator (AS Ind) bit 2","gsm_a_bssmap.asind_b2",
- FT_BOOLEAN,8, TFS(&gsm_bssmap_asind_b2_vals), 0x02,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_asind_b3,
- { "A-interface resource sharing indicator (AS Ind) bit 3","gsm_a_bssmap.asind_b3",
- FT_BOOLEAN,8, TFS(&gsm_bssmap_asind_b3_vals), 0x04,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_bss_res,
- { "Group or broadcast call re-establishment by the BSS indicator","gsm_a_bssmap.bss_res",
- FT_BOOLEAN,8, TFS(&gsm_bssmap_bss_res_vals), 0x08,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_tcp,
- { "Talker Channel Parameter (TCP)","gsm_a_bssmap.tcp",
- FT_BOOLEAN,8, TFS(&gsm_bssmap_bss_tcp_vals), 0x10,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_filler_bits,
- { "Filler Bits","gsm_a_bssmap.filler_bits",
- FT_UINT8, BASE_DEC,NULL, 0x07,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_aoip_trans_ipv4,
- { "Transport Layer Address (IPv4)","gsm_a_bssmap.aoip_trans_ipv4",
- FT_IPv4,BASE_NONE, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_aoip_trans_ipv6,
- { "Transport Layer Address (IPv6)","gsm_a_bssmap.aoip_trans_ipv6",
- FT_IPv6,BASE_NONE, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_aoip_trans_port,
- { "UDP Port","gsm_a_bssmap.aoip_trans_port",
- FT_UINT16, BASE_DEC,NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_fi,
- { "FI(Full IP)","gsm_a_bssmap.fi",
- FT_BOOLEAN,8, TFS(&bssmap_fi_vals), 0x80,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_pi,
- { "PI","gsm_a_bssmap.pi",
- FT_BOOLEAN,8, TFS(&bssmap_pi_vals), 0x40,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_pt,
- { "PT","gsm_a_bssmap.pt",
- FT_BOOLEAN,8, TFS(&bssmap_pt_vals), 0x20,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_tf,
- { "TF","gsm_a_bssmap.tf",
- FT_BOOLEAN,8, TFS(&bssmap_tf_vals), 0x10,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssap_speech_codec,
- { "Codec Type","gsm_a_bssmap.speech_codec",
- FT_UINT8, BASE_DEC,VALS(bssap_speech_codec_values), 0x0f,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_fi2,
- { "FI(Full IP)","gsm_a_bssmap.fi2",
- FT_BOOLEAN,8, TFS(&bssmap_fi2_vals), 0x80,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_pi2,
- { "PI","gsm_a_bssmap.pi2",
- FT_BOOLEAN,8, TFS(&bssmap_pi2_vals), 0x40,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_pt2,
- { "PT","gsm_a_bssmap.pt2",
- FT_BOOLEAN,8, TFS(&bssmap_pt2_vals), 0x20,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_tf2,
- { "TF","gsm_a_bssmap.tf2",
- FT_BOOLEAN,8, TFS(&bssmap_tf2_vals), 0x10,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_call_id,
- { "Call Identifier","gsm_a_bssmap.callid",
- FT_UINT32, BASE_DEC,NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_spare,
- { "Spare", "gsm_a_bssmap.spare",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL}
- },
- { &hf_gsm_a_bssmap_positioning_data_discriminator,
- { "Positioning Data Discriminator", "gsm_a_bssmap.posData.discriminator",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_positioning_method,
- { "Positioning method", "gsm_a_bssmap.posData.method",
- FT_UINT8, BASE_HEX, VALS(bssmap_positioning_methods), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_positioning_method_usage,
- { "Usage", "gsm_a_bssmap.posData.usage",
- FT_UINT8, BASE_HEX, VALS(bssmap_positioning_methods_usage), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_location_type_location_information,
- { "Location Information", "gsm_a_bssmap.locationType.locationInformation",
- FT_UINT8, BASE_HEX, VALS(bssmap_location_information_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_location_type_positioning_method,
- { "Positioning Method", "gsm_a_bssmap.locationType.positioningMethod",
- FT_UINT8, BASE_HEX, VALS(bssmap_positioning_method_vals), 0x0,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_chan_type_extension,
- { "Extension", "gsm_a_bssmap.chanType.permittedIndicator.extension",
- FT_BOOLEAN, 8, TFS(&bssmap_chan_type_extension_value), 0x80,
- NULL, HFILL }
- },
- { &hf_gsm_a_bssmap_cause_extension,
- { "Extension", "gsm_a_bssmap.causeType.extension",
- FT_BOOLEAN, 8, TFS(&bssmap_cause_extension_value), 0x80,
- NULL, HFILL }
- },
+ },
+ { &hf_gsm_a_bssmap_pi2,
+ { "PI","gsm_a_bssmap.pi2",
+ FT_BOOLEAN,8, TFS(&bssmap_pi2_vals), 0x40,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_pt2,
+ { "PT","gsm_a_bssmap.pt2",
+ FT_BOOLEAN,8, TFS(&bssmap_pt2_vals), 0x20,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_tf2,
+ { "TF","gsm_a_bssmap.tf2",
+ FT_BOOLEAN,8, TFS(&bssmap_tf2_vals), 0x10,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_call_id,
+ { "Call Identifier","gsm_a_bssmap.callid",
+ FT_UINT32, BASE_DEC,NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_spare,
+ { "Spare", "gsm_a_bssmap.spare",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_bssmap_positioning_data_discriminator,
+ { "Positioning Data Discriminator", "gsm_a_bssmap.posData.discriminator",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_positioning_method,
+ { "Positioning method", "gsm_a_bssmap.posData.method",
+ FT_UINT8, BASE_HEX, VALS(bssmap_positioning_methods), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_positioning_method_usage,
+ { "Usage", "gsm_a_bssmap.posData.usage",
+ FT_UINT8, BASE_HEX, VALS(bssmap_positioning_methods_usage), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_location_type_location_information,
+ { "Location Information", "gsm_a_bssmap.locationType.locationInformation",
+ FT_UINT8, BASE_HEX, VALS(bssmap_location_information_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_location_type_positioning_method,
+ { "Positioning Method", "gsm_a_bssmap.locationType.positioningMethod",
+ FT_UINT8, BASE_HEX, VALS(bssmap_positioning_method_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_chan_type_extension,
+ { "Extension", "gsm_a_bssmap.chanType.permittedIndicator.extension",
+ FT_BOOLEAN, 8, TFS(&bssmap_chan_type_extension_value), 0x80,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_bssmap_cause_extension,
+ { "Extension", "gsm_a_bssmap.causeType.extension",
+ FT_BOOLEAN, 8, TFS(&bssmap_cause_extension_value), 0x80,
+ NULL, HFILL }
+ },
{ &hf_fe_extra_info_prec,
{ "Pre-emption Recommendation", "fe_extra_info.prec",
FT_UINT8, BASE_DEC, VALS(fe_extra_info_prec_vals), 0x01,
@@ -6776,56 +6776,56 @@ proto_register_gsm_a_bssmap(void)
FT_UINT8, BASE_HEX, NULL, 0,
NULL, HFILL }
},
- };
+ };
- /* Setup protocol subtree array */
-#define NUM_INDIVIDUAL_ELEMS 5
- gint *ett[NUM_INDIVIDUAL_ELEMS + NUM_GSM_BSSMAP_MSG +
- NUM_GSM_BSSMAP_ELEM];
+ /* Setup protocol subtree array */
+#define NUM_INDIVIDUAL_ELEMS 5
+ gint *ett[NUM_INDIVIDUAL_ELEMS + NUM_GSM_BSSMAP_MSG +
+ NUM_GSM_BSSMAP_ELEM];
- ett[0] = &ett_bssmap_msg;
- ett[1] = &ett_cell_list;
- ett[2] = &ett_dlci;
- ett[3] = &ett_codec_lst,
+ ett[0] = &ett_bssmap_msg;
+ ett[1] = &ett_cell_list;
+ ett[2] = &ett_dlci;
+ ett[3] = &ett_codec_lst,
ett[4] = &ett_bss_to_bss_info,
- last_offset = NUM_INDIVIDUAL_ELEMS;
+ last_offset = NUM_INDIVIDUAL_ELEMS;
- for (i=0; i < NUM_GSM_BSSMAP_MSG; i++, last_offset++)
- {
- ett_gsm_bssmap_msg[i] = -1;
- ett[last_offset] = &ett_gsm_bssmap_msg[i];
- }
+ for (i=0; i < NUM_GSM_BSSMAP_MSG; i++, last_offset++)
+ {
+ ett_gsm_bssmap_msg[i] = -1;
+ ett[last_offset] = &ett_gsm_bssmap_msg[i];
+ }
- for (i=0; i < NUM_GSM_BSSMAP_ELEM; i++, last_offset++)
- {
- ett_gsm_bssmap_elem[i] = -1;
- ett[last_offset] = &ett_gsm_bssmap_elem[i];
- }
+ for (i=0; i < NUM_GSM_BSSMAP_ELEM; i++, last_offset++)
+ {
+ ett_gsm_bssmap_elem[i] = -1;
+ ett[last_offset] = &ett_gsm_bssmap_elem[i];
+ }
- /* Register the protocol name and description */
+ /* Register the protocol name and description */
- proto_a_bssmap =
- proto_register_protocol("GSM A-I/F BSSMAP", "GSM BSSMAP", "gsm_a_bssmap");
+ proto_a_bssmap =
+ proto_register_protocol("GSM A-I/F BSSMAP", "GSM BSSMAP", "gsm_a_bssmap");
- proto_register_field_array(proto_a_bssmap, hf, array_length(hf));
+ proto_register_field_array(proto_a_bssmap, hf, array_length(hf));
- proto_register_subtree_array(ett, array_length(ett));
+ proto_register_subtree_array(ett, array_length(ett));
- register_dissector("gsm_a_bssmap", dissect_bssmap, proto_a_bssmap);
+ register_dissector("gsm_a_bssmap", dissect_bssmap, proto_a_bssmap);
}
void
proto_reg_handoff_gsm_a_bssmap(void)
{
- dissector_handle_t bssmap_handle;
+ dissector_handle_t bssmap_handle;
- bssmap_handle = find_dissector("gsm_a_bssmap");
- dissector_add("bssap.pdu_type", BSSAP_PDU_TYPE_BSSMAP, bssmap_handle);
+ bssmap_handle = find_dissector("gsm_a_bssmap");
+ dissector_add("bssap.pdu_type", BSSAP_PDU_TYPE_BSSMAP, bssmap_handle);
- dtap_handle = find_dissector("gsm_a_dtap");
- gsm_bsslap_handle = find_dissector("gsm_bsslap");
+ dtap_handle = find_dissector("gsm_a_dtap");
+ gsm_bsslap_handle = find_dissector("gsm_bsslap");
bssgp_handle = find_dissector ("bssgp");
rrc_handle = find_dissector ("rrc");
}