diff options
author | Vincent Helfre <vincent.helfre@gmx.net> | 2015-03-29 14:44:52 +0200 |
---|---|---|
committer | Pascal Quantin <pascal.quantin@gmail.com> | 2015-03-29 15:36:44 +0000 |
commit | f3d1e3c660c6dee6330ef7a99c11e074b38c18cb (patch) | |
tree | f761b64b1bb6b7af1b9e9dce36c34a5611bffce2 /asn1/rrc | |
parent | beb76282fc0c2a055ace99eecb4dc616889c3a47 (diff) |
RRC: add dissection of ims-Information IE
Bug: 11096
Change-Id: I348726dcd3b62f75db67e63c07bcdc79e86657a7
Reviewed-on: https://code.wireshark.org/review/7842
Petri-Dish: Pascal Quantin <pascal.quantin@gmail.com>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com>
Diffstat (limited to 'asn1/rrc')
-rw-r--r-- | asn1/rrc/packet-rrc-template.c | 28 | ||||
-rw-r--r-- | asn1/rrc/rrc.cnf | 29 |
2 files changed, 57 insertions, 0 deletions
diff --git a/asn1/rrc/packet-rrc-template.c b/asn1/rrc/packet-rrc-template.c index 3e235b2ef2..10644788f4 100644 --- a/asn1/rrc/packet-rrc-template.c +++ b/asn1/rrc/packet-rrc-template.c @@ -105,6 +105,7 @@ static int ett_rrc = -1; static gint ett_rrc_eutraFeatureGroupIndicators = -1; static gint ett_rrc_cn_CommonGSM_MAP_NAS_SysInfo = -1; +static gint ett_rrc_ims_info = -1; static expert_field ei_rrc_no_hrnti = EI_INIT; @@ -115,6 +116,10 @@ static int hf_rrc_eutra_feat_group_ind_1 = -1; static int hf_rrc_eutra_feat_group_ind_2 = -1; static int hf_rrc_eutra_feat_group_ind_3 = -1; static int hf_rrc_eutra_feat_group_ind_4 = -1; +static int hf_rrc_ims_info_atgw_trans_det_cont_type = -1; +static int hf_rrc_ims_info_atgw_udp_port = -1; +static int hf_rrc_ims_info_atgw_ipv4 = -1; +static int hf_rrc_ims_info_atgw_ipv6 = -1; static const true_false_string rrc_eutra_feat_group_ind_1_val = { "UTRA CELL_PCH to EUTRA RRC_IDLE cell reselection - Supported", @@ -132,6 +137,12 @@ static const true_false_string rrc_eutra_feat_group_ind_4_val = { "UTRA CELL_FACH absolute priority cell reselection for all layers - Supported", "UTRA CELL_FACH absolute priority cell reselection for all layers - Not supported" }; +static const value_string rrc_ims_info_atgw_trans_det_cont_type[] = { + {0, "ATGW-IPv4-address-and-port"}, + {1, "ATGW-IPv6-address-and-port"}, + {2, "ATGW-not-available"}, + {0, NULL} +}; static int flowd,type; static int cipher_start_val[2] _U_; @@ -278,6 +289,22 @@ void proto_register_rrc(void) { { "Indicator 4", "rrc.eutra_feat_group_ind_4", FT_BOOLEAN, BASE_NONE, TFS(&rrc_eutra_feat_group_ind_4_val), 0, "EUTRA Feature Group Indicator 4", HFILL }}, + { &hf_rrc_ims_info_atgw_trans_det_cont_type, + { "ATGW transfer details content type", "rrc.rsrvcc_info.ims_info_atgw_trans_det_cont", + FT_UINT8, BASE_DEC, VALS(rrc_ims_info_atgw_trans_det_cont_type), 0x3, + "rSR-VCC IMS information ATGW transfer details content type", HFILL }}, + {&hf_rrc_ims_info_atgw_udp_port, + {"ATGW UDP port","rrc.rsrvcc_info.ims_info_atgw_udp_port", + FT_UINT16,BASE_DEC, NULL, 0x0, + "rSR-VCC IMS information ATGW UDP port", HFILL }}, + { &hf_rrc_ims_info_atgw_ipv4, + {"ATGW IPv4", "rrc.rsrvcc_info.ims_info_atgw_ipv4", + FT_IPv4, BASE_NONE, NULL, 0x0, + "rSR-VCC IMS information ATGW IPv4", HFILL}}, + { &hf_rrc_ims_info_atgw_ipv6, + {"ATGW IPv6", "rrc.rsrvcc_info.ims_info_atgw_ipv6", + FT_IPv6, BASE_NONE, NULL, 0x0, + "rSR-VCC IMS information ATGW IPv6", HFILL}}, }; /* List of subtrees */ @@ -286,6 +313,7 @@ void proto_register_rrc(void) { #include "packet-rrc-ettarr.c" &ett_rrc_eutraFeatureGroupIndicators, &ett_rrc_cn_CommonGSM_MAP_NAS_SysInfo, + &ett_rrc_ims_info, }; static ei_register_info ei[] = { diff --git a/asn1/rrc/rrc.cnf b/asn1/rrc/rrc.cnf index c806644647..3a82e73061 100644 --- a/asn1/rrc/rrc.cnf +++ b/asn1/rrc/rrc.cnf @@ -643,6 +643,35 @@ fp_info *fpinf ; curr_bit_offset++; } +#.FN_BODY RSR-VCC-Info/ims-Information VAL_PTR = &imsInformation_tvb + tvbuff_t *imsInformation_tvb=NULL; +%(DEFAULT_BODY)s + if(imsInformation_tvb){ + /* Dissect ims-Information + Decoding specified in TS 124 237 V11.4.0 Annex D.5.3.3 ATGW transfer details + */ + proto_tree *subtree; + gint curr_offset = 0; + guint32 atgw_trans_det_cont; + subtree = proto_item_add_subtree(actx->created_item, ett_rrc_ims_info); + proto_tree_add_item_ret_uint(subtree, hf_rrc_ims_info_atgw_trans_det_cont_type, imsInformation_tvb, curr_offset, 1, ENC_BIG_ENDIAN, &atgw_trans_det_cont); + curr_offset++; + switch (atgw_trans_det_cont) { + case 0: + proto_tree_add_item(subtree, hf_rrc_ims_info_atgw_udp_port, imsInformation_tvb, curr_offset, 2, ENC_BIG_ENDIAN); + curr_offset+=2; + proto_tree_add_item(subtree, hf_rrc_ims_info_atgw_ipv4, imsInformation_tvb, curr_offset, 4, ENC_BIG_ENDIAN); + break; + case 1: + proto_tree_add_item(subtree, hf_rrc_ims_info_atgw_udp_port, imsInformation_tvb, curr_offset, 2, ENC_BIG_ENDIAN); + curr_offset+=2; + proto_tree_add_item(subtree, hf_rrc_ims_info_atgw_ipv6, imsInformation_tvb, curr_offset, 16, ENC_NA); + break; + default: + break; + } +} + #.TYPE_ATTR HNBName TYPE=FT_STRING DISPLAY=STR_UNICODE |