aboutsummaryrefslogtreecommitdiffstats
path: root/asn1/rrc
diff options
context:
space:
mode:
authorVincent Helfre <vincent.helfre@gmx.net>2015-03-29 14:44:52 +0200
committerPascal Quantin <pascal.quantin@gmail.com>2015-03-29 15:36:44 +0000
commitf3d1e3c660c6dee6330ef7a99c11e074b38c18cb (patch)
treef761b64b1bb6b7af1b9e9dce36c34a5611bffce2 /asn1/rrc
parentbeb76282fc0c2a055ace99eecb4dc616889c3a47 (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.c28
-rw-r--r--asn1/rrc/rrc.cnf29
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