Update comments add Emergensy number list IE.
authoretxrab <etxrab@f5534014-38df-0310-8fa8-9805f1628bb7>
Sat, 15 Nov 2008 11:38:27 +0000 (11:38 +0000)
committeretxrab <etxrab@f5534014-38df-0310-8fa8-9805f1628bb7>
Sat, 15 Nov 2008 11:38:27 +0000 (11:38 +0000)
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@26780 f5534014-38df-0310-8fa8-9805f1628bb7

epan/dissectors/packet-gsm_a_dtap.c

index 5de946a8470f7820d4b49432a13ccd1ef38feac7..9757fe49b1c9069c6d7d65f7b57f06db403e17d3 100644 (file)
@@ -434,7 +434,7 @@ static dgt_set_t Dgt_mbcd = {
 };
 
 /*
- * [3] 10.5.3.1
+ * [3] 10.5.3.1 Authentication parameter RAND
  */
 static guint8
 de_auth_param_rand(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
@@ -462,7 +462,7 @@ de_auth_param_rand(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, g
 }
 
 /*
- * [3] 10.5.3.1.1
+ * [3] 10.5.3.1.1 Authentication Parameter AUTN (UMTS authentication challenge only)
  */
 static guint8
 de_auth_param_autn(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
@@ -484,7 +484,7 @@ de_auth_param_autn(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, g
 }
 
 /*
- * [3] 10.5.3.2
+ * [3] 10.5.3.2 Authentication Response parameter
  */
 static guint8
 de_auth_resp_param(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
@@ -512,7 +512,7 @@ de_auth_resp_param(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, g
 }
 
 /*
- * [3] 10.5.3.2.1
+ * [3] 10.5.3.2.1 Authentication Response Parameter (extension) (UMTS authentication challenge only)
  */
 static guint8
 de_auth_resp_param_ext(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
@@ -534,7 +534,7 @@ de_auth_resp_param_ext(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint le
 }
 
 /*
- * [3] 10.5.3.2.2
+ * [3] 10.5.3.2.2 Authentication Failure parameter (UMTS authentication challenge only)
  */
 static guint8
 de_auth_fail_param(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
@@ -556,7 +556,19 @@ de_auth_fail_param(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, g
 }
 
 /*
- * [3] 10.5.3.5a
+ * 10.5.3.3 CM service type
+ *  handled inline
+ */
+/*
+ * 10.5.3.4 Identity type
+ *  handled inline
+ */
+/*
+ * 10.5.3.5 Location updating type
+ *  handled inline
+ */
+/*
+ * [3] 10.5.3.5a Network Name
  */
 static guint8
 de_network_name(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
@@ -700,9 +712,12 @@ de_rej_cause(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gch
 
        return(curr_offset - offset);
 }
-
 /*
- * [3] 10.5.3.8
+ * 10.5.3.7 Follow-on Proceed
+ *  No data
+ */
+/*
+ * [3] 10.5.3.8 Time Zone
  */
 static guint8
 de_time_zone(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
@@ -738,7 +753,7 @@ de_time_zone(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gch
 }
 
 /*
- * [3] 10.5.3.9
+ * [3] 10.5.3.9 Time Zone and Time
  */
 static guint8
 de_time_zone_time(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
@@ -805,9 +820,13 @@ de_time_zone_time(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_
 
        return(curr_offset - offset);
 }
-
 /*
- * [3] 10.5.3.11 3GPP TS 24.008 version 6.8.0 Release 6
+ * 10.5.3.10 CTS permission
+ * No data
+ */
+/*
+ * [3] 10.5.3.11 LSA Identifier
+ * 3GPP TS 24.008 version 6.8.0 Release 6
  */
 static guint8
 de_lsa_id(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
@@ -830,7 +849,7 @@ de_lsa_id(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add
 }
 
 /*
- * [3] 10.5.3.12
+ * [3] 10.5.3.12 Daylight Saving Time
  */
 static guint8
 de_day_saving_time(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
@@ -872,9 +891,24 @@ de_day_saving_time(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, g
 
        return(curr_offset - offset);
 }
+/*
+ * 10.5.3.13 Emergency Number List 
+ */
+static guint8
+de_emerg_num_list(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
+{
+       guint32 curr_offset;
+
+       curr_offset = offset;
+
+       proto_tree_add_text(tree, tvb, curr_offset, len, "Not decoded yet");
+
+
+       return(len);
+}
 
 /*
- * [3] 10.5.4.4
+ * [3] 10.5.4.4 Auxiliary states
  */
 static guint8
 de_aux_states(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
@@ -935,9 +969,11 @@ de_aux_states(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar
 
        return(curr_offset - offset);
 }
-
 /*
- * [3] 10.5.4.5
+ * 10.5.4.4a Backup bearer capability
+ */
+/*
+ * [3] 10.5.4.5 Bearer capability
  */
 guint8
 de_bearer_cap(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string, int string_len)
@@ -2060,9 +2096,7 @@ bc_octet_7:
        return(curr_offset - offset);
 }
 
-/*
- * [3] 10.5.4.5a
- */
+
 guint8
 de_bearer_cap_uplink(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string, int string_len)
 {
@@ -2071,6 +2105,9 @@ de_bearer_cap_uplink(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len,
 
 }
 
+/*
+ * [3] 10.5.4.5a Call Control Capabilities
+ */
 
 static guint8
 de_cc_cap(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
@@ -2151,7 +2188,7 @@ de_cc_cap(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add
 }
 
 /*
- * [3] 10.5.4.6
+ * [3] 10.5.4.6 Call state
  */
 static guint8
 de_call_state(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
@@ -2263,7 +2300,7 @@ const value_string gsm_a_numbering_plan_id_values[] = {
 };
 
 /*
- * [3] 10.5.4.7
+ * [3] 10.5.4.7 Called party BCD number
  */
 guint8
 de_cld_party_bcd_num(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string, int string_len)
@@ -2307,7 +2344,7 @@ de_cld_party_bcd_num(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len,
 }
 
 /*
- * [3] 10.5.4.8
+ * [3] 10.5.4.8 Called party subaddress
  */
 static guint8
 de_cld_party_sub_addr(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
@@ -2368,7 +2405,7 @@ de_cld_party_sub_addr(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len
 }
 
 /* 3GPP TS 24.008
- * [3] 10.5.4.9
+ * [3] 10.5.4.9 Calling party BCD number
  */
 static guint8
 de_clg_party_bcd_num(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string, int string_len)
@@ -2456,7 +2493,7 @@ de_clg_party_bcd_num(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len,
 }
 
 /*
- * [3] 10.5.4.10
+ * [3] 10.5.4.10 Calling party subaddress
  */
 static guint8
 de_clg_party_sub_addr(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
@@ -2517,7 +2554,7 @@ de_clg_party_sub_addr(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len
 }
 
 /*
- * [3] 10.5.4.11
+ * [3] 10.5.4.11 Cause
  */
 static guint8
 de_cause(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string, int string_len)
@@ -2692,27 +2729,27 @@ de_cause(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_
 
        return(curr_offset - offset);
 }
-
 /*
- * 10.5.4.18 Low layer compatibility
+ * 10.5.4.11a CLIR suppression
+ * No data
  */
-static guint8
-de_llc(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
-{
-       guint32 curr_offset;
-
-       curr_offset = offset;
-
-       dissect_q931_bearer_capability_ie(tvb, offset, len, tree);
-
-       curr_offset = curr_offset + len;
-       return(curr_offset - offset);
-}
-
 /*
- * [6] 3.6
+ * 10.5.4.11b CLIR invocation
+ * No data
+ */
+/*
+ * 10.5.4.12 Congestion level
+ *  handled inline
+ */
+/*
+ * 10.5.4.13 Connected number
+ */
+/*
+ * 10.5.4.14 Connected subaddress
+ */
+/*
+ * 10.5.4.15 Facility
  */
-
 
 static guint8
 de_facility(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint fac_len, gchar *add_string _U_, int string_len _U_)
@@ -2758,9 +2795,12 @@ de_facility(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint fac_len, gcha
        gsm_a_dtap_pinfo->private_data = save_private_data;
        return(fac_len);
 }
+/*
+ * 10.5.4.16 High layer compatibility
+ */
 
 /*
- * [3] 10.5.4.17
+ * [3] 10.5.4.17 Keypad facility
  */
 static guint8
 de_keypad_facility(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string, int string_len)
@@ -2796,7 +2836,32 @@ de_keypad_facility(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U
 }
 
 /*
- * [3] 10.5.4.21
+ * 10.5.4.18 Low layer compatibility
+ */
+static guint8
+de_llc(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
+{
+       guint32 curr_offset;
+
+       curr_offset = offset;
+
+       dissect_q931_bearer_capability_ie(tvb, offset, len, tree);
+
+       curr_offset = curr_offset + len;
+       return(curr_offset - offset);
+}
+
+/*
+ * 10.5.4.19 More data
+ * No data
+ */
+/*
+ * 10.5.4.20 Notification indicator
+ */
+
+
+/*
+ * [3] 10.5.4.21 Progress indicator
  */
 static guint8
 de_prog_ind(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string, int string_len)
@@ -2901,9 +2966,14 @@ de_prog_ind(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gcha
 
        return(curr_offset - offset);
 }
-
 /*
- * [3] 10.5.4.22
+ * 10.5.4.21b Redirecting party BCD number
+ */
+/*
+ * 10.5.4.21c Redirecting party subaddress
+ */
+/*
+ * [3] 10.5.4.22 Repeat indicator
  */
 static guint8
 de_repeat_ind(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
@@ -2939,9 +3009,18 @@ de_repeat_ind(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gc
 
        return(curr_offset - offset);
 }
-
 /*
- * [6] 3.7.2
+ * 10.5.4.22a Reverse call setup direction
+ * No data
+ */
+/*
+ * 10.5.4.22b SETUP Container $(CCBS)$
+ */
+/*
+ * 10.5.4.23 Signal
+ */
+/*
+ * 10.5.4.24 SS Version Indicator
  */
 static guint8
 de_ss_ver_ind(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
@@ -2974,7 +3053,41 @@ de_ss_ver_ind(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar
 
        return(curr_offset - offset);
 }
-
+/*
+ * 10.5.4.25 User-user
+ */
+/*
+ * 10.5.4.26 Alerting Pattern $(NIA)$
+ */
+/*
+ * 10.5.4.27 Allowed actions $(CCBS)$
+ */
+/*
+ * 10.5.4.28 Stream Identifier
+ */
+/*
+ * 10.5.4.29 Network Call Control Capabilities
+ */
+/*
+ * 10.5.4.30 Cause of No CLI
+ */ 
+/*
+ * 10.5.4.31 Void
+ */
+/*
+ * 10.5.4.32 Supported codec list
+ */
+/*
+ * 10.5.4.33 Service category
+ */
+/*
+ * 10.5.4.34 Redial
+ * No data
+ */
+/*
+ * 10.5.4.35 Network-initiated Service Upgrade indicator
+ * No data
+ */
 /*
  * [5] 8.1.4.1 3GPP TS 24.011 version 6.1.0 Release 6
  */
@@ -3412,7 +3525,7 @@ guint8 (*dtap_elem_fcn[])(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint
        NULL /* no associated data */,  /* CTS Permission */
        de_lsa_id,      /* LSA Identifier */
        de_day_saving_time,     /* Daylight Saving Time */
-       NULL, /* Emergency Number List */
+       de_emerg_num_list, /* Emergency Number List */
        /* Call Control Information Elements 10.5.4 */
        de_aux_states,  /* Auxiliary States */
        de_bearer_cap,  /* Bearer Capability */
@@ -3473,7 +3586,7 @@ guint8 (*dtap_elem_fcn[])(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint
 /* MESSAGE FUNCTIONS */
 
 /*
- * [4] 9.2.2
+ * [4] 9.2.2 Authentication request
  */
 static void
 dtap_mm_auth_req(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
@@ -3547,7 +3660,7 @@ dtap_mm_auth_req(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
 }
 
 /*
- * [4] 9.2.3
+ * [4] 9.2.3 Authentication response
  */
 static void
 dtap_mm_auth_resp(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
@@ -3569,7 +3682,7 @@ dtap_mm_auth_resp(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
 }
 
 /*
- * [4] 9.2.3a
+ * [4] 9.2.3a Authentication Failure
  */
 static void
 dtap_mm_auth_fail(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
@@ -3591,7 +3704,7 @@ dtap_mm_auth_fail(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
 }
 
 /*
- * [3] 9.2.4
+ * [3] 9.2.4 CM Re-establishment request
  */
 static void
 dtap_mm_cm_reestab_req(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
@@ -3667,7 +3780,7 @@ dtap_mm_cm_reestab_req(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint le
 }
 
 /*
- * [3] 9.2.5a
+ * [3] 9.2.5a CM service prompt $(CCBS)
  */
 static void
 dtap_mm_cm_srvc_prompt(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
@@ -3687,7 +3800,7 @@ dtap_mm_cm_srvc_prompt(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint le
 }
 
 /*
- * [4] 9.2.6
+ * [4] 9.2.6 CM service reject
  */
 static void
 dtap_mm_cm_srvc_rej(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
@@ -3707,7 +3820,7 @@ dtap_mm_cm_srvc_rej(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
 }
 
 /*
- * [4] 9.2.8
+ * [4] 9.2.8 Abort
  */
 static void
 dtap_mm_abort(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
@@ -3727,7 +3840,7 @@ dtap_mm_abort(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
 }
 
 /*
- * [3] 9.2.9
+ * [3] 9.2.9 CM service request
  */
 static void
 dtap_mm_cm_srvc_req(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
@@ -3827,7 +3940,7 @@ dtap_mm_cm_srvc_req(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
 }
 
 /*
- * [3] 9.2.10
+ * [3] 9.2.10 Identity request
  */
 static void
 dtap_mm_id_req(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
@@ -3893,7 +4006,7 @@ dtap_mm_id_req(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
 }
 
 /*
- * [3] 9.2.11
+ * [3] 9.2.11 Identity response
  */
 static void
 dtap_mm_id_resp(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
@@ -3913,7 +4026,7 @@ dtap_mm_id_resp(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
 }
 
 /*
- * [3] 9.2.12
+ * [3] 9.2.12 IMSI detach indication
  */
 static void
 dtap_mm_imsi_det_ind(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
@@ -3935,7 +4048,7 @@ dtap_mm_imsi_det_ind(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
 }
 
 /*
- * [3] 9.2.13
+ * [3] 9.2.13 Location updating accept
  */
 static void
 dtap_mm_loc_upd_acc(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
@@ -3955,15 +4068,20 @@ dtap_mm_loc_upd_acc(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
 
        ELEM_OPT_T(0xa1, GSM_A_PDU_TYPE_DTAP, DE_FOP, "");
 
+       /* CTS permission O T 1 10.5.3.10 */
        ELEM_OPT_T(0xa2, GSM_A_PDU_TYPE_DTAP, DE_CTS_PERM, "");
 
+       /* PLMN list O TLV 5-47 10.5.1.13 */
        ELEM_OPT_TLV(0x4a, GSM_A_PDU_TYPE_COMMON, DE_PLMN_LIST, " Equivalent");
 
+       /* 34 Emergency Number List O TLV 5-50 10.5.3.13 */
+       ELEM_OPT_TLV(0x34, GSM_A_PDU_TYPE_DTAP, DE_EMERG_NUM_LIST, " Equivalent");
+
        EXTRANEOUS_DATA_CHECK(curr_len, 0);
 }
 
 /*
- * [3] 9.2.14
+ * [3] 9.2.14 Location updating reject
  */
 static void
 dtap_mm_loc_upd_rej(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
@@ -3983,7 +4101,7 @@ dtap_mm_loc_upd_rej(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
 }
 
 /*
- * [3] 9.2.15
+ * [3] 9.2.15 Location updating request
  */
 static void
 dtap_mm_loc_upd_req(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
@@ -4096,7 +4214,7 @@ dtap_mm_loc_upd_req(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
 
 
 /*
- * [4] 9.2.15a
+ * [4] 9.2.15a MM information
  */
 void
 dtap_mm_mm_info(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)