aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-gsm_a_gm.c
diff options
context:
space:
mode:
authorPascal Quantin <pascal.quantin@gmail.com>2016-07-04 22:41:29 +0200
committerMichael Mann <mmann78@netscape.net>2016-07-05 00:06:38 +0000
commitfdd87a1e41db7039b0af5bb15f40b83db1ca3a96 (patch)
tree19399810a2f169f6ef068233049252ee81ae5e41 /epan/dissectors/packet-gsm_a_gm.c
parent308a538addd816431732d6f0ac35f7d2bdc76712 (diff)
Network-Based IP Flow Mobility (NBIFOM) dissector
Based on 3GPP 24.161 V13.1.0 Change-Id: I7bf635c862bf7e0b73fd05bc8a55c900d1f4dd87 Reviewed-on: https://code.wireshark.org/review/16291 Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com> Petri-Dish: Pascal Quantin <pascal.quantin@gmail.com> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'epan/dissectors/packet-gsm_a_gm.c')
-rw-r--r--epan/dissectors/packet-gsm_a_gm.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/epan/dissectors/packet-gsm_a_gm.c b/epan/dissectors/packet-gsm_a_gm.c
index 2b3420748a..95f65ae5b9 100644
--- a/epan/dissectors/packet-gsm_a_gm.c
+++ b/epan/dissectors/packet-gsm_a_gm.c
@@ -547,6 +547,7 @@ static expert_field ei_gsm_a_gm_undecoded = EI_INIT;
static dissector_handle_t rrc_irat_ho_info_handle;
static dissector_handle_t lte_rrc_ue_eutra_cap_handle;
+static dissector_handle_t nbifom_handle;
static dissector_table_t gprs_sm_pco_subdissector_table; /* GPRS SM PCO PPP Protocols */
@@ -4248,7 +4249,7 @@ static const value_string gsm_a_gm_sel_bearer_ctrl_mode_vals[] = {
static const value_string gsm_a_gm_nbifom_mode_vals[] = {
{ 0, "UE-initiated" },
- { 1, "network-initiated" },
+ { 1, "Network-initiated" },
{ 0, NULL }
};
@@ -5834,7 +5835,13 @@ de_sm_wlan_offload_accept(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U
static guint16
de_sm_nbifom_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
{
- proto_tree_add_item(tree, hf_gsm_a_sm_nbifom_cont, tvb, offset, len, ENC_NA);
+ if (nbifom_handle) {
+ tvbuff_t *nbifom_tvb = tvb_new_subset_length(tvb, offset, len);
+
+ call_dissector(nbifom_handle, nbifom_tvb, pinfo, tree);
+ } else {
+ proto_tree_add_item(tree, hf_gsm_a_sm_nbifom_cont, tvb, offset, len, ENC_NA);
+ }
return len;
}
@@ -7121,8 +7128,8 @@ dtap_sm_mod_pdp_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
curr_len = len;
pinfo->p2p_dir = P2P_DIR_UNKNOWN;
- /* Network or the MS */
- pinfo->link_dir = LINK_DIR_UNKNOWN;
+ /* Network or the MS; do not reset link_dir in case it was set by lower layers */
+ /* pinfo->link_dir = LINK_DIR_UNKNOWN; */
ELEM_MAND_V( GSM_A_PDU_TYPE_GM, DE_SM_CAUSE, NULL);
@@ -8868,6 +8875,7 @@ proto_reg_handoff_gsm_a_gm(void)
{
rrc_irat_ho_info_handle = find_dissector_add_dependency("rrc.irat.irat_ho_info", proto_a_gm);
lte_rrc_ue_eutra_cap_handle = find_dissector_add_dependency("lte-rrc.ue_eutra_cap", proto_a_gm);
+ nbifom_handle = find_dissector_add_dependency("nbifom", proto_a_gm);
}
/*