As suggested by Evan Huus, use extended value_strings

svn path=/trunk/; revision=48407
This commit is contained in:
Pascal Quantin 2013-03-18 22:21:53 +00:00
parent 4c87778b7a
commit 86eda54fe6
14 changed files with 121 additions and 106 deletions

View File

@ -3436,7 +3436,7 @@ typedef enum
}
bssgp_elem_idx_t;
const value_string bssgp_elem_strings[] = {
static const value_string bssgp_elem_strings[] = {
{ DE_BSSGP_ALIGNMENT_OCTETS, "Alignment Octets" }, /* 11.3.1 Alignment octets */
{ DE_BSSGP_BMAX_DEFAULT_MS, "Bmax default MS" }, /* 11.3.2 Bmax default MS */
{ DE_BSSGP_BSS_AREA_IND, "BSS Area Indication" }, /* 11.3.3 BSS Area Indication */
@ -3584,6 +3584,7 @@ const value_string bssgp_elem_strings[] = {
{ 0, NULL }
};
value_string_ext bssgp_elem_strings_ext = VALUE_STRING_EXT_INIT(bssgp_elem_strings);
#define NUM_BSSGP_ELEM (sizeof(bssgp_elem_strings)/sizeof(value_string))
gint ett_bssgp_elem[NUM_BSSGP_ELEM];

View File

@ -73,13 +73,14 @@ const value_string gmr1_pd_short_vals[] = {
/* Common Information Elements */
/* ------------------------------------------------------------------------ */
const value_string gmr1_ie_common_strings[] = {
static const value_string gmr1_ie_common_strings[] = {
{ GMR1_IE_COM_CM2,
"Mobile Earth Station Classmark 2" }, /* [1] 11.5.1.6 */
{ GMR1_IE_COM_SPARE_NIBBLE,
"Spare Half Octet" }, /* [1] 11.5.1.8 */
{ 0, NULL}
};
value_string_ext gmr1_ie_common_strings_ext = VALUE_STRING_EXT_INIT(gmr1_ie_common_strings);
gint ett_gmr1_ie_common[NUM_GMR1_IE_COMMON];

View File

@ -94,7 +94,7 @@ enum gmr1_ie_rr_idx {
NUM_GMR1_IE_RR /* Terminator */
};
const value_string gmr1_ie_rr_strings[] = {
static const value_string gmr1_ie_rr_strings[] = {
{ GMR1_IE_RR_CHAN_DESC,
"Channel Description" }, /* [1] 11.5.2.5 */
{ GMR1_IE_RR_CHAN_MODE,
@ -161,6 +161,7 @@ const value_string gmr1_ie_rr_strings[] = {
"Persistence Level" }, /* [3] 10.1.18.4.2 */
{ 0, NULL },
};
value_string_ext gmr1_ie_rr_strings_ext = VALUE_STRING_EXT_INIT(gmr1_ie_rr_strings);
gint ett_gmr1_ie_rr[NUM_GMR1_IE_RR];

View File

@ -198,7 +198,7 @@ const value_string gsm_a_bssmap_msg_strings[] = {
static value_string_ext gsm_a_bssmap_msg_strings_ext = VALUE_STRING_EXT_INIT(gsm_a_bssmap_msg_strings);
const value_string gsm_bssmap_elem_strings[] = {
static const value_string gsm_bssmap_elem_strings[] = {
{ BE_UDEF_0, "Undefined" },
{ BE_CIC, "Circuit Identity Code" },
{ BE_RSVD_1, "Reserved" },
@ -347,6 +347,7 @@ const value_string gsm_bssmap_elem_strings[] = {
#endif
{ 0, NULL }
};
value_string_ext gsm_bssmap_elem_strings_ext = VALUE_STRING_EXT_INIT(gsm_bssmap_elem_strings);
/* 3.2.3 Signalling Field Element Coding */
static const value_string bssmap_field_element_ids[] = {

View File

@ -66,6 +66,7 @@ const value_string gsm_common_elem_strings[] = {
{ DE_MS_NET_FEAT_SUP, "MS network feature support" },
{ 0, NULL }
};
value_string_ext gsm_common_elem_strings_ext = VALUE_STRING_EXT_INIT(gsm_common_elem_strings);
static const value_string gsm_a_skip_ind_vals[] = {
{ 0, "No indication of selected PLMN"},
@ -1086,49 +1087,49 @@ const char* get_gsm_a_msg_string(int pdu_type, int idx)
switch (pdu_type) {
case GSM_A_PDU_TYPE_BSSMAP:
msg_string = val_to_str(idx, gsm_bssmap_elem_strings, "GSM_A_PDU_TYPE_BSSMAP (%u)");
msg_string = val_to_str_ext(idx, &gsm_bssmap_elem_strings_ext, "GSM_A_PDU_TYPE_BSSMAP (%u)");
break;
case GSM_A_PDU_TYPE_DTAP:
msg_string = val_to_str(idx, gsm_dtap_elem_strings, "GSM_A_PDU_TYPE_DTAP (%u)");
msg_string = val_to_str_ext(idx, &gsm_dtap_elem_strings_ext, "GSM_A_PDU_TYPE_DTAP (%u)");
break;
case GSM_A_PDU_TYPE_RP:
msg_string = val_to_str(idx, gsm_rp_elem_strings, "GSM_A_PDU_TYPE_RP (%u)");
msg_string = val_to_str_ext(idx, &gsm_rp_elem_strings_ext, "GSM_A_PDU_TYPE_RP (%u)");
break;
case GSM_A_PDU_TYPE_RR:
msg_string = val_to_str(idx, gsm_rr_elem_strings, "GSM_A_PDU_TYPE_RR (%u)");
msg_string = val_to_str_ext(idx, &gsm_rr_elem_strings_ext, "GSM_A_PDU_TYPE_RR (%u)");
break;
case GSM_A_PDU_TYPE_COMMON:
msg_string = val_to_str(idx, gsm_common_elem_strings, "GSM_A_PDU_TYPE_COMMON (%u)");
msg_string = val_to_str_ext(idx, &gsm_common_elem_strings_ext, "GSM_A_PDU_TYPE_COMMON (%u)");
break;
case GSM_A_PDU_TYPE_GM:
msg_string = val_to_str(idx, gsm_gm_elem_strings, "GSM_A_PDU_TYPE_GM (%u)");
msg_string = val_to_str_ext(idx, &gsm_gm_elem_strings_ext, "GSM_A_PDU_TYPE_GM (%u)");
break;
case GSM_A_PDU_TYPE_BSSLAP:
msg_string = val_to_str(idx, gsm_bsslap_elem_strings, "GSM_A_PDU_TYPE_BSSLAP (%u)");
msg_string = val_to_str_ext(idx, &gsm_bsslap_elem_strings_ext, "GSM_A_PDU_TYPE_BSSLAP (%u)");
break;
case GSM_PDU_TYPE_BSSMAP_LE:
msg_string = val_to_str(idx, gsm_bssmap_le_elem_strings, "GSM_PDU_TYPE_BSSMAP_LE (%u)");
msg_string = val_to_str_ext(idx, &gsm_bssmap_le_elem_strings_ext, "GSM_PDU_TYPE_BSSMAP_LE (%u)");
break;
case NAS_PDU_TYPE_COMMON:
msg_string = val_to_str(idx, nas_eps_common_elem_strings, "NAS_PDU_TYPE_COMMON (%u)");
msg_string = val_to_str_ext(idx, &nas_eps_common_elem_strings_ext, "NAS_PDU_TYPE_COMMON (%u)");
break;
case NAS_PDU_TYPE_EMM:
msg_string = val_to_str(idx, nas_emm_elem_strings, "NAS_PDU_TYPE_EMM (%u)");
msg_string = val_to_str_ext(idx, &nas_emm_elem_strings_ext, "NAS_PDU_TYPE_EMM (%u)");
break;
case NAS_PDU_TYPE_ESM:
msg_string = val_to_str(idx, nas_esm_elem_strings, "NAS_PDU_TYPE_ESM (%u)");
msg_string = val_to_str_ext(idx, &nas_esm_elem_strings_ext, "NAS_PDU_TYPE_ESM (%u)");
break;
case SGSAP_PDU_TYPE:
msg_string = val_to_str(idx, sgsap_elem_strings, "SGSAP_PDU_TYPE (%u)");
msg_string = val_to_str_ext(idx, &sgsap_elem_strings_ext, "SGSAP_PDU_TYPE (%u)");
break;
case BSSGP_PDU_TYPE:
msg_string = val_to_str(idx, bssgp_elem_strings, "BSSGP_PDU_TYPE (%u)");
msg_string = val_to_str_ext(idx, &bssgp_elem_strings_ext, "BSSGP_PDU_TYPE (%u)");
break;
case GMR1_IE_COMMON:
msg_string = val_to_str(idx, gmr1_ie_common_strings, "GMR1_IE_COMMON (%u)");
msg_string = val_to_str_ext(idx, &gmr1_ie_common_strings_ext, "GMR1_IE_COMMON (%u)");
break;
case GMR1_IE_RR:
msg_string = val_to_str(idx, gmr1_ie_rr_strings, "GMR1_IE_RR (%u)");
msg_string = val_to_str_ext(idx, &gmr1_ie_rr_strings_ext, "GMR1_IE_RR (%u)");
break;
default:
DISSECTOR_ASSERT_NOT_REACHED();
@ -1204,14 +1205,14 @@ guint16 elem_tlv(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint8 iei
guint32 curr_offset;
proto_tree *subtree;
proto_item *item;
const value_string *elem_names;
value_string_ext elem_names_ext;
gint *elem_ett;
guint16 (**elem_funcs)(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string, int string_len);
curr_offset = offset;
consumed = 0;
SET_ELEM_VARS(pdu_type, elem_names, elem_ett, elem_funcs);
SET_ELEM_VARS(pdu_type, elem_names_ext, elem_ett, elem_funcs);
oct = tvb_get_guint8(tvb, curr_offset);
@ -1222,7 +1223,7 @@ guint16 elem_tlv(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint8 iei
proto_tree_add_text(tree,
tvb, curr_offset, parm_len + 1 + lengt_length,
"%s%s",
val_to_str(idx, elem_names, "Unknown (%u)"),
val_to_str_ext(idx, &elem_names_ext, "Unknown (%u)"),
(name_add == NULL) || (name_add[0] == '\0') ? "" : name_add);
subtree = proto_item_add_subtree(item, elem_ett[idx]);
@ -1284,14 +1285,14 @@ guint16 elem_telv(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint8 ie
guint32 curr_offset;
proto_tree *subtree;
proto_item *item;
const value_string *elem_names;
value_string_ext elem_names_ext;
gint *elem_ett;
guint16 (**elem_funcs)(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string, int string_len);
curr_offset = offset;
consumed = 0;
SET_ELEM_VARS(pdu_type, elem_names, elem_ett, elem_funcs);
SET_ELEM_VARS(pdu_type, elem_names_ext, elem_ett, elem_funcs);
oct = tvb_get_guint8(tvb, curr_offset);
@ -1309,7 +1310,7 @@ guint16 elem_telv(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint8 ie
proto_tree_add_text(tree,
tvb, curr_offset, parm_len + 1 + lengt_length,
"%s%s",
val_to_str(idx, elem_names, "Unknown (%u)"),
val_to_str_ext(idx, &elem_names_ext, "Unknown (%u)"),
(name_add == NULL) || (name_add[0] == '\0') ? "" : name_add);
subtree = proto_item_add_subtree(item, elem_ett[idx]);
@ -1370,14 +1371,14 @@ guint16 elem_tlv_e(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint8 i
guint32 curr_offset;
proto_tree *subtree;
proto_item *item;
const value_string *elem_names;
value_string_ext elem_names_ext;
gint *elem_ett;
guint16 (**elem_funcs)(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string, int string_len);
curr_offset = offset;
consumed = 0;
SET_ELEM_VARS(pdu_type, elem_names, elem_ett, elem_funcs);
SET_ELEM_VARS(pdu_type, elem_names_ext, elem_ett, elem_funcs);
oct = tvb_get_guint8(tvb, curr_offset);
@ -1386,7 +1387,7 @@ guint16 elem_tlv_e(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint8 i
item = proto_tree_add_text(tree, tvb, curr_offset, parm_len + 1 + 2,
"%s%s",
val_to_str(idx, elem_names, "Unknown (%u)"),
val_to_str_ext(idx, &elem_names_ext, "Unknown (%u)"),
(name_add == NULL) || (name_add[0] == '\0') ? "" : name_add);
subtree = proto_item_add_subtree(item, elem_ett[idx]);
@ -1444,14 +1445,14 @@ guint16 elem_tv(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint8 iei,
guint32 curr_offset;
proto_tree *subtree;
proto_item *item;
const value_string *elem_names;
value_string_ext elem_names_ext;
gint *elem_ett;
guint16 (**elem_funcs)(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string, int string_len);
curr_offset = offset;
consumed = 0;
SET_ELEM_VARS(pdu_type, elem_names, elem_ett, elem_funcs);
SET_ELEM_VARS(pdu_type, elem_names_ext, elem_ett, elem_funcs);
oct = tvb_get_guint8(tvb, curr_offset);
@ -1461,7 +1462,7 @@ guint16 elem_tv(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint8 iei,
proto_tree_add_text(tree,
tvb, curr_offset, -1,
"%s%s",
val_to_str(idx, elem_names, "Unknown (%u)"),
val_to_str_ext(idx, &elem_names_ext, "Unknown (%u)"),
(name_add == NULL) || (name_add[0] == '\0') ? "" : name_add);
subtree = proto_item_add_subtree(item, elem_ett[idx]);
@ -1516,7 +1517,7 @@ guint16 elem_tv_short(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint
guint32 curr_offset;
proto_tree *subtree;
proto_item *item;
const value_string *elem_names;
value_string_ext elem_names_ext;
gint *elem_ett;
guint16 (**elem_funcs)(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string, int string_len);
char buf[10+1];
@ -1524,7 +1525,7 @@ guint16 elem_tv_short(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint
curr_offset = offset;
consumed = 0;
SET_ELEM_VARS(pdu_type, elem_names, elem_ett, elem_funcs);
SET_ELEM_VARS(pdu_type, elem_names_ext, elem_ett, elem_funcs);
oct = tvb_get_guint8(tvb, curr_offset);
@ -1534,7 +1535,7 @@ guint16 elem_tv_short(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint
proto_tree_add_text(tree,
tvb, curr_offset, -1,
"%s%s",
val_to_str(idx, elem_names, "Unknown (%u)"),
val_to_str_ext(idx, &elem_names_ext, "Unknown (%u)"),
(name_add == NULL) || (name_add[0] == '\0') ? "" : name_add);
subtree = proto_item_add_subtree(item, elem_ett[idx]);
@ -1583,14 +1584,14 @@ guint16 elem_t(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint8 i
guint8 oct;
guint32 curr_offset;
guint16 consumed;
const value_string *elem_names;
value_string_ext elem_names_ext;
gint *elem_ett;
guint16 (**elem_funcs)(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string, int string_len);
curr_offset = offset;
consumed = 0;
SET_ELEM_VARS(pdu_type, elem_names, elem_ett, elem_funcs);
SET_ELEM_VARS(pdu_type, elem_names_ext, elem_ett, elem_funcs);
(void)elem_ett;
(void)elem_funcs;
@ -1603,7 +1604,7 @@ guint16 elem_t(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint8 i
get_hf_elem_id(pdu_type), tvb,
curr_offset, 1, oct,
"%s%s",
val_to_str(idx, elem_names, "Unknown (%u)"),
val_to_str_ext(idx, &elem_names_ext, "Unknown (%u)"),
(name_add == NULL) || (name_add[0] == '\0') ? "" : name_add);
consumed = 1;
@ -1623,14 +1624,14 @@ elem_lv(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gint pdu_type, int
guint32 curr_offset;
proto_tree *subtree;
proto_item *item;
const value_string *elem_names;
value_string_ext elem_names_ext;
gint *elem_ett;
guint16 (**elem_funcs)(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string, int string_len);
curr_offset = offset;
consumed = 0;
SET_ELEM_VARS(pdu_type, elem_names, elem_ett, elem_funcs);
SET_ELEM_VARS(pdu_type, elem_names_ext, elem_ett, elem_funcs);
parm_len = tvb_get_guint8(tvb, curr_offset);
@ -1638,7 +1639,7 @@ elem_lv(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gint pdu_type, int
proto_tree_add_text(tree,
tvb, curr_offset, parm_len + 1,
"%s%s",
val_to_str(idx, elem_names, "Unknown (%u)"),
val_to_str_ext(idx, &elem_names_ext, "Unknown (%u)"),
(name_add == NULL) || (name_add[0] == '\0') ? "" : name_add);
subtree = proto_item_add_subtree(item, elem_ett[idx]);
@ -1686,20 +1687,20 @@ guint16 elem_lv_e(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gint pdu_
guint32 curr_offset;
proto_tree *subtree;
proto_item *item;
const value_string *elem_names;
value_string_ext elem_names_ext;
gint *elem_ett;
guint16 (**elem_funcs)(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string, int string_len);
curr_offset = offset;
consumed = 0;
SET_ELEM_VARS(pdu_type, elem_names, elem_ett, elem_funcs);
SET_ELEM_VARS(pdu_type, elem_names_ext, elem_ett, elem_funcs);
parm_len = tvb_get_ntohs(tvb, curr_offset);
item = proto_tree_add_text(tree, tvb, curr_offset, parm_len + 2,
"%s%s",
val_to_str(idx, elem_names, "Unknown (%u)"),
val_to_str_ext(idx, &elem_names_ext, "Unknown (%u)"),
(name_add == NULL) || (name_add[0] == '\0') ? "" : name_add);
subtree = proto_item_add_subtree(item, elem_ett[idx]);
@ -1748,14 +1749,14 @@ guint16 elem_v(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gint pdu_typ
guint32 curr_offset;
proto_tree *subtree;
proto_item *item;
const value_string *elem_names;
value_string_ext elem_names_ext;
gint *elem_ett;
guint16 (**elem_funcs)(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string, int string_len);
curr_offset = offset;
consumed = 0;
SET_ELEM_VARS(pdu_type, elem_names, elem_ett, elem_funcs);
SET_ELEM_VARS(pdu_type, elem_names_ext, elem_ett, elem_funcs);
if (elem_funcs[idx] == NULL)
{
@ -1775,7 +1776,7 @@ guint16 elem_v(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gint pdu_typ
proto_tree_add_text(tree,
tvb, curr_offset, 0,
"%s%s",
val_to_str(idx, elem_names, "Unknown (%u)"),
val_to_str_ext(idx, &elem_names_ext, "Unknown (%u)"),
(name_add == NULL) || (name_add[0] == '\0') ? "" : name_add);
subtree = proto_item_add_subtree(item, elem_ett[idx]);
@ -1806,19 +1807,19 @@ guint16 elem_v_short(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gint p
guint32 curr_offset;
proto_tree *subtree;
proto_item *item;
const value_string *elem_names;
value_string_ext elem_names_ext;
gint *elem_ett;
elem_fcn *elem_funcs;
gchar *a_add_string;
curr_offset = offset;
SET_ELEM_VARS(pdu_type, elem_names, elem_ett, elem_funcs);
SET_ELEM_VARS(pdu_type, elem_names_ext, elem_ett, elem_funcs);
item = proto_tree_add_text(tree,
tvb, curr_offset, 0,
"%s%s",
val_to_str(idx, elem_names, "Unknown (%u)"),
val_to_str_ext(idx, &elem_names_ext, "Unknown (%u)"),
"");
subtree = proto_item_add_subtree(item, elem_ett[idx]);
@ -2069,7 +2070,7 @@ de_lai(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guin
item = proto_tree_add_text(tree,
tvb, curr_offset, 5, "%s",
gsm_common_elem_strings[DE_LAI].strptr);
val_to_str_ext_const(DE_LAI, &gsm_common_elem_strings_ext, ""));
subtree = proto_item_add_subtree(item, ett_gsm_common_elem[DE_LAI]);
@ -2304,7 +2305,7 @@ de_ms_cm_1(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offs
item =
proto_tree_add_text(tree,
tvb, curr_offset, 1, "%s",
gsm_common_elem_strings[DE_MS_CM_1].strptr);
val_to_str_ext_const(DE_MS_CM_1, &gsm_common_elem_strings_ext, ""));
subtree = proto_item_add_subtree(item, ett_gsm_common_elem[DE_MS_CM_1]);
@ -3225,7 +3226,7 @@ de_pd_sapi(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offs
item =
proto_tree_add_text(tree,
tvb, curr_offset, 1, "%s",
gsm_dtap_elem_strings[DE_PD_SAPI].strptr);
val_to_str_ext_const(DE_PD_SAPI, &gsm_dtap_elem_strings_ext, ""));
subtree = proto_item_add_subtree(item, ett_gsm_dtap_elem[DE_PD_SAPI]);

View File

@ -83,79 +83,79 @@ extern const value_string gsm_a_pd_short_str_vals[];
extern guint16 de_cld_party_bcd_num(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string, int string_len);
/* Needed to share the packet-gsm_a_common.c functions */
extern const value_string gsm_bssmap_elem_strings[];
extern value_string_ext gsm_bssmap_elem_strings_ext;
extern gint ett_gsm_bssmap_elem[];
extern elem_fcn bssmap_elem_fcn[];
extern int hf_gsm_a_bssmap_elem_id;
extern const value_string gsm_dtap_elem_strings[];
extern value_string_ext gsm_dtap_elem_strings_ext;
extern gint ett_gsm_dtap_elem[];
extern elem_fcn dtap_elem_fcn[];
extern int hf_gsm_a_dtap_elem_id;
extern const value_string gsm_rp_elem_strings[];
extern value_string_ext gsm_rp_elem_strings_ext;
extern gint ett_gsm_rp_elem[];
extern elem_fcn rp_elem_fcn[];
extern int hf_gsm_a_rp_elem_id;
extern const value_string gsm_rr_elem_strings[];
extern value_string_ext gsm_rr_elem_strings_ext;
extern gint ett_gsm_rr_elem[];
extern elem_fcn rr_elem_fcn[];
extern int hf_gsm_a_rr_elem_id;
extern void get_rr_msg_params(guint8 oct, const gchar **msg_str, int *ett_tree, int *hf_idx, msg_fcn *msg_fcn);
extern const value_string gsm_common_elem_strings[];
extern value_string_ext gsm_common_elem_strings_ext;
extern gint ett_gsm_common_elem[];
extern elem_fcn common_elem_fcn[];
extern int hf_gsm_a_common_elem_id;
extern const value_string gsm_gm_elem_strings[];
extern value_string_ext gsm_gm_elem_strings_ext;
extern gint ett_gsm_gm_elem[];
extern elem_fcn gm_elem_fcn[];
extern int hf_gsm_a_gm_elem_id;
extern void get_gmm_msg_params(guint8 oct, const gchar **msg_str, int *ett_tree, int *hf_idx, msg_fcn *msg_fcn);
extern void get_sm_msg_params(guint8 oct, const gchar **msg_str, int *ett_tree, int *hf_idx, msg_fcn *msg_fcn);
extern const value_string gsm_bsslap_elem_strings[];
extern value_string_ext gsm_bsslap_elem_strings_ext;
extern gint ett_gsm_bsslap_elem[];
extern elem_fcn bsslap_elem_fcn[];
extern int hf_gsm_a_bsslap_elem_id;
extern const value_string gsm_bssmap_le_elem_strings[];
extern value_string_ext gsm_bssmap_le_elem_strings_ext;
extern gint ett_gsm_bssmap_le_elem[];
extern elem_fcn bssmap_le_elem_fcn[];
extern int hf_gsm_bssmap_le_elem_id;
extern const value_string nas_eps_common_elem_strings[];
extern value_string_ext nas_eps_common_elem_strings_ext;
extern gint ett_nas_eps_common_elem[];
extern elem_fcn nas_eps_common_elem_fcn[];
extern int hf_nas_eps_common_elem_id;
extern const value_string nas_emm_elem_strings[];
extern value_string_ext nas_emm_elem_strings_ext;
extern gint ett_nas_eps_emm_elem[];
extern elem_fcn emm_elem_fcn[];
extern int hf_nas_eps_emm_elem_id;
extern const value_string nas_esm_elem_strings[];
extern value_string_ext nas_esm_elem_strings_ext;
extern gint ett_nas_eps_esm_elem[];
extern elem_fcn esm_elem_fcn[];
extern int hf_nas_eps_esm_elem_id;
extern const value_string sgsap_elem_strings[];
extern value_string_ext sgsap_elem_strings_ext;
extern gint ett_sgsap_elem[];
extern elem_fcn sgsap_elem_fcn[];
extern int hf_sgsap_elem_id;
extern const value_string bssgp_elem_strings[];
extern value_string_ext bssgp_elem_strings_ext;
extern gint ett_bssgp_elem[];
extern elem_fcn bssgp_elem_fcn[];
extern int hf_bssgp_elem_id;
extern const value_string gmr1_ie_common_strings[];
extern value_string_ext gmr1_ie_common_strings_ext;
extern elem_fcn gmr1_ie_common_func[];
extern gint ett_gmr1_ie_common[];
extern const value_string gmr1_ie_rr_strings[];
extern value_string_ext gmr1_ie_rr_strings_ext;
extern elem_fcn gmr1_ie_rr_func[];
extern gint ett_gmr1_ie_rr[];
@ -261,81 +261,81 @@ extern const char* get_gsm_a_msg_string(int pdu_type, int idx);
#define NO_MORE_DATA_CHECK(nmdc_len) \
if ((nmdc_len) == (curr_offset - offset)) return(nmdc_len);
#define SET_ELEM_VARS(SEV_pdu_type, SEV_elem_names, SEV_elem_ett, SEV_elem_funcs) \
#define SET_ELEM_VARS(SEV_pdu_type, SEV_elem_names_ext, SEV_elem_ett, SEV_elem_funcs) \
switch (SEV_pdu_type) \
{ \
case GSM_A_PDU_TYPE_BSSMAP: \
SEV_elem_names = gsm_bssmap_elem_strings; \
SEV_elem_names_ext = gsm_bssmap_elem_strings_ext; \
SEV_elem_ett = ett_gsm_bssmap_elem; \
SEV_elem_funcs = bssmap_elem_fcn; \
break; \
case GSM_A_PDU_TYPE_DTAP: \
SEV_elem_names = gsm_dtap_elem_strings; \
SEV_elem_names_ext = gsm_dtap_elem_strings_ext; \
SEV_elem_ett = ett_gsm_dtap_elem; \
SEV_elem_funcs = dtap_elem_fcn; \
break; \
case GSM_A_PDU_TYPE_RP: \
SEV_elem_names = gsm_rp_elem_strings; \
SEV_elem_names_ext = gsm_rp_elem_strings_ext; \
SEV_elem_ett = ett_gsm_rp_elem; \
SEV_elem_funcs = rp_elem_fcn; \
break; \
case GSM_A_PDU_TYPE_RR: \
SEV_elem_names = gsm_rr_elem_strings; \
SEV_elem_names_ext = gsm_rr_elem_strings_ext; \
SEV_elem_ett = ett_gsm_rr_elem; \
SEV_elem_funcs = rr_elem_fcn; \
break; \
case GSM_A_PDU_TYPE_COMMON: \
SEV_elem_names = gsm_common_elem_strings; \
SEV_elem_names_ext = gsm_common_elem_strings_ext; \
SEV_elem_ett = ett_gsm_common_elem; \
SEV_elem_funcs = common_elem_fcn; \
break; \
case GSM_A_PDU_TYPE_GM: \
SEV_elem_names = gsm_gm_elem_strings; \
SEV_elem_names_ext = gsm_gm_elem_strings_ext; \
SEV_elem_ett = ett_gsm_gm_elem; \
SEV_elem_funcs = gm_elem_fcn; \
break; \
case GSM_A_PDU_TYPE_BSSLAP: \
SEV_elem_names = gsm_bsslap_elem_strings; \
SEV_elem_names_ext = gsm_bsslap_elem_strings_ext; \
SEV_elem_ett = ett_gsm_bsslap_elem; \
SEV_elem_funcs = bsslap_elem_fcn; \
break; \
case GSM_PDU_TYPE_BSSMAP_LE: \
SEV_elem_names = gsm_bssmap_le_elem_strings; \
SEV_elem_names_ext = gsm_bssmap_le_elem_strings_ext; \
SEV_elem_ett = ett_gsm_bssmap_le_elem; \
SEV_elem_funcs = bssmap_le_elem_fcn; \
break; \
case NAS_PDU_TYPE_COMMON: \
SEV_elem_names = nas_eps_common_elem_strings; \
SEV_elem_names_ext = nas_eps_common_elem_strings_ext; \
SEV_elem_ett = ett_nas_eps_common_elem; \
SEV_elem_funcs = nas_eps_common_elem_fcn; \
break; \
case NAS_PDU_TYPE_EMM: \
SEV_elem_names = nas_emm_elem_strings; \
SEV_elem_names_ext = nas_emm_elem_strings_ext; \
SEV_elem_ett = ett_nas_eps_emm_elem; \
SEV_elem_funcs = emm_elem_fcn; \
break; \
case NAS_PDU_TYPE_ESM: \
SEV_elem_names = nas_esm_elem_strings; \
SEV_elem_names_ext = nas_esm_elem_strings_ext; \
SEV_elem_ett = ett_nas_eps_esm_elem; \
SEV_elem_funcs = esm_elem_fcn; \
break; \
case SGSAP_PDU_TYPE: \
SEV_elem_names = sgsap_elem_strings; \
SEV_elem_names_ext = sgsap_elem_strings_ext; \
SEV_elem_ett = ett_sgsap_elem; \
SEV_elem_funcs = sgsap_elem_fcn; \
break; \
case BSSGP_PDU_TYPE: \
SEV_elem_names = bssgp_elem_strings; \
SEV_elem_names_ext = bssgp_elem_strings_ext; \
SEV_elem_ett = ett_bssgp_elem; \
SEV_elem_funcs = bssgp_elem_fcn; \
break; \
case GMR1_IE_COMMON: \
SEV_elem_names = gmr1_ie_common_strings; \
SEV_elem_names_ext = gmr1_ie_common_strings_ext; \
SEV_elem_ett = ett_gmr1_ie_common; \
SEV_elem_funcs = gmr1_ie_common_func; \
break; \
case GMR1_IE_RR: \
SEV_elem_names = gmr1_ie_rr_strings; \
SEV_elem_names_ext = gmr1_ie_rr_strings_ext; \
SEV_elem_ett = ett_gmr1_ie_rr; \
SEV_elem_funcs = gmr1_ie_rr_func; \
break; \

View File

@ -243,7 +243,7 @@ const value_string gsm_a_dtap_msg_tp_strings[] = {
{ 0, NULL }
};
const value_string gsm_dtap_elem_strings[] = {
static const value_string gsm_dtap_elem_strings[] = {
/* Mobility Management Information Elements 10.5.3 */
{ DE_AUTH_PARAM_RAND, "Authentication Parameter RAND" },
{ DE_AUTH_PARAM_AUTN, "Authentication Parameter AUTN (UMTS and EPS authentication challenge)" },
@ -333,6 +333,7 @@ const value_string gsm_dtap_elem_strings[] = {
{ DE_TP_EPC_GNSS_TOD_MSEC, "GNSS-TOD-msec"},
{ 0, NULL }
};
value_string_ext gsm_dtap_elem_strings_ext = VALUE_STRING_EXT_INIT(gsm_dtap_elem_strings);
const gchar *gsm_a_pd_str[] = {
"Group Call Control",
@ -2397,7 +2398,7 @@ de_call_state(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 o
item =
proto_tree_add_text(tree,
tvb, offset, 1, "%s",
gsm_dtap_elem_strings[DE_CALL_STATE].strptr);
val_to_str_ext_const(DE_CALL_STATE, &gsm_dtap_elem_strings_ext, ""));
subtree = proto_item_add_subtree(item, ett_gsm_dtap_elem[DE_CALL_STATE]);
proto_tree_add_item(subtree, hf_gsm_a_dtap_coding_standard, tvb, offset, 1, ENC_BIG_ENDIAN);
@ -4414,7 +4415,7 @@ dtap_mm_auth_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint3
item =
proto_tree_add_text(tree,
tvb, curr_offset, 1, "%s",
gsm_common_elem_strings[DE_CIPH_KEY_SEQ_NUM].strptr);
val_to_str_ext_const(DE_CIPH_KEY_SEQ_NUM, &gsm_common_elem_strings_ext, ""));
subtree = proto_item_add_subtree(item, ett_gsm_common_elem[DE_CIPH_KEY_SEQ_NUM]);
@ -4524,7 +4525,7 @@ dtap_mm_cm_reestab_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
item =
proto_tree_add_text(tree,
tvb, curr_offset, 1, "%s",
gsm_common_elem_strings[DE_CIPH_KEY_SEQ_NUM].strptr);
val_to_str_ext_const(DE_CIPH_KEY_SEQ_NUM, &gsm_common_elem_strings_ext, ""));
subtree = proto_item_add_subtree(item, ett_gsm_common_elem[DE_CIPH_KEY_SEQ_NUM]);
@ -4656,7 +4657,7 @@ dtap_mm_cm_srvc_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gui
item =
proto_tree_add_text(tree,
tvb, curr_offset, 1, "%s",
gsm_common_elem_strings[DE_CIPH_KEY_SEQ_NUM].strptr);
val_to_str_ext_const(DE_CIPH_KEY_SEQ_NUM, &gsm_common_elem_strings_ext, ""));
subtree = proto_item_add_subtree(item, ett_gsm_common_elem[DE_CIPH_KEY_SEQ_NUM]);
@ -4684,7 +4685,7 @@ dtap_mm_cm_srvc_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gui
item =
proto_tree_add_text(tree,
tvb, curr_offset, 1, "%s",
gsm_dtap_elem_strings[DE_CM_SRVC_TYPE].strptr);
val_to_str_ext_const(DE_CM_SRVC_TYPE, &gsm_dtap_elem_strings_ext, ""));
subtree = proto_item_add_subtree(item, ett_gsm_dtap_elem[DE_CM_SRVC_TYPE]);
@ -4756,7 +4757,7 @@ dtap_mm_id_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32
item =
proto_tree_add_text(tree,
tvb, curr_offset, 1, "%s",
gsm_dtap_elem_strings[DE_ID_TYPE].strptr);
val_to_str_ext_const(DE_ID_TYPE, &gsm_dtap_elem_strings_ext, ""));
subtree = proto_item_add_subtree(item, ett_gsm_dtap_elem[DE_ID_TYPE]);
@ -4919,7 +4920,7 @@ dtap_mm_loc_upd_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gui
item =
proto_tree_add_text(tree,
tvb, curr_offset, 1, "%s",
gsm_common_elem_strings[DE_CIPH_KEY_SEQ_NUM].strptr);
val_to_str_ext_const(DE_CIPH_KEY_SEQ_NUM, &gsm_common_elem_strings_ext, ""));
subtree = proto_item_add_subtree(item, ett_gsm_common_elem[DE_CIPH_KEY_SEQ_NUM]);
@ -4948,7 +4949,7 @@ dtap_mm_loc_upd_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gui
item =
proto_tree_add_text(tree,
tvb, curr_offset, 1, "%s",
gsm_dtap_elem_strings[DE_LOC_UPD_TYPE].strptr);
val_to_str_ext_const(DE_LOC_UPD_TYPE, &gsm_dtap_elem_strings_ext, ""));
subtree = proto_item_add_subtree(item, ett_gsm_dtap_elem[DE_LOC_UPD_TYPE]);
@ -5205,7 +5206,7 @@ dtap_cc_congestion_control(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _
item =
proto_tree_add_text(tree,
tvb, curr_offset, 1, "%s",
gsm_dtap_elem_strings[DE_CONGESTION].strptr);
val_to_str_ext_const(DE_CONGESTION, &gsm_dtap_elem_strings_ext, ""));
subtree = proto_item_add_subtree(item, ett_gsm_dtap_elem[DE_CONGESTION]);

View File

@ -149,7 +149,7 @@ const value_string gsm_a_dtap_msg_sm_strings[] = {
{ 0, NULL }
};
const value_string gsm_gm_elem_strings[] = {
static const value_string gsm_gm_elem_strings[] = {
/* GPRS Mobility Management Information Elements 10.5.5 */
{ DE_ADD_UPD_TYPE, "Additional Update Type" },
{ DE_ATTACH_RES, "Attach Result" },
@ -219,6 +219,7 @@ const value_string gsm_gm_elem_strings[] = {
{ DE_DEVICE_PROPERTIES, "Device properties"},
{ 0, NULL }
};
value_string_ext gsm_gm_elem_strings_ext = VALUE_STRING_EXT_INIT(gsm_gm_elem_strings);
#define DTAP_GMM_IEI_MASK 0xff
#define DTAP_SM_IEI_MASK 0xff

View File

@ -67,7 +67,7 @@ typedef enum
}
rp_elem_idx_t;
const value_string gsm_rp_elem_strings[] = {
static const value_string gsm_rp_elem_strings[] = {
/* Short Message Service RP Information Elements [5] 8.2 */
{ DE_RP_MESSAGE_REF, "RP-Message Reference" },
{ DE_RP_ORIG_ADDR, "RP-Originator Address" },
@ -76,6 +76,7 @@ const value_string gsm_rp_elem_strings[] = {
{ DE_RP_CAUSE, "RP-Cause" },
{ 0, NULL }
};
value_string_ext gsm_rp_elem_strings_ext = VALUE_STRING_EXT_INIT(gsm_rp_elem_strings);
/* Initialize the protocol and registered fields */
static int proto_a_rp = -1;

View File

@ -172,7 +172,7 @@ const value_string gsm_a_dtap_msg_rr_strings[] = {
{ 0, NULL }
};
const value_string gsm_rr_elem_strings[] = {
static const value_string gsm_rr_elem_strings[] = {
/* Radio Resource Management Information Elements 10.5.2, most are from 10.5.1 */
{ DE_RR_BA_RANGE, "BA Range" }, /* [3] 10.5.2.1a BA Range */
{ DE_RR_CELL_CH_DSC, "Cell Channel Description" }, /* [3] 10.5.2.1b */
@ -306,6 +306,7 @@ const value_string gsm_rr_elem_strings[] = {
{ DE_RR_CARRIER_IND, "Carrier Indication" }, /* 10.5.2.69 Carrier Indication */
{ 0, NULL }
};
value_string_ext gsm_rr_elem_strings_ext = VALUE_STRING_EXT_INIT(gsm_rr_elem_strings);
const value_string gsm_rr_rest_octets_elem_strings[] = {
/* RR Rest Octets information elements */
@ -7836,7 +7837,7 @@ de_rr_tmsi_ptmsi(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint3
curr_offset = offset;
item = proto_tree_add_text(tree, tvb, curr_offset, 3, "%s",
gsm_rr_elem_strings[DE_RR_TMSI_PTMSI].strptr);
val_to_str_ext_const(DE_RR_TMSI_PTMSI, &gsm_rr_elem_strings_ext, ""));
subtree = proto_item_add_subtree(item, ett_gsm_rr_elem[DE_RR_TMSI_PTMSI]);
@ -8138,7 +8139,7 @@ de_rr_carrier_ind(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint
curr_offset = offset;
item = proto_tree_add_text(tree, tvb, curr_offset, 3, "%s",
gsm_rr_elem_strings[DE_RR_CARRIER_IND].strptr);
val_to_str_ext_const(DE_RR_CARRIER_IND, &gsm_rr_elem_strings_ext, ""));
subtree = proto_item_add_subtree(item, ett_gsm_rr_elem[DE_RR_CARRIER_IND]);
@ -9471,7 +9472,7 @@ dtap_rr_paging_resp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gui
item =
proto_tree_add_text(tree,
tvb, curr_offset, 1, "%s",
gsm_common_elem_strings[DE_CIPH_KEY_SEQ_NUM].strptr);
val_to_str_ext_const(DE_CIPH_KEY_SEQ_NUM, &gsm_common_elem_strings_ext, ""));
subtree = proto_item_add_subtree(item, ett_gsm_common_elem[DE_CIPH_KEY_SEQ_NUM]);

View File

@ -86,7 +86,7 @@ static int ett_bsslap_cell_list = -1;
#define BSSLAP_PARAM_TFI 0x2C
#define BSSLAP_PARAM_STARTING_TIME 0x2D
const value_string gsm_bsslap_elem_strings[] = {
static const value_string gsm_bsslap_elem_strings[] = {
{ DE_BLAP_RES1, "Reserved" },
{ DE_BLAP_TA, "Timing Advance" },
{ DE_BLAP_RES3, "Reserved" }, /* (note) */
@ -120,6 +120,7 @@ const value_string gsm_bsslap_elem_strings[] = {
{ DE_BLAP_START_TIME, "Starting Time" },
{ 0, NULL },
};
value_string_ext gsm_bsslap_elem_strings_ext = VALUE_STRING_EXT_INIT(gsm_bsslap_elem_strings);
/*
* NOTE: These values of the codepoints shall not be used as they were used in an earlier version of the

View File

@ -100,7 +100,7 @@ static const value_string gsm_bssmap_le_msg_strings[] = {
#define BSSMAP_LE_CELL_IDENTITY_LIST 82
#define BSSMAP_LE_IMEI 128
const value_string gsm_bssmap_le_elem_strings[] = {
static const value_string gsm_bssmap_le_elem_strings[] = {
{ DE_BMAPLE_LCSQOS, "LCS QoS" },
{ DE_BMAPLE_LCS_PRIO, "LCS Priority" },
{ DE_BMAPLE_LOC_TYPE, "Location Type" },
@ -133,6 +133,7 @@ const value_string gsm_bssmap_le_elem_strings[] = {
{ DE_BMAPLE_IMEI, "IMEI" },
{ 0, NULL }
};
value_string_ext gsm_bssmap_le_elem_strings_ext = VALUE_STRING_EXT_INIT(gsm_bssmap_le_elem_strings);
static const value_string gsm_apdu_protocol_id_strings[] = {
{ 0, "reserved" },

View File

@ -334,7 +334,7 @@ typedef enum
}
nas_eps_common_elem_idx_t;
const value_string nas_eps_common_elem_strings[] = {
static const value_string nas_eps_common_elem_strings[] = {
{ DE_EPS_CMN_ADD_INFO, "Additional information" }, /* 9.9.2.0 Additional information */
{ DE_EPS_CMN_DEVICE_PROPERTIES, "Device properties" }, /* 9.9.2.0A Device properties */
{ DE_EPS_CMN_EPS_BE_CTX_STATUS, "EPS bearer context status" }, /* 9.9.2.1 EPS bearer context status */
@ -349,6 +349,7 @@ const value_string nas_eps_common_elem_strings[] = {
{ DE_EPS_CMN_SUP_CODEC_LST, "Supported codec list" }, /* 9.9.2.10 Supported codec list */
{ 0, NULL }
};
value_string_ext nas_eps_common_elem_strings_ext = VALUE_STRING_EXT_INIT(nas_eps_common_elem_strings);
/* Utility functions */
static guint16
@ -600,7 +601,7 @@ guint16 (*nas_eps_common_elem_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_inf
NULL, /* NONE */
};
const value_string nas_emm_elem_strings[] = {
static const value_string nas_emm_elem_strings[] = {
/* 9.9.3 EPS Mobility Management (EMM) information elements */
{ DE_EMM_ADD_UPD_RES, "Additional update result" }, /* 9.9.3.0A Additional update result */
{ DE_EMM_ADD_UPD_TYPE, "Additional update type" }, /* 9.9.3.0B Additional update type */
@ -656,6 +657,8 @@ const value_string nas_emm_elem_strings[] = {
{ DE_EMM_GUTI_TYPE, "GUTI type" }, /* 9.9.3.45 GUTI type */
{ 0, NULL }
};
value_string_ext nas_emm_elem_strings_ext = VALUE_STRING_EXT_INIT(nas_emm_elem_strings);
#define NUM_NAS_EMM_ELEM (sizeof(nas_emm_elem_strings)/sizeof(value_string))
gint ett_nas_eps_emm_elem[NUM_NAS_EMM_ELEM];
@ -2825,7 +2828,7 @@ typedef enum
}
nas_esm_elem_idx_t;
const value_string nas_esm_elem_strings[] = {
static const value_string nas_esm_elem_strings[] = {
{ DE_ESM_APN, "Access point name" }, /* 9.9.4.1 Access point name */
{ DE_ESM_APN_AGR_MAX_BR, "APN aggregate maximum bit rate" }, /* 9.9.4.2 APN aggregate maximum bit rate */
{ DE_ESM_CONNECTIVITY_TYPE, "Connectivity type" }, /* 9.9.4.2A Connectivity type */
@ -2847,7 +2850,7 @@ const value_string nas_esm_elem_strings[] = {
{ DE_ESM_TID, "Transaction identifier" }, /* 9.9.4.17 Transaction identifier */
{ 0, NULL }
};
value_string_ext nas_esm_elem_strings_ext = VALUE_STRING_EXT_INIT(nas_esm_elem_strings);
#define NUM_NAS_ESM_ELEM (sizeof(nas_esm_elem_strings)/sizeof(value_string))
gint ett_nas_eps_esm_elem[NUM_NAS_ESM_ELEM];

View File

@ -567,7 +567,7 @@ de_sgsap_vlr_name(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint
* (packet-gsm_a_bssmap.c)
*/
const value_string sgsap_elem_strings[] = {
static const value_string sgsap_elem_strings[] = {
{ DE_SGSAP_IMSI, "IMSI" }, /* 9.4.6 */
{ DE_SGSAP_VLR_NAME, "VLR name" }, /* 9.4.22 */
{ DE_SGSAP_TMSI, "TMSI" }, /* 9.4.20 */
@ -610,6 +610,7 @@ const value_string sgsap_elem_strings[] = {
{ 0, NULL }
};
value_string_ext sgsap_elem_strings_ext = VALUE_STRING_EXT_INIT(sgsap_elem_strings);
#define NUM_SGSAP_ELEM (sizeof(sgsap_elem_strings)/sizeof(value_string))
gint ett_sgsap_elem[NUM_SGSAP_ELEM];