aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeff Morriss <jeff.morriss.ws@gmail.com>2013-06-14 02:44:15 +0000
committerJeff Morriss <jeff.morriss.ws@gmail.com>2013-06-14 02:44:15 +0000
commite9a5b16a09484d0b3ba5401ef23402c022b82de6 (patch)
treef01220d062f22cceb0b5973ffe0a588183118979
parentfa5b45834b3199bc3c47b3d328d54e0504d7b942 (diff)
From Katrina Zhang via Anders (manually applied by me): dissect node features.
From me: remove some tabs and trailing white space. svn path=/trunk/; revision=49922
-rw-r--r--epan/dissectors/packet-gtpv2.c70
1 files changed, 45 insertions, 25 deletions
diff --git a/epan/dissectors/packet-gtpv2.c b/epan/dissectors/packet-gtpv2.c
index 636a164c61..a501488b35 100644
--- a/epan/dissectors/packet-gtpv2.c
+++ b/epan/dissectors/packet-gtpv2.c
@@ -382,6 +382,9 @@ static int hf_gtpv2_change_report_flags_tzcr = -1;
static int hf_gtpv2_action_indication_val = -1;
static int hf_gtpv2_mbms_session_duration_days = -1;
static int hf_gtpv2_mbms_session_duration_secs = -1;
+static int hf_gtpv2_node_features_prn = -1;
+static int hf_gtpv2_node_features_mabr =-1;
+static int hf_gtpv2_node_features_ntsr = -1;
static int hf_gtpv2_time_to_data_xfer = -1;
static int hf_gtpv2_arp_pvi = -1;
static int hf_gtpv2_arp_pl = -1;
@@ -692,7 +695,7 @@ static value_string_ext gtpv2_message_type_vals_ext = VALUE_STRING_EXT_INIT(gtpv
#define GTPV2_IE_MDT_CONFIG 162
#define GTPV2_IE_APCO 163
#define GTPV2_IE_ABS_MBMS_DATA_TF_TIME 164
-#define GTPV2_IE_HENB_INFO_REPORT 165
+#define GTPV2_IE_HENB_INFO_REPORT 165
#define GTPV2_IE_IP4CP 166
#define GTPV2_IE_CHANGE_TO_REPORT_FLAGS 167
#define GTPV2_IE_ACTION_INDICATION 168
@@ -3550,31 +3553,31 @@ dissect_gtpv2_mm_context_utms_qq(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tr
/* Dissect octet j to r */
offset = dissect_gtpv2_mm_context_common_data(tvb, pinfo, tree, offset, samb_ri, uamb_ri);
- if (offset >= (guint32)length) {
- return;
- }
+ if (offset >= (guint32)length) {
+ return;
+ }
/* r+1 Spare HNNA ENA INA GANA GENA UNA */
offset = dissect_gtpv2_access_restriction_data(tvb, tree, offset);
- if (offset >= (guint32)length) {
- return;
- }
+ if (offset >= (guint32)length) {
+ return;
+ }
- /* The Voice Domain Preference and UE's Usage Setting coding is specified in clause 10.5.5.28 of 3GPP TS 24.008 [5]. If
+ /* The Voice Domain Preference and UE's Usage Setting coding is specified in clause 10.5.5.28 of 3GPP TS 24.008 [5]. If
* Length of Voice Domain Preference and UE's Usage Setting is zero, then the Voice Domain Preference and UE's Usage
* Setting parameter shall not be present.
*/
- vdp_length = tvb_get_guint8(tvb, offset);
- proto_tree_add_item(tree, hf_gtpv2_vdp_length, tvb, offset, 1, ENC_BIG_ENDIAN);
- offset++;
+ vdp_length = tvb_get_guint8(tvb, offset);
+ proto_tree_add_item(tree, hf_gtpv2_vdp_length, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
- if(vdp_length !=0){
- offset += de_gmm_voice_domain_pref(tvb, tree, pinfo, offset, vdp_length, NULL, 0);
- }
+ if(vdp_length !=0){
+ offset += de_gmm_voice_domain_pref(tvb, tree, pinfo, offset, vdp_length, NULL, 0);
+ }
- if (offset < (guint32)length) {
- proto_tree_add_text(tree, tvb, offset, -1, "The rest of the IE not dissected yet");
- }
+ if (offset < (guint32)length) {
+ proto_tree_add_text(tree, tvb, offset, -1, "The rest of the IE not dissected yet");
+ }
}
@@ -4751,11 +4754,13 @@ dissect_gtpv2_ldn(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto
static void
dissect_gtpv2_node_features(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto_item *item _U_, guint16 length _U_, guint8 message_type _U_, guint8 instance _U_)
{
- proto_item *expert_item;
-
- expert_item = proto_tree_add_text(tree, tvb, 0, length, "IE data not dissected yet");
- expert_add_info(pinfo, expert_item, &ei_gtpv2_ie_data_not_dissected);
- PROTO_ITEM_SET_GENERATED(expert_item);
+ int offset = 0;
+ proto_tree_add_item(tree, hf_gtpv2_node_features_prn, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_gtpv2_node_features_mabr, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_gtpv2_node_features_ntsr, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset+=1;
+ if (length > 1)
+ proto_tree_add_text(tree, tvb, offset, length-1, "Spare: %s", tvb_bytes_to_str(tvb, offset, length-1));
}
/* 8.84
@@ -5014,7 +5019,7 @@ dissect_gtpv2_ip4cp(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, pro
}
/* 8.98 Change to Report Flags */
-static void
+static void
dissect_gtpv2_change_report_flags(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto_item *item _U_, guint16 length _U_, guint8 message_type _U_, guint8 instance _U_)
{
int offset = 0;
@@ -5050,7 +5055,7 @@ dissect_gtpv2_action_indication(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tre
offset += 1;
if (length > 1)
- proto_tree_add_text(tree, tvb, offset, length-1, "Spare: %s", tvb_bytes_to_str(tvb, offset, length-1));
+ proto_tree_add_text(tree, tvb, offset, length-1, "Spare: %s", tvb_bytes_to_str(tvb, offset, length-1));
}
typedef struct _gtpv2_ie {
@@ -6474,7 +6479,7 @@ void proto_register_gtpv2(void)
NULL, HFILL}
},
- { &hf_gtpv2_mm_context_ue_net_cap_len,
+ { &hf_gtpv2_mm_context_ue_net_cap_len,
{"Length of UE Network Capability", "gtpv2.mm_context_ue_net_cap_len",
FT_UINT8, BASE_DEC, NULL, 0x0,
NULL, HFILL}
@@ -6885,6 +6890,21 @@ void proto_register_gtpv2(void)
FT_UINT24, BASE_DEC, NULL, 0xFFFF80,
NULL, HFILL}
},
+ { &hf_gtpv2_node_features_prn,
+ {"PGW Restart Notification (PRN)", "gtpv2.node_features_prn",
+ FT_BOOLEAN, 8, TFS(&tfs_disabled_enabled), 0x01,
+ NULL, HFILL}
+ },
+ { &hf_gtpv2_node_features_mabr,
+ {"Modify Access Bearers Request (MABR)", "gtpv2.node_features_mabr",
+ FT_BOOLEAN, 8, TFS(&tfs_disabled_enabled), 0x02,
+ NULL, HFILL}
+ },
+ { &hf_gtpv2_node_features_ntsr,
+ {"Network Triggered Service Restoration (NTSR)", "gtpv2.node_features_ntsr",
+ FT_BOOLEAN, 8, TFS(&tfs_disabled_enabled), 0x04,
+ NULL, HFILL}
+ },
{ &hf_gtpv2_time_to_data_xfer,
{"MBMS Time to Data Transfer", "gtpv2.time_to_data_xfer",
FT_STRING, BASE_NONE, NULL, 0,