From 1a182e2a7957da396a11e109efd42bf2370e51b7 Mon Sep 17 00:00:00 2001 From: Pascal Quantin Date: Sun, 20 Jan 2013 17:14:24 +0000 Subject: Dissect ETWS and CMAS notifications svn path=/trunk/; revision=47177 --- asn1/lte-rrc/lte-rrc.cnf | 198 ++++++++++++++++++++++++++++++--- asn1/lte-rrc/packet-lte-rrc-template.c | 151 ++++++++++++++++++++++++- 2 files changed, 330 insertions(+), 19 deletions(-) (limited to 'asn1') diff --git a/asn1/lte-rrc/lte-rrc.cnf b/asn1/lte-rrc/lte-rrc.cnf index 99d1b5676a..52acf83141 100644 --- a/asn1/lte-rrc/lte-rrc.cnf +++ b/asn1/lte-rrc/lte-rrc.cnf @@ -776,18 +776,16 @@ if(ue_cap_tvb){ call_dissector(rrc_sys_info_cont_handle, utra_bcch_cont_tvb, actx->pinfo, subtree); } -#.FN_BODY NeighCellConfig VAL_PTR = &neigh_cell_config_tvb +#.TYPE_ATTR +NeighCellConfig TYPE=FT_UINT8 DISPLAY=BASE_DEC STRINGS=VALS(lte_rrc_neighCellConfig_vals) + +#.FN_BODY NeighCellConfig VAL_PTR = &neigh_cell_config_tvb HF_INDEX=-1 tvbuff_t *neigh_cell_config_tvb = NULL; %(DEFAULT_BODY)s #.FN_FTR NeighCellConfig if (neigh_cell_config_tvb) { - guint8 bits; - proto_tree *subtree; - subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_neighCellConfig); - bits = tvb_get_bits8(neigh_cell_config_tvb, 0, 2); - proto_tree_add_text(subtree, neigh_cell_config_tvb, 0, 1, "%s", - val_to_str_const(bits, lte_rrc_neighCellConfig_vals, "Unknown")); + actx->created_item = proto_tree_add_uint(tree, hf_index, neigh_cell_config_tvb, 0, 1, tvb_get_bits8(neigh_cell_config_tvb, 0, 2)); } #.FN_BODY LocationInfo-r10/locationCoordinates-r10/ellipsoid-Point-r10 VAL_PTR = &ellipsoid_point_tvb @@ -878,18 +876,190 @@ SystemInformationBlockType9/hnb-Name TYPE=FT_STRING DISPLAY=BASE_NONE actx->created_item = proto_tree_add_unicode_string(tree, hf_index, hnb_name_tvb, 0, -1, tvb_get_ephemeral_string_enc(hnb_name_tvb, 0, tvb_length(hnb_name_tvb), ENC_UTF_8 | ENC_NA)); -#.FN_BODY SystemInformationBlockType16-r11/dayLightSavingTime VAL_PTR=&daylight_saving_time_tvb +#.TYPE_ATTR +SystemInformationBlockType10/messageIdentifier TYPE=FT_UINT16 DISPLAY=BASE_DEC|BASE_EXT_STRING STRINGS=<e_rrc_messageIdentifier_vals_ext + +#.FN_BODY SystemInformationBlockType10/messageIdentifier VAL_PTR=&msg_id_tvb HF_INDEX=-1 + tvbuff_t *msg_id_tvb = NULL; +%(DEFAULT_BODY)s + +#.FN_FTR SystemInformationBlockType10/messageIdentifier + if (msg_id_tvb) { + actx->created_item = proto_tree_add_item(tree, hf_index, msg_id_tvb, 0, 2, ENC_BIG_ENDIAN); + } + +#.FN_BODY SystemInformationBlockType10/serialNumber VAL_PTR=&serial_nb_tvb + tvbuff_t *serial_nb_tvb = NULL; +%(DEFAULT_BODY)s + +#.FN_FTR SystemInformationBlockType10/serialNumber + if (serial_nb_tvb) { + proto_tree *subtree; + subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_serialNumber); + proto_tree_add_item(subtree, hf_lte_rrc_serialNumber_gs, serial_nb_tvb, 0, 2, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_lte_rrc_serialNumber_msg_code, serial_nb_tvb, 0, 2, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_lte_rrc_serialNumber_upd_nb, serial_nb_tvb, 0, 2, ENC_BIG_ENDIAN); + } + +#.FN_BODY SystemInformationBlockType10/warningType VAL_PTR=&warning_type_tvb + tvbuff_t *warning_type_tvb = NULL; +%(DEFAULT_BODY)s + +#.FN_FTR SystemInformationBlockType10/warningType + if (warning_type_tvb) { + proto_tree *subtree; + subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_warningType); + proto_tree_add_item(subtree, hf_lte_rrc_warningType_value, warning_type_tvb, 0, 2, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_lte_rrc_warningType_emergency_user_alert, warning_type_tvb, 0, 2, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_lte_rrc_warningType_popup, warning_type_tvb, 0, 2, ENC_BIG_ENDIAN); + } + +#.FN_BODY SystemInformationBlockType10/warningSecurityInfo VAL_PTR=&warning_sec_info_tvb + tvbuff_t *warning_sec_info_tvb = NULL; +%(DEFAULT_BODY)s + +#.FN_FTR SystemInformationBlockType10/warningSecurityInfo + if (warning_sec_info_tvb) { + guint8 oct, tz; + proto_tree *subtree; + subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_warningSecurityInfo); + oct = tvb_get_guint8(warning_sec_info_tvb, 0); + proto_tree_add_uint_format_value(subtree, hf_lte_rrc_warningSecurityInfo_yr, warning_sec_info_tvb, 0, 1, oct, "%u (0x%02x)", 10*(oct&0x0f)+(oct>>4), oct); + oct = tvb_get_guint8(warning_sec_info_tvb, 1); + proto_tree_add_uint_format_value(subtree, hf_lte_rrc_warningSecurityInfo_mo, warning_sec_info_tvb, 1, 1, oct, "%u (0x%02x)", 10*(oct&0x0f)+(oct>>4), oct); + oct = tvb_get_guint8(warning_sec_info_tvb, 2); + proto_tree_add_uint_format_value(subtree, hf_lte_rrc_warningSecurityInfo_day, warning_sec_info_tvb, 2, 1, oct, "%u (0x%02x)", 10*(oct&0x0f)+(oct>>4), oct); + oct = tvb_get_guint8(warning_sec_info_tvb, 3); + proto_tree_add_uint_format_value(subtree, hf_lte_rrc_warningSecurityInfo_hr, warning_sec_info_tvb, 3, 1, oct, "%u (0x%02x)", 10*(oct&0x0f)+(oct>>4), oct); + oct = tvb_get_guint8(warning_sec_info_tvb, 4); + proto_tree_add_uint_format_value(subtree, hf_lte_rrc_warningSecurityInfo_min, warning_sec_info_tvb, 4, 1, oct, "%u (0x%02x)", 10*(oct&0x0f)+(oct>>4), oct); + oct = tvb_get_guint8(warning_sec_info_tvb, 5); + proto_tree_add_uint_format_value(subtree, hf_lte_rrc_warningSecurityInfo_sec, warning_sec_info_tvb, 5, 1, oct, "%u (0x%02x)", 10*(oct&0x0f)+(oct>>4), oct); + oct = tvb_get_guint8(warning_sec_info_tvb, 6); + if (oct == 0xff) { + proto_tree_add_uint_format_value(subtree, hf_lte_rrc_warningSecurityInfo_tz, warning_sec_info_tvb, 6, 1, oct, "Unknown (0x%02x)", oct); + } else { + tz = (oct >> 4) + (oct & 0x07) * 10; + proto_tree_add_uint_format_value(subtree, hf_lte_rrc_warningSecurityInfo_tz, warning_sec_info_tvb, 6, 1, oct, "GMT %c %d hr %d min (0x%02x)", + (oct & 0x08)?'-':'+', tz/4, (tz%4)*15, oct); + } + proto_tree_add_item(subtree, hf_lte_rrc_warningSecurityInfo_digital_signature, warning_sec_info_tvb, 7, 43, ENC_NA); + } + +#.TYPE_ATTR +SystemInformationBlockType11/messageIdentifier TYPE=FT_UINT16 DISPLAY=BASE_DEC|BASE_EXT_STRING STRINGS=<e_rrc_messageIdentifier_vals_ext + +#.FN_BODY SystemInformationBlockType11/messageIdentifier VAL_PTR=&msg_id_tvb HF_INDEX=-1 + tvbuff_t *msg_id_tvb = NULL; +%(DEFAULT_BODY)s + +#.FN_FTR SystemInformationBlockType11/messageIdentifier + if (msg_id_tvb) { + actx->created_item = proto_tree_add_item(tree, hf_index, msg_id_tvb, 0, 2, ENC_BIG_ENDIAN); + } + +#.FN_BODY SystemInformationBlockType11/serialNumber VAL_PTR=&serial_nb_tvb + tvbuff_t *serial_nb_tvb = NULL; +%(DEFAULT_BODY)s + +#.FN_FTR SystemInformationBlockType11/serialNumber + if (serial_nb_tvb) { + proto_tree *subtree; + subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_serialNumber); + proto_tree_add_item(subtree, hf_lte_rrc_serialNumber_gs, serial_nb_tvb, 0, 2, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_lte_rrc_serialNumber_msg_code, serial_nb_tvb, 0, 2, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_lte_rrc_serialNumber_upd_nb, serial_nb_tvb, 0, 2, ENC_BIG_ENDIAN); + } + +#.FN_BODY SystemInformationBlockType11/dataCodingScheme VAL_PTR=&data_coding_scheme_tvb + tvbuff_t *data_coding_scheme_tvb = NULL; +%(DEFAULT_BODY)s + +#.FN_FTR SystemInformationBlockType11/dataCodingScheme + if (data_coding_scheme_tvb) { + proto_tree *subtree; + subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_dataCodingScheme); + lte_rrc_etws_dataCodingScheme = dissect_cbs_data_coding_scheme(data_coding_scheme_tvb, actx->pinfo, subtree, 0); + } + +#.FN_BODY SystemInformationBlockType11/warningMessageSegment VAL_PTR=&warning_msg_seg_tvb + tvbuff_t *warning_msg_seg_tvb = NULL; +%(DEFAULT_BODY)s + +#.FN_FTR SystemInformationBlockType11/warningMessageSegment + if (warning_msg_seg_tvb && (lte_rrc_etws_dataCodingScheme != SMS_ENCODING_NOT_SET)) { + proto_tree *subtree; + tvbuff_t *cb_data_tvb; + subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_warningMessageSegment); + cb_data_tvb = dissect_cbs_data(lte_rrc_etws_dataCodingScheme, warning_msg_seg_tvb, subtree, actx->pinfo, 0); + if (cb_data_tvb) { + proto_tree_add_unicode_string(subtree, hf_lte_rrc_warningMessageSegment_decoded, cb_data_tvb, 0, -1, + tvb_get_ephemeral_string_enc(cb_data_tvb, 0, tvb_length(cb_data_tvb), ENC_UTF_8 | ENC_NA)); + } + } + +#.TYPE_ATTR +SystemInformationBlockType12-r9/messageIdentifier-r9 TYPE=FT_UINT16 DISPLAY=BASE_DEC|BASE_EXT_STRING STRINGS=<e_rrc_messageIdentifier_vals_ext + +#.FN_BODY SystemInformationBlockType12-r9/messageIdentifier-r9 VAL_PTR=&msg_id_tvb HF_INDEX=-1 + tvbuff_t *msg_id_tvb = NULL; +%(DEFAULT_BODY)s + +#.FN_FTR SystemInformationBlockType12-r9/messageIdentifier-r9 + if (msg_id_tvb) { + actx->created_item = proto_tree_add_item(tree, hf_index, msg_id_tvb, 0, 2, ENC_BIG_ENDIAN); + } + +#.FN_BODY SystemInformationBlockType12-r9/serialNumber-r9 VAL_PTR=&serial_nb_tvb + tvbuff_t *serial_nb_tvb = NULL; +%(DEFAULT_BODY)s + +#.FN_FTR SystemInformationBlockType12-r9/serialNumber-r9 + if (serial_nb_tvb) { + proto_tree *subtree; + subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_serialNumber); + proto_tree_add_item(subtree, hf_lte_rrc_serialNumber_gs, serial_nb_tvb, 0, 2, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_lte_rrc_serialNumber_msg_code, serial_nb_tvb, 0, 2, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_lte_rrc_serialNumber_upd_nb, serial_nb_tvb, 0, 2, ENC_BIG_ENDIAN); + } + +#.FN_BODY SystemInformationBlockType12-r9/dataCodingScheme-r9 VAL_PTR=&data_coding_scheme_tvb + tvbuff_t *data_coding_scheme_tvb = NULL; +%(DEFAULT_BODY)s + +#.FN_FTR SystemInformationBlockType12-r9/dataCodingScheme-r9 + if (data_coding_scheme_tvb) { + proto_tree *subtree; + subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_dataCodingScheme); + lte_rrc_cmas_dataCodingScheme = dissect_cbs_data_coding_scheme(data_coding_scheme_tvb, actx->pinfo, subtree, 0); + } + +#.FN_BODY SystemInformationBlockType12-r9/warningMessageSegment-r9 VAL_PTR=&warning_msg_seg_tvb + tvbuff_t *warning_msg_seg_tvb = NULL; +%(DEFAULT_BODY)s + +#.FN_FTR SystemInformationBlockType12-r9/warningMessageSegment-r9 + if (warning_msg_seg_tvb && (lte_rrc_cmas_dataCodingScheme != SMS_ENCODING_NOT_SET)) { + proto_tree *subtree; + tvbuff_t *cb_data_tvb; + subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_warningMessageSegment); + cb_data_tvb = dissect_cbs_data(lte_rrc_cmas_dataCodingScheme, warning_msg_seg_tvb, subtree, actx->pinfo, 0); + if (cb_data_tvb) { + proto_tree_add_unicode_string(subtree, hf_lte_rrc_warningMessageSegment_decoded, cb_data_tvb, 0, -1, + tvb_get_ephemeral_string_enc(cb_data_tvb, 0, tvb_length(cb_data_tvb), ENC_UTF_8 | ENC_NA)); + } + } + +#.TYPE_ATTR +SystemInformationBlockType16-r11/dayLightSavingTime TYPE=FT_UINT8 DISPLAY=BASE_DEC STRINGS=VALS(lte_rrc_daylightSavingTime_vals) + +#.FN_BODY SystemInformationBlockType16-r11/dayLightSavingTime VAL_PTR=&daylight_saving_time_tvb HF_INDEX=-1 tvbuff_t *daylight_saving_time_tvb = NULL; %(DEFAULT_BODY)s #.FN_FTR SystemInformationBlockType16-r11/dayLightSavingTime if (daylight_saving_time_tvb) { - guint8 bits; - proto_tree *subtree; - subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_daylightSavingTime); - bits = tvb_get_bits8(daylight_saving_time_tvb, 0, 2); - proto_tree_add_text(subtree, daylight_saving_time_tvb, 0, 1, "%s", - val_to_str_const(bits, lte_rrc_daylightSavingTime_vals, "Unknown")); + actx->created_item = proto_tree_add_uint(tree, hf_index, daylight_saving_time_tvb, 0, 1, tvb_get_bits8(daylight_saving_time_tvb, 0, 2)); } #.FN_BODY SystemInformationBlockType16-r11/leapSeconds diff --git a/asn1/lte-rrc/packet-lte-rrc-template.c b/asn1/lte-rrc/packet-lte-rrc-template.c index 65863aa458..6a2fc86447 100644 --- a/asn1/lte-rrc/packet-lte-rrc-template.c +++ b/asn1/lte-rrc/packet-lte-rrc-template.c @@ -39,6 +39,8 @@ #include "packet-rrc.h" #include "packet-gsm_a_common.h" #include "packet-lpp.h" +#include "packet-gsm_map.h" +#include "packet-cell_broadcast.h" #define PNAME "LTE Radio Resource Control (RRC) protocol" #define PSNAME "LTE RRC" @@ -52,6 +54,8 @@ static dissector_handle_t gsm_rlcmac_dl_handle = NULL; static guint32 lte_rrc_rat_type_value = -1; static guint32 lte_rrc_ho_target_rat_type_value = -1; static gint lte_rrc_si_or_psi_geran_val = -1; +static guint8 lte_rrc_etws_dataCodingScheme = SMS_ENCODING_NOT_SET; +static guint8 lte_rrc_cmas_dataCodingScheme = SMS_ENCODING_NOT_SET; /* Include constants */ #include "packet-lte-rrc-val.h" @@ -157,6 +161,21 @@ static int hf_lte_rrc_eutra_cap_feat_group_ind_129 = -1; static int hf_lte_rrc_eutra_cap_feat_group_ind_130 = -1; static int hf_lte_rrc_eutra_cap_feat_group_ind_131 = -1; static int hf_lte_rrc_eutra_cap_feat_group_ind_132 = -1; +static int hf_lte_rrc_serialNumber_gs = -1; +static int hf_lte_rrc_serialNumber_msg_code = -1; +static int hf_lte_rrc_serialNumber_upd_nb = -1; +static int hf_lte_rrc_warningType_value = -1; +static int hf_lte_rrc_warningType_emergency_user_alert = -1; +static int hf_lte_rrc_warningType_popup = -1; +static int hf_lte_rrc_warningSecurityInfo_yr = -1; +static int hf_lte_rrc_warningSecurityInfo_mo = -1; +static int hf_lte_rrc_warningSecurityInfo_day = -1; +static int hf_lte_rrc_warningSecurityInfo_hr = -1; +static int hf_lte_rrc_warningSecurityInfo_min = -1; +static int hf_lte_rrc_warningSecurityInfo_sec = -1; +static int hf_lte_rrc_warningSecurityInfo_tz = -1; +static int hf_lte_rrc_warningSecurityInfo_digital_signature = -1; +static int hf_lte_rrc_warningMessageSegment_decoded = -1; /* Initialize the subtree pointers */ static int ett_lte_rrc = -1; @@ -166,14 +185,17 @@ static int ett_lte_rrc = -1; static gint ett_lte_rrc_featureGroupIndicators = -1; static gint ett_lte_rrc_featureGroupIndRel9Add = -1; static gint ett_lte_rrc_featureGroupIndRel10 = -1; -static gint ett_lte_rrc_neighCellConfig = -1; static gint ett_lte_rrc_absTimeInfo = -1; static gint ett_lte_rrc_nas_SecurityParam = -1; static gint ett_lte_rrc_targetRAT_MessageContainer = -1; static gint ett_lte_rrc_siPsiSibContainer = -1; static gint ett_lte_rrc_dedicatedInfoNAS = -1; -static gint ett_lte_rrc_daylightSavingTime = -1; static gint ett_lte_rrc_timeInfo = -1; +static gint ett_lte_rrc_serialNumber = -1; +static gint ett_lte_rrc_warningType = -1; +static gint ett_lte_rrc_warningSecurityInfo = -1; +static gint ett_lte_rrc_dataCodingScheme = -1; +static gint ett_lte_rrc_warningMessageSegment = -1; /* Forward declarations */ static int dissect_DL_DCCH_Message_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_); @@ -1697,6 +1719,62 @@ static const value_string lte_rrc_neighCellConfig_vals[] = { { 0, NULL}, }; +static const value_string lte_rrc_messageIdentifier_vals[] = { + { 0x1100, "ETWS Identifier for earthquake warning message"}, + { 0x1101, "ETWS Identifier for tsunami warning message"}, + { 0x1102, "ETWS Identifier for earthquake and tsunami combined warning message"}, + { 0x1103, "ETWS Identifier for test message"}, + { 0x1104, "ETWS Identifier for messages related to other emergency types"}, + { 0x1105, "ETWS Identifier for future extension"}, + { 0x1106, "ETWS Identifier for future extension"}, + { 0x1107, "ETWS Identifier for future extension"}, + { 0x1112, "CMAS Identifier for CMAS Presidential Level Alerts"}, + { 0x1113, "CMAS Identifier for CMAS Extreme Alerts with Severity of Extreme, Urgency of Immediate, and Certainty of Observed"}, + { 0x1114, "CMAS Identifier for CMAS Extreme Alerts with Severity of Extreme, Urgency of Immediate, and Certainty of Likely"}, + { 0x1115, "CMAS Identifier for CMAS Severe Alerts with Severity of Extreme, Urgency of Expected, and Certainty of Observed"}, + { 0x1116, "CMAS Identifier for CMAS Severe Alerts with Severity of Extreme, Urgency of Expected, and Certainty of Likely"}, + { 0x1117, "CMAS Identifier for CMAS Severe Alerts with Severity of Severe, Urgency of Immediate, and Certainty of Observed"}, + { 0x1118, "CMAS Identifier for CMAS Severe Alerts with Severity of Severe, Urgency of Immediate, and Certainty of Likely"}, + { 0x1119, "CMAS Identifier for CMAS Severe Alerts with Severity of Severe, Urgency of Expected, and Certainty of Observed"}, + { 0x111a, "CMAS Identifier for CMAS Severe Alerts with Severity of Severe, Urgency of Expected, and Certainty of Likely"}, + { 0x111b, "CMAS Identifier for Child Abduction Emergency (or Amber Alert)"}, + { 0x111c, "CMAS Identifier for the Required Monthly Test"}, + { 0x111d, "CMAS Identifier for CMAS Exercise"}, + { 0x111e, "CMAS Identifier for operator defined use"}, + { 0x111f, "CMAS Identifier for CMAS Presidential Level Alerts for additional languages"}, + { 0x1120, "CMAS Identifier for CMAS Extreme Alerts with Severity of Extreme, Urgency of Immediate, and Certainty of Observed for additional languages"}, + { 0x1121, "CMAS Identifier for CMAS Extreme Alerts with Severity of Extreme, Urgency of Immediate, and Certainty of Likely for additional languages"}, + { 0x1122, "CMAS Identifier for CMAS Severe Alerts with Severity of Extreme, Urgency of Expected, and Certainty of Observed for additional languages"}, + { 0x1123, "CMAS Identifier for CMAS Severe Alerts with Severity of Extreme, Urgency of Expected, and Certainty of Likely for additional languages"}, + { 0x1124, "CMAS Identifier for CMAS Severe Alerts with Severity of Severe, Urgency of Immediate, and Certainty of Observed for additional languages"}, + { 0x1125, "CMAS Identifier for CMAS Severe Alerts with Severity of Severe, Urgency of Immediate, and Certainty of Likely for additional languages"}, + { 0x1126, "CMAS Identifier for CMAS Severe Alerts with Severity of Severe, Urgency of Expected, and Certainty of Observed for additional languages"}, + { 0x1127, "CMAS Identifier for CMAS Severe Alerts with Severity of Severe, Urgency of Expected, and Certainty of Likely for additional languages"}, + { 0x1128, "CMAS Identifier for Child Abduction Emergency (or Amber Alert) for additional languages"}, + { 0x1129, "CMAS Identifier for the Required Monthly Test for additional languages"}, + { 0x112a, "CMAS Identifier for CMAS Exercise for additional languages"}, + { 0x112b, "CMAS Identifier for operator defined use for additional languages"}, + { 0, NULL}, +}; +static value_string_ext lte_rrc_messageIdentifier_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_messageIdentifier_vals); + +static const value_string lte_rrc_serialNumber_gs_vals[] = { + { 0, "Display mode immediate, cell wide"}, + { 1, "Display mode normal, PLMN wide"}, + { 2, "Display mode normal, tracking area wide"}, + { 3, "Display mode normal, cell wide"}, + { 0, NULL}, +}; + +static const value_string lte_rrc_warningType_vals[] = { + { 0, "Earthquake"}, + { 1, "Tsunami"}, + { 2, "Earthquake and Tsunami"}, + { 3, "Test"}, + { 4, "Other"}, + { 0, NULL}, +}; + static void lte_rrc_localTimeOffset_fmt(gchar *s, guint32 v) { @@ -2230,6 +2308,66 @@ void proto_register_lte_rrc(void) { { "Indicator 132", "lte-rrc.eutra_cap_feat_group_ind_132", FT_BOOLEAN, BASE_NONE, TFS(<e_rrc_eutra_cap_feat_group_ind_132_val), 0, "EUTRA Feature Group Indicator 132", HFILL }}, + { &hf_lte_rrc_serialNumber_gs, + { "Geographical Scope", "lte-rrc.serialNumber.gs", + FT_UINT16, BASE_DEC, VALS(lte_rrc_serialNumber_gs_vals), 0xc000, + NULL, HFILL }}, + { &hf_lte_rrc_serialNumber_msg_code, + { "Message Code", "lte-rrc.serialNumber.msg_code", + FT_UINT16, BASE_DEC, NULL, 0x3ff0, + NULL, HFILL }}, + { &hf_lte_rrc_serialNumber_upd_nb, + { "Update Number", "lte-rrc.serialNumber.upd_nb", + FT_UINT16, BASE_DEC, NULL, 0x000f, + NULL, HFILL }}, + { &hf_lte_rrc_warningType_value, + { "Warning Type Value", "lte-rrc.warningType.value", + FT_UINT16, BASE_DEC, VALS(lte_rrc_warningType_vals), 0xfe00, + NULL, HFILL }}, + { &hf_lte_rrc_warningType_emergency_user_alert, + { "Emergency User Alert", "lte-rrc.warningType.emergency_user_alert", + FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0100, + NULL, HFILL }}, + { &hf_lte_rrc_warningType_popup, + { "Popup", "lte-rrc.warningType.popup", + FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0080, + NULL, HFILL }}, + { &hf_lte_rrc_warningSecurityInfo_yr, + { "Year", "lte-rrc.warningSecurityInfo.yr", + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, + { &hf_lte_rrc_warningSecurityInfo_mo, + { "Month", "lte-rrc.warningSecurityInfo.mo", + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, + { &hf_lte_rrc_warningSecurityInfo_day, + { "Day", "lte-rrc.warningSecurityInfo.day", + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, + { &hf_lte_rrc_warningSecurityInfo_hr, + { "Hours", "lte-rrc.warningSecurityInfo.hr", + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, + { &hf_lte_rrc_warningSecurityInfo_min, + { "Minutes", "lte-rrc.warningSecurityInfo.min", + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, + { &hf_lte_rrc_warningSecurityInfo_sec, + { "Seconds", "lte-rrc.warningSecurityInfo.sec", + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, + { &hf_lte_rrc_warningSecurityInfo_tz, + { "Time Zone", "lte-rrc.warningSecurityInfo.tz", + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, + { &hf_lte_rrc_warningSecurityInfo_digital_signature, + { "Digital Signature", "lte-rrc.warningSecurityInfo.digital_signature", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lte_rrc_warningMessageSegment_decoded, + { "Decoded Segment", "lte-rrc.warningMessageSegment.decoded", + FT_STRING, BASE_NONE, NULL, 0, + NULL, HFILL }}, }; /* List of subtrees */ @@ -2240,14 +2378,17 @@ void proto_register_lte_rrc(void) { &ett_lte_rrc_featureGroupIndicators, &ett_lte_rrc_featureGroupIndRel9Add, &ett_lte_rrc_featureGroupIndRel10, - &ett_lte_rrc_neighCellConfig, &ett_lte_rrc_absTimeInfo, &ett_lte_rrc_nas_SecurityParam, &ett_lte_rrc_targetRAT_MessageContainer, &ett_lte_rrc_siPsiSibContainer, &ett_lte_rrc_dedicatedInfoNAS, - &ett_lte_rrc_daylightSavingTime, - &ett_lte_rrc_timeInfo + &ett_lte_rrc_timeInfo, + &ett_lte_rrc_serialNumber, + &ett_lte_rrc_warningType, + &ett_lte_rrc_warningSecurityInfo, + &ett_lte_rrc_dataCodingScheme, + &ett_lte_rrc_warningMessageSegment }; -- cgit v1.2.3