aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-mip6.c
diff options
context:
space:
mode:
Diffstat (limited to 'epan/dissectors/packet-mip6.c')
-rw-r--r--epan/dissectors/packet-mip6.c796
1 files changed, 402 insertions, 394 deletions
diff --git a/epan/dissectors/packet-mip6.c b/epan/dissectors/packet-mip6.c
index e458f8cd2f..d039445de8 100644
--- a/epan/dissectors/packet-mip6.c
+++ b/epan/dissectors/packet-mip6.c
@@ -459,7 +459,7 @@ static const value_string mip6_auth_subtype_value[] = {
/* mobile network prefix flag description */
static const true_false_string mip6_ipv4ha_p_flag_value = {
- "mobile network prefixt requested",
+ "mobile network prefix requested",
"mobile network prefix not requested"
};
@@ -571,17 +571,17 @@ static const value_string pmip6_ipv4aa_status_values[] = {
/* PMIP6 BRI R. Trigger values */
static const value_string pmip6_bri_rtrigger[] = {
- { 0x00, "Unspecified"},
- { 0x01, "Administrative Reason"},
- { 0x02, "Inter-MAG Handover - same Access Type"},
- { 0x03, "Inter-MAG Handover - different Access Type"},
- { 0x04, "Inter-MAG Handover - Unknown"},
- { 0x05, "User Initiated Session(s) Termination"},
- { 0x06, "Access Network Session(s) Termination"},
- { 0x07, "Possible Out-of Sync BCE State"},
+ { 0, "Unspecified"},
+ { 1, "Administrative Reason"},
+ { 2, "Inter-MAG Handover - same Access Type"},
+ { 3, "Inter-MAG Handover - different Access Type"},
+ { 4, "Inter-MAG Handover - Unknown"},
+ { 5, "User Initiated Session(s) Termination"},
+ { 6, "Access Network Session(s) Termination"},
+ { 7, "Possible Out-of Sync BCE State"},
/* 8-127 Unassigned */
- { 0x128, "Per-Peer Policy"},
- { 0x129, "Revoking Mobility Node Local Policy"},
+ { 128, "Per-Peer Policy"},
+ { 129, "Revoking Mobility Node Local Policy"},
/* 130-249 Unassigned */
/* 250-255 Reserved for Testing Purposes Only */
{ 0, NULL},
@@ -918,377 +918,377 @@ static const true_false_string mip6_dmnp_v_flag_value = {
static dissector_table_t ip_dissector_table;
/* Initialize the protocol and registered header fields */
-static int proto_mip6 = -1;
-static int proto_nemo = -1;
-static int proto_mip6_option_pad1 = -1;
-static int proto_mip6_option_padn = -1;
-static int proto_mip6_option_bra = -1;
-static int proto_mip6_option_acoa = -1;
-static int proto_mip6_option_ni = -1;
-static int proto_mip6_option_bad_auth = -1;
-static int proto_mip6_option_mnp = -1;
-static int proto_mip6_option_mhlla = -1;
-static int proto_mip6_option_mnid = -1;
-static int proto_mip6_option_auth = -1;
-static int proto_mip6_option_mseg_id = -1;
-static int proto_mip6_option_cgapr = -1;
-static int proto_mip6_option_cgar = -1;
-static int proto_mip6_option_sign = -1;
-static int proto_mip6_option_phkt = -1;
-static int proto_mip6_option_coti = -1;
-static int proto_mip6_option_cot = -1;
-static int proto_mip6_option_dnsu = -1;
-static int proto_mip6_option_em = -1;
-static int proto_mip6_option_vsm = -1;
-static int proto_mip6_option_ssm = -1;
-static int proto_mip6_option_badff = -1;
-static int proto_mip6_option_hnp = -1;
-static int proto_mip6_option_hi = -1;
-static int proto_mip6_option_att = -1;
-static int proto_mip6_option_mnlli = -1;
-static int proto_mip6_option_lla = -1;
-static int proto_mip6_option_ts = -1;
-static int proto_mip6_option_rc = -1;
-static int proto_mip6_option_ipv4ha = -1;
-static int proto_mip6_option_ipv4aa = -1;
-static int proto_mip6_option_natd = -1;
-static int proto_mip6_option_ipv4coa = -1;
-static int proto_mip6_option_grek = -1;
-static int proto_mip6_option_mhipv6ap = -1;
-static int proto_mip6_option_bi = -1;
-static int proto_mip6_option_ipv4hareq = -1;
-static int proto_mip6_option_ipv4harep = -1;
-static int proto_mip6_option_ipv4dra = -1;
-static int proto_mip6_option_ipv4dsm = -1;
-static int proto_mip6_option_cr = -1;
-static int proto_mip6_option_lmaa = -1;
-static int proto_mip6_option_recap = -1;
-static int proto_mip6_option_redir = -1;
-static int proto_mip6_option_load_inf = -1;
-static int proto_mip6_option_alt_ip4 = -1;
-static int proto_mip6_option_mng = -1;
-static int proto_mip6_option_mag_ipv6 = -1;
-static int proto_mip6_option_acc_net_id = -1;
-static int proto_mip6_option_dmnp = -1;
-
-static int hf_mip6_proto = -1;
-static int hf_mip6_hlen = -1;
-static int hf_mip6_mhtype = -1;
-static int hf_mip6_reserved = -1;
-static int hf_mip6_csum = -1;
-
-static int hf_mip6_hoti_cookie = -1;
-
-static int hf_mip6_coti_cookie = -1;
-
-static int hf_mip6_hot_nindex = -1;
-static int hf_mip6_hot_cookie = -1;
-static int hf_mip6_hot_token = -1;
-
-static int hf_mip6_cot_nindex = -1;
-static int hf_mip6_cot_cookie = -1;
-/* static int hf_mip6_cot_token = -1; */
-
-static int hf_mip6_bu_seqnr = -1;
-static int hf_mip6_bu_a_flag = -1;
-static int hf_mip6_bu_h_flag = -1;
-static int hf_mip6_bu_l_flag = -1;
-static int hf_mip6_bu_k_flag = -1;
-static int hf_mip6_bu_m_flag = -1;
-static int hf_mip6_nemo_bu_r_flag = -1;
-static int hf_pmip6_bu_p_flag = -1;
-static int hf_mip6_bu_f_flag = -1;
-static int hf_pmip6_bu_t_flag = -1;
-static int hf_pmip6_bu_b_flag = -1;
-static int hf_mip6_bu_lifetime = -1;
-
-static int hf_mip6_ba_status = -1;
-static int hf_mip6_ba_k_flag = -1;
-static int hf_mip6_nemo_ba_r_flag = -1;
-static int hf_pmip6_ba_p_flag = -1;
-static int hf_pmip6_ba_t_flag = -1;
-static int hf_pmip6_ba_b_flag = -1;
-static int hf_mip6_ba_seqnr = -1;
-static int hf_mip6_ba_lifetime = -1;
-
-static int hf_mip6_be_status = -1;
-static int hf_mip6_be_haddr = -1;
-
-static int hf_fmip6_fbu_seqnr = -1;
-static int hf_fmip6_fbu_a_flag = -1;
-static int hf_fmip6_fbu_h_flag = -1;
-static int hf_fmip6_fbu_l_flag = -1;
-static int hf_fmip6_fbu_k_flag = -1;
-static int hf_fmip6_fbu_lifetime = -1;
-
-static int hf_fmip6_fback_status = -1;
-static int hf_fmip6_fback_k_flag = -1;
-static int hf_fmip6_fback_seqnr = -1;
-static int hf_fmip6_fback_lifetime = -1;
-
-static int hf_mip6_has_num_addrs = -1;
-static int hf_mip6_has_reserved = -1;
-static int hf_mip6_has_address = -1;
-
-static int hf_mip6_hb_u_flag = -1;
-static int hf_mip6_hb_r_flag = -1;
-static int hf_mip6_hb_seqnr = -1;
-
-static int hf_mip6_hi_seqnr = -1;
-static int hf_mip6_hi_s_flag = -1;
-static int hf_mip6_hi_u_flag = -1;
-static int hf_mip6_hi_code = -1;
-
-static int hf_mip6_hack_seqnr = -1;
-static int hf_mip6_hack_code = -1;
-
-static int hf_mip6_opt_3gpp_reserved = -1;
-static int hf_mip6_opt_3gpp_flag_m = -1;
-static int hf_mip6_opt_3gpp_spec_pmipv6_err_code = -1;
-static int hf_mip6_opt_3gpp_pdn_gw_ipv4_addr = -1;
-static int hf_mip6_opt_3gpp_pdn_gw_ipv6_addr = -1;
-static int hf_mip6_opt_3gpp_dhcpv4_addr_all_proc_ind = -1;
-static int hf_mip6_opt_3gpp_pdn_type = -1;
-static int hf_mip6_opt_3gpp_pdn_ind_cause = -1;
-static int hf_mip6_opt_3gpp_chg_id = -1;
-static int hf_mip6_opt_3gpp_charging_characteristic = -1;
-static int hf_mip6_opt_3gpp_mei = -1;
-static int hf_mip6_opt_3gpp_msisdn = -1;
-static int hf_mip6_opt_3gpp_apn_rest = -1;
-static int hf_mip6_opt_3gpp_max_apn_rest = -1;
-static int hf_mip6_opt_3gpp_imsi = -1;
-static int hf_mip6_opt_3gpp_pdn_conn_id = -1;
-static int hf_hf_mip6_opt_3gpp_lapi = -1;
-
-static int hf_mip6_bra_interval = -1;
-
-static int hf_mip6_acoa_acoa = -1;
-static int hf_mip6_nemo_mnp_mnp = -1;
-static int hf_mip6_nemo_mnp_pfl = -1;
-
-static int hf_mip6_ni_hni = -1;
-static int hf_mip6_ni_cni = -1;
-
-static int hf_mip6_bad_auth = -1;
-
-static int hf_fmip6_lla = -1;
-static int hf_fmip6_lla_optcode = -1;
-
-static int hf_mip6_mnid_subtype = -1;
-static int hf_mip6_mnid_identifier = -1;
-static int hf_mip6_vsm_vid = -1;
-static int hf_mip6_vsm_subtype = -1;
-static int hf_mip6_vsm_subtype_3gpp = -1;
-
-static int hf_mip6_opt_ss_identifier = -1;
-
-static int hf_mip6_opt_badff_spi = -1;
-static int hf_mip6_opt_badff_auth = -1;
-
-static int hf_mip6_opt_auth_sub_type = -1;
-static int hf_mip6_opt_auth_mobility_spi = -1;
-static int hf_mip6_opt_auth_auth_data = -1;
-static int hf_mip6_opt_mseg_id_timestamp = -1;
-
-static int hf_mip6_opt_cgar_cga_par = -1;
-static int hf_mip6_opt_sign_sign = -1;
-static int hf_mip6_opt_phkt_phkt = -1;
-static int hf_mip6_opt_mocot_co_keygen_tok = -1;
-
-static int hf_mip6_opt_dnsu_status = -1;
-static int hf_mip6_opt_dnsu_flag_r = -1;
-static int hf_mip6_opt_dnsu_mn_id = -1;
-
-static int hf_mip6_opt_em_data = -1;
-
-static int hf_pmip6_hi_hi = -1;
-static int hf_pmip6_hi_reserved = -1;
-
-static int hf_pmip6_att_reserved = -1;
-static int hf_pmip6_att_att = -1;
-
-static int hf_mip6_opt_mnlli_reserved = -1;
-static int hf_mip6_opt_mnlli_lli = -1;
-
-static int hf_pmip6_timestamp = -1;
-static int hf_pmip6_rc = -1;
-static int hf_mip6_ipv4ha_preflen = -1;
-static int hf_mip6_ipv4ha_p_flag = -1;
-static int hf_mip6_ipv4ha_ha = -1;
-static int hf_mip6_ipv4ha_reserved = -1;
-static int hf_mip6_ipv4aa_status = -1;
-
-static int hf_mip6_opt_natd_f_flag = -1;
-static int hf_mip6_opt_natd_reserved = -1;
-static int hf_mip6_opt_natd_refresh_t = -1;
-
-static int hf_mip6_opt_ipv4coa_reserved = -1;
-static int hf_mip6_opt_ipv4coa_addr = -1;
-
-static int hf_pmip6_gre_key = -1;
-static int hf_mip6_opt_mhipv6ap_opt_code = -1;
-static int hf_mip6_opt_mhipv6ap_prefix_l = -1;
-static int hf_mip6_opt_mhipv6ap_ipv6_address = -1;
-static int hf_mip6_opt_mhipv6ap_ipv6_address_prefix = -1;
-static int hf_mip6_ipv4dra_reserved = -1;
-static int hf_mip6_ipv4dra_dra = -1;
-
-static int hf_mip6_ipv4dsm_reserved = -1;
-static int hf_mip6_ipv4dsm_s_flag = -1;
-static int hf_mip6_cr_reserved = -1;
-static int hf_mip6_cr_req_type = -1;
-static int hf_mip6_cr_req_length = -1;
-
-static int hf_mip6_lmaa_opt_code = -1;
-static int hf_mip6_lmaa_reserved = -1;
-static int hf_mip6_lmaa_ipv4 = -1;
-static int hf_mip6_lmaa_ipv6 = -1;
-
-static int hf_mip6_mobility_opt = -1;
-static int hf_mip6_opt_len = -1;
-
-static int hf_mip6_opt_bi_bid = -1;
-static int hf_mip6_opt_bi_status = -1;
-static int hf_mip6_bi_h_flag = -1;
-static int hf_mip6_bi_coa_ipv4 = -1;
-static int hf_mip6_bi_coa_ipv6 = -1;
-
-static int hf_mip6_binding_refresh_request = -1;
-static int hf_mip6_unknown_type_data = -1;
-static int hf_mip6_fast_neighbor_advertisement = -1;
-static int hf_mip6_vsm_data = -1;
-static int hf_mip6_vsm_req_data = -1;
-static int hf_mip6_opt_padn = -1;
+static int proto_mip6;
+static int proto_nemo;
+static int proto_mip6_option_pad1;
+static int proto_mip6_option_padn;
+static int proto_mip6_option_bra;
+static int proto_mip6_option_acoa;
+static int proto_mip6_option_ni;
+static int proto_mip6_option_bad_auth;
+static int proto_mip6_option_mnp;
+static int proto_mip6_option_mhlla;
+static int proto_mip6_option_mnid;
+static int proto_mip6_option_auth;
+static int proto_mip6_option_mseg_id;
+static int proto_mip6_option_cgapr;
+static int proto_mip6_option_cgar;
+static int proto_mip6_option_sign;
+static int proto_mip6_option_phkt;
+static int proto_mip6_option_coti;
+static int proto_mip6_option_cot;
+static int proto_mip6_option_dnsu;
+static int proto_mip6_option_em;
+static int proto_mip6_option_vsm;
+static int proto_mip6_option_ssm;
+static int proto_mip6_option_badff;
+static int proto_mip6_option_hnp;
+static int proto_mip6_option_hi;
+static int proto_mip6_option_att;
+static int proto_mip6_option_mnlli;
+static int proto_mip6_option_lla;
+static int proto_mip6_option_ts;
+static int proto_mip6_option_rc;
+static int proto_mip6_option_ipv4ha;
+static int proto_mip6_option_ipv4aa;
+static int proto_mip6_option_natd;
+static int proto_mip6_option_ipv4coa;
+static int proto_mip6_option_grek;
+static int proto_mip6_option_mhipv6ap;
+static int proto_mip6_option_bi;
+static int proto_mip6_option_ipv4hareq;
+static int proto_mip6_option_ipv4harep;
+static int proto_mip6_option_ipv4dra;
+static int proto_mip6_option_ipv4dsm;
+static int proto_mip6_option_cr;
+static int proto_mip6_option_lmaa;
+static int proto_mip6_option_recap;
+static int proto_mip6_option_redir;
+static int proto_mip6_option_load_inf;
+static int proto_mip6_option_alt_ip4;
+static int proto_mip6_option_mng;
+static int proto_mip6_option_mag_ipv6;
+static int proto_mip6_option_acc_net_id;
+static int proto_mip6_option_dmnp;
+
+static int hf_mip6_proto;
+static int hf_mip6_hlen;
+static int hf_mip6_mhtype;
+static int hf_mip6_reserved;
+static int hf_mip6_csum;
+
+static int hf_mip6_hoti_cookie;
+
+static int hf_mip6_coti_cookie;
+
+static int hf_mip6_hot_nindex;
+static int hf_mip6_hot_cookie;
+static int hf_mip6_hot_token;
+
+static int hf_mip6_cot_nindex;
+static int hf_mip6_cot_cookie;
+/* static int hf_mip6_cot_token; */
+
+static int hf_mip6_bu_seqnr;
+static int hf_mip6_bu_a_flag;
+static int hf_mip6_bu_h_flag;
+static int hf_mip6_bu_l_flag;
+static int hf_mip6_bu_k_flag;
+static int hf_mip6_bu_m_flag;
+static int hf_mip6_nemo_bu_r_flag;
+static int hf_pmip6_bu_p_flag;
+static int hf_mip6_bu_f_flag;
+static int hf_pmip6_bu_t_flag;
+static int hf_pmip6_bu_b_flag;
+static int hf_mip6_bu_lifetime;
+
+static int hf_mip6_ba_status;
+static int hf_mip6_ba_k_flag;
+static int hf_mip6_nemo_ba_r_flag;
+static int hf_pmip6_ba_p_flag;
+static int hf_pmip6_ba_t_flag;
+static int hf_pmip6_ba_b_flag;
+static int hf_mip6_ba_seqnr;
+static int hf_mip6_ba_lifetime;
+
+static int hf_mip6_be_status;
+static int hf_mip6_be_haddr;
+
+static int hf_fmip6_fbu_seqnr;
+static int hf_fmip6_fbu_a_flag;
+static int hf_fmip6_fbu_h_flag;
+static int hf_fmip6_fbu_l_flag;
+static int hf_fmip6_fbu_k_flag;
+static int hf_fmip6_fbu_lifetime;
+
+static int hf_fmip6_fback_status;
+static int hf_fmip6_fback_k_flag;
+static int hf_fmip6_fback_seqnr;
+static int hf_fmip6_fback_lifetime;
+
+static int hf_mip6_has_num_addrs;
+static int hf_mip6_has_reserved;
+static int hf_mip6_has_address;
+
+static int hf_mip6_hb_u_flag;
+static int hf_mip6_hb_r_flag;
+static int hf_mip6_hb_seqnr;
+
+static int hf_mip6_hi_seqnr;
+static int hf_mip6_hi_s_flag;
+static int hf_mip6_hi_u_flag;
+static int hf_mip6_hi_code;
+
+static int hf_mip6_hack_seqnr;
+static int hf_mip6_hack_code;
+
+static int hf_mip6_opt_3gpp_reserved;
+static int hf_mip6_opt_3gpp_flag_m;
+static int hf_mip6_opt_3gpp_spec_pmipv6_err_code;
+static int hf_mip6_opt_3gpp_pdn_gw_ipv4_addr;
+static int hf_mip6_opt_3gpp_pdn_gw_ipv6_addr;
+static int hf_mip6_opt_3gpp_dhcpv4_addr_all_proc_ind;
+static int hf_mip6_opt_3gpp_pdn_type;
+static int hf_mip6_opt_3gpp_pdn_ind_cause;
+static int hf_mip6_opt_3gpp_chg_id;
+static int hf_mip6_opt_3gpp_charging_characteristic;
+static int hf_mip6_opt_3gpp_mei;
+static int hf_mip6_opt_3gpp_msisdn;
+static int hf_mip6_opt_3gpp_apn_rest;
+static int hf_mip6_opt_3gpp_max_apn_rest;
+static int hf_mip6_opt_3gpp_imsi;
+static int hf_mip6_opt_3gpp_pdn_conn_id;
+static int hf_mip6_opt_3gpp_lapi;
+
+static int hf_mip6_bra_interval;
+
+static int hf_mip6_acoa_acoa;
+static int hf_mip6_nemo_mnp_mnp;
+static int hf_mip6_nemo_mnp_pfl;
+
+static int hf_mip6_ni_hni;
+static int hf_mip6_ni_cni;
+
+static int hf_mip6_bad_auth;
+
+static int hf_fmip6_lla;
+static int hf_fmip6_lla_optcode;
+
+static int hf_mip6_mnid_subtype;
+static int hf_mip6_mnid_identifier;
+static int hf_mip6_vsm_vid;
+static int hf_mip6_vsm_subtype;
+static int hf_mip6_vsm_subtype_3gpp;
+
+static int hf_mip6_opt_ss_identifier;
+
+static int hf_mip6_opt_badff_spi;
+static int hf_mip6_opt_badff_auth;
+
+static int hf_mip6_opt_auth_sub_type;
+static int hf_mip6_opt_auth_mobility_spi;
+static int hf_mip6_opt_auth_auth_data;
+static int hf_mip6_opt_mseg_id_timestamp;
+
+static int hf_mip6_opt_cgar_cga_par;
+static int hf_mip6_opt_sign_sign;
+static int hf_mip6_opt_phkt_phkt;
+static int hf_mip6_opt_mocot_co_keygen_tok;
+
+static int hf_mip6_opt_dnsu_status;
+static int hf_mip6_opt_dnsu_flag_r;
+static int hf_mip6_opt_dnsu_mn_id;
+
+static int hf_mip6_opt_em_data;
+
+static int hf_pmip6_hi_hi;
+static int hf_pmip6_hi_reserved;
+
+static int hf_pmip6_att_reserved;
+static int hf_pmip6_att_att;
+
+static int hf_mip6_opt_mnlli_reserved;
+static int hf_mip6_opt_mnlli_lli;
+
+static int hf_pmip6_timestamp;
+static int hf_pmip6_rc;
+static int hf_mip6_ipv4ha_preflen;
+static int hf_mip6_ipv4ha_p_flag;
+static int hf_mip6_ipv4ha_ha;
+static int hf_mip6_ipv4ha_reserved;
+static int hf_mip6_ipv4aa_status;
+
+static int hf_mip6_opt_natd_f_flag;
+static int hf_mip6_opt_natd_reserved;
+static int hf_mip6_opt_natd_refresh_t;
+
+static int hf_mip6_opt_ipv4coa_reserved;
+static int hf_mip6_opt_ipv4coa_addr;
+
+static int hf_pmip6_gre_key;
+static int hf_mip6_opt_mhipv6ap_opt_code;
+static int hf_mip6_opt_mhipv6ap_prefix_l;
+static int hf_mip6_opt_mhipv6ap_ipv6_address;
+static int hf_mip6_opt_mhipv6ap_ipv6_address_prefix;
+static int hf_mip6_ipv4dra_reserved;
+static int hf_mip6_ipv4dra_dra;
+
+static int hf_mip6_ipv4dsm_reserved;
+static int hf_mip6_ipv4dsm_s_flag;
+static int hf_mip6_cr_reserved;
+static int hf_mip6_cr_req_type;
+static int hf_mip6_cr_req_length;
+
+static int hf_mip6_lmaa_opt_code;
+static int hf_mip6_lmaa_reserved;
+static int hf_mip6_lmaa_ipv4;
+static int hf_mip6_lmaa_ipv6;
+
+static int hf_mip6_mobility_opt;
+static int hf_mip6_opt_len;
+
+static int hf_mip6_opt_bi_bid;
+static int hf_mip6_opt_bi_status;
+static int hf_mip6_bi_h_flag;
+static int hf_mip6_bi_coa_ipv4;
+static int hf_mip6_bi_coa_ipv6;
+
+static int hf_mip6_binding_refresh_request;
+static int hf_mip6_unknown_type_data;
+static int hf_mip6_fast_neighbor_advertisement;
+static int hf_mip6_vsm_data;
+static int hf_mip6_vsm_req_data;
+static int hf_mip6_opt_padn;
/* PMIP BRI */
-static int hf_pmip6_bri_brtype = -1;
-static int hf_pmip6_bri_rtrigger = -1;
-static int hf_pmip6_bri_status = -1;
-static int hf_pmip6_bri_seqnr = -1;
-static int hf_pmip6_bri_ip_flag = -1;
-static int hf_pmip6_bri_ap_flag = -1;
-static int hf_pmip6_bri_iv_flag = -1;
-static int hf_pmip6_bri_av_flag = -1;
-static int hf_pmip6_bri_ig_flag = -1;
-static int hf_pmip6_bri_ag_flag = -1;
-static int hf_pmip6_bri_res = -1;
-
-static int hf_pmip6_lri_sequence = -1;
-static int hf_pmip6_lri_reserved = -1;
-static int hf_pmip6_lri_lifetime = -1;
-
-static int hf_pmip6_lra_sequence = -1;
-static int hf_pmip6_lra_u = -1;
-static int hf_pmip6_lra_reserved = -1;
-static int hf_pmip6_lra_status = -1;
-static int hf_pmip6_lra_lifetime = -1;
-
-static int hf_mip6_opt_recap_reserved = -1;
-static int hf_mip6_opt_redir_k = -1;
-static int hf_mip6_opt_redir_n = -1;
-static int hf_mip6_opt_redir_reserved = -1;
-static int hf_mip6_opt_redir_addr_r2LMA_ipv6 = -1;
-static int hf_mip6_opt_redir_addr_r2LMA_ipv4 = -1;
-static int hf_mip6_opt_load_inf_priority = -1;
-static int hf_mip6_opt_load_inf_sessions_in_use = -1;
-static int hf_mip6_opt_load_inf_maximum_sessions = -1;
-static int hf_mip6_opt_load_inf_used_capacity = -1;
-static int hf_mip6_opt_load_inf_maximum_capacity = -1;
-static int hf_mip6_opt_alt_ip4 = -1;
+static int hf_pmip6_bri_brtype;
+static int hf_pmip6_bri_rtrigger;
+static int hf_pmip6_bri_status;
+static int hf_pmip6_bri_seqnr;
+static int hf_pmip6_bri_ip_flag;
+static int hf_pmip6_bri_ap_flag;
+static int hf_pmip6_bri_iv_flag;
+static int hf_pmip6_bri_av_flag;
+static int hf_pmip6_bri_ig_flag;
+static int hf_pmip6_bri_ag_flag;
+static int hf_pmip6_bri_res;
+
+static int hf_pmip6_lri_sequence;
+static int hf_pmip6_lri_reserved;
+static int hf_pmip6_lri_lifetime;
+
+static int hf_pmip6_lra_sequence;
+static int hf_pmip6_lra_u;
+static int hf_pmip6_lra_reserved;
+static int hf_pmip6_lra_status;
+static int hf_pmip6_lra_lifetime;
+
+static int hf_mip6_opt_recap_reserved;
+static int hf_mip6_opt_redir_k;
+static int hf_mip6_opt_redir_n;
+static int hf_mip6_opt_redir_reserved;
+static int hf_mip6_opt_redir_addr_r2LMA_ipv6;
+static int hf_mip6_opt_redir_addr_r2LMA_ipv4;
+static int hf_mip6_opt_load_inf_priority;
+static int hf_mip6_opt_load_inf_sessions_in_use;
+static int hf_mip6_opt_load_inf_maximum_sessions;
+static int hf_mip6_opt_load_inf_used_capacity;
+static int hf_mip6_opt_load_inf_maximum_capacity;
+static int hf_mip6_opt_alt_ip4;
/* Mobile Node Group Identifier Optionm */
-static int hf_mip6_opt_mng_sub_type = -1;
-static int hf_mip6_opt_mng_reserved = -1;
-static int hf_mip6_opt_mng_mng_id = -1;
-
-static int hf_mip6_opt_mag_ipv6_reserved = -1;
-static int hf_mip6_opt_mag_ipv6_address_length = -1;
-static int hf_mip6_opt_mag_ipv6_address = -1;
-
-static int hf_mip6_opt_acc_net_id_sub = -1;
-static int hf_mip6_opt_acc_net_id_sub_opt = -1;
-static int hf_mip6_opt_acc_net_id_sub_opt_len = -1;
-static int hf_mip6_opt_acc_net_id_sub_opt_e_bit = -1;
-static int hf_mip6_opt_acc_net_id_sub_opt_net_name_len = -1;
-static int hf_mip6_opt_acc_net_id_sub_opt_net_name = -1;
-static int hf_mip6_opt_acc_net_id_sub_opt_net_name_data = -1;
-static int hf_mip6_opt_acc_net_id_sub_opt_ap_name_len = -1;
-static int hf_mip6_opt_acc_net_id_sub_opt_ap_name = -1;
-static int hf_mip6_opt_acc_net_id_sub_opt_geo_latitude_degrees = -1;
-static int hf_mip6_opt_acc_net_id_sub_opt_geo_longitude_degrees = -1;
-static int hf_mip6_opt_acc_net_id_sub_opt_op_id_type = -1;
-static int hf_mip6_opt_acc_net_id_sub_opt_op_id = -1;
-
-static int hf_pmip6_opt_lila_lla = -1;
+static int hf_mip6_opt_mng_sub_type;
+static int hf_mip6_opt_mng_reserved;
+static int hf_mip6_opt_mng_mng_id;
+
+static int hf_mip6_opt_mag_ipv6_reserved;
+static int hf_mip6_opt_mag_ipv6_address_length;
+static int hf_mip6_opt_mag_ipv6_address;
+
+static int hf_mip6_opt_acc_net_id_sub;
+static int hf_mip6_opt_acc_net_id_sub_opt;
+static int hf_mip6_opt_acc_net_id_sub_opt_len;
+static int hf_mip6_opt_acc_net_id_sub_opt_e_bit;
+static int hf_mip6_opt_acc_net_id_sub_opt_net_name_len;
+static int hf_mip6_opt_acc_net_id_sub_opt_net_name;
+static int hf_mip6_opt_acc_net_id_sub_opt_net_name_data;
+static int hf_mip6_opt_acc_net_id_sub_opt_ap_name_len;
+static int hf_mip6_opt_acc_net_id_sub_opt_ap_name;
+static int hf_mip6_opt_acc_net_id_sub_opt_geo_latitude_degrees;
+static int hf_mip6_opt_acc_net_id_sub_opt_geo_longitude_degrees;
+static int hf_mip6_opt_acc_net_id_sub_opt_op_id_type;
+static int hf_mip6_opt_acc_net_id_sub_opt_op_id;
+
+static int hf_pmip6_opt_lila_lla;
/* Delegated Mobile Network Prefix Option */
-static int hf_mip6_opt_dmnp_v_flag = -1;
-static int hf_mip6_opt_dmnp_reserved = -1;
-static int hf_mip6_opt_dmnp_prefix_len = -1;
-static int hf_mip6_opt_dmnp_dmnp_ipv4 = -1;
-static int hf_mip6_opt_dmnp_dmnp_ipv6 = -1;
+static int hf_mip6_opt_dmnp_v_flag;
+static int hf_mip6_opt_dmnp_reserved;
+static int hf_mip6_opt_dmnp_prefix_len;
+static int hf_mip6_opt_dmnp_dmnp_ipv4;
+static int hf_mip6_opt_dmnp_dmnp_ipv6;
/* Initialize the subtree pointers */
-static gint ett_mip6 = -1;
-static gint ett_mip6_opt_pad1 = -1;
-static gint ett_mip6_opt_padn = -1;
-static gint ett_mip6_opts = -1;
-static gint ett_mip6_opt_bra = -1;
-static gint ett_mip6_opt_acoa = -1;
-static gint ett_mip6_opt_ni = -1;
-static gint ett_mip6_opt_bad = -1;
-static gint ett_mip6_nemo_opt_mnp = -1;
-static gint ett_fmip6_opt_lla = -1;
-static gint ett_mip6_opt_mnid = -1;
-static gint ett_mip6_opt_auth = -1;
-static gint ett_mip6_opt_mesgid = -1;
-static gint ett_mip6_opt_cgapr = -1;
-static gint ett_mip6_opt_cgar = -1;
-static gint ett_mip6_opt_sign = -1;
-static gint ett_mip6_opt_phkt = -1;
-static gint ett_mip6_opt_mocoti = -1;
-static gint ett_mip6_opt_mocot = -1;
-static gint ett_mip6_opt_dnsu = -1;
-static gint ett_mip6_opt_em = -1;
-static gint ett_mip6_opt_vsm = -1;
-static gint ett_mip6_opt_ssm = -1;
-static gint ett_mip6_opt_badff = -1;
-static gint ett_mip6_opt_unknown = -1;
-static gint ett_pmip6_opt_hnp = -1;
-static gint ett_pmip6_opt_hi = -1;
-static gint ett_pmip6_opt_att = -1;
-static gint ett_pmip6_opt_mnlli = -1;
-static gint ett_pmip6_opt_lla = -1;
-static gint ett_pmip6_opt_ts = -1;
-static gint ett_pmip6_opt_rc = -1;
-static gint ett_mip6_opt_ipv4ha = -1;
-static gint ett_mip6_opt_ipv4aa = -1;
-static gint ett_mip6_opt_natd = -1;
-static gint ett_mip6_opt_ipv4coa = -1;
-static gint ett_pmip6_opt_grek = -1;
-static gint ett_pmip6_opt_mhipv6ap = -1;
-static gint ett_pmip6_opt_bi = -1;
-static gint ett_mip6_opt_ipv4hareq = -1;
-static gint ett_mip6_opt_ipv4harep = -1;
-static gint ett_mip6_opt_ipv4dra = -1;
-static gint ett_mip6_opt_ipv4dsm = -1;
-static gint ett_mip6_opt_cr = -1;
-static gint ett_mip6_opt_lmaa = -1;
-static gint ett_mip6_opt_recap = -1;
-static gint ett_mip6_opt_redir = -1;
-static gint ett_mip6_opt_load_inf = -1;
-static gint ett_mip6_opt_alt_ip4 = -1;
-static gint ett_mip6_opt_mng = -1;
-static gint ett_mip6_opt_mag_ipv6 = -1;
-static gint ett_mip6_opt_acc_net_id = -1;
-static gint ett_mip6_sub_opt_acc_net_id = -1;
-static gint ett_mip6_opt_dmnp = -1;
-
-static expert_field ei_mip6_ie_not_dissected = EI_INIT;
-static expert_field ei_mip6_ani_type_not_dissected = EI_INIT;
-static expert_field ei_mip6_opt_len_invalid = EI_INIT;
-static expert_field ei_mip6_vsm_data_not_dissected = EI_INIT;
-static expert_field ei_mip6_bogus_header_length = EI_INIT;
+static gint ett_mip6;
+static gint ett_mip6_opt_pad1;
+static gint ett_mip6_opt_padn;
+static gint ett_mip6_opts;
+static gint ett_mip6_opt_bra;
+static gint ett_mip6_opt_acoa;
+static gint ett_mip6_opt_ni;
+static gint ett_mip6_opt_bad;
+static gint ett_mip6_nemo_opt_mnp;
+static gint ett_fmip6_opt_lla;
+static gint ett_mip6_opt_mnid;
+static gint ett_mip6_opt_auth;
+static gint ett_mip6_opt_mesgid;
+static gint ett_mip6_opt_cgapr;
+static gint ett_mip6_opt_cgar;
+static gint ett_mip6_opt_sign;
+static gint ett_mip6_opt_phkt;
+static gint ett_mip6_opt_mocoti;
+static gint ett_mip6_opt_mocot;
+static gint ett_mip6_opt_dnsu;
+static gint ett_mip6_opt_em;
+static gint ett_mip6_opt_vsm;
+static gint ett_mip6_opt_ssm;
+static gint ett_mip6_opt_badff;
+static gint ett_mip6_opt_unknown;
+static gint ett_pmip6_opt_hnp;
+static gint ett_pmip6_opt_hi;
+static gint ett_pmip6_opt_att;
+static gint ett_pmip6_opt_mnlli;
+static gint ett_pmip6_opt_lla;
+static gint ett_pmip6_opt_ts;
+static gint ett_pmip6_opt_rc;
+static gint ett_mip6_opt_ipv4ha;
+static gint ett_mip6_opt_ipv4aa;
+static gint ett_mip6_opt_natd;
+static gint ett_mip6_opt_ipv4coa;
+static gint ett_pmip6_opt_grek;
+static gint ett_pmip6_opt_mhipv6ap;
+static gint ett_pmip6_opt_bi;
+static gint ett_mip6_opt_ipv4hareq;
+static gint ett_mip6_opt_ipv4harep;
+static gint ett_mip6_opt_ipv4dra;
+static gint ett_mip6_opt_ipv4dsm;
+static gint ett_mip6_opt_cr;
+static gint ett_mip6_opt_lmaa;
+static gint ett_mip6_opt_recap;
+static gint ett_mip6_opt_redir;
+static gint ett_mip6_opt_load_inf;
+static gint ett_mip6_opt_alt_ip4;
+static gint ett_mip6_opt_mng;
+static gint ett_mip6_opt_mag_ipv6;
+static gint ett_mip6_opt_acc_net_id;
+static gint ett_mip6_sub_opt_acc_net_id;
+static gint ett_mip6_opt_dmnp;
+
+static expert_field ei_mip6_ie_not_dissected;
+static expert_field ei_mip6_ani_type_not_dissected;
+static expert_field ei_mip6_opt_len_invalid;
+static expert_field ei_mip6_vsm_data_not_dissected;
+static expert_field ei_mip6_bogus_header_length;
static dissector_table_t mip6_option_table;
@@ -1998,13 +1998,13 @@ dissect_mip6_opt_vsm_3gpp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, v
break;
/* 11, Mobile Equipment Identity (MEI) */
case 11:
- proto_tree_add_item_ret_display_string(tree, hf_mip6_opt_3gpp_mei, tvb, offset, len, ENC_BCD_DIGITS_0_9, pinfo->pool, &mei_str);
+ proto_tree_add_item_ret_display_string(tree, hf_mip6_opt_3gpp_mei, tvb, offset, len, ENC_BCD_DIGITS_0_9|ENC_LITTLE_ENDIAN, pinfo->pool, &mei_str);
proto_item_append_text(hdr_item, " %s", mei_str);
break;
/* 12, MSISDN */
case 12:
dissect_e164_cc(tvb, tree, offset, E164_ENC_BCD);
- proto_tree_add_item_ret_display_string(tree, hf_mip6_opt_3gpp_msisdn, tvb, offset, len, ENC_BCD_DIGITS_0_9, pinfo->pool, &digit_str);
+ proto_tree_add_item_ret_display_string(tree, hf_mip6_opt_3gpp_msisdn, tvb, offset, len, ENC_BCD_DIGITS_0_9|ENC_LITTLE_ENDIAN, pinfo->pool, &digit_str);
proto_item_append_text(hdr_item, " %s", digit_str);
break;
/* 13, Serving Network */
@@ -2022,7 +2022,7 @@ dissect_mip6_opt_vsm_3gpp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, v
break;
/* 16, Unauthenticated IMSI */
case 16:
- proto_tree_add_item_ret_display_string(tree, hf_mip6_opt_3gpp_imsi, tvb, offset, len, ENC_BCD_DIGITS_0_9, pinfo->pool, &imsi_str);
+ proto_tree_add_item_ret_display_string(tree, hf_mip6_opt_3gpp_imsi, tvb, offset, len, ENC_BCD_DIGITS_0_9|ENC_LITTLE_ENDIAN, pinfo->pool, &imsi_str);
proto_item_append_text(hdr_item," %s", imsi_str);
break;
/* 17, PDN Connection ID */
@@ -2036,7 +2036,7 @@ dissect_mip6_opt_vsm_3gpp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, v
break;
/* 19, Signalling Priority Indication */
case 19:
- proto_tree_add_item(tree, hf_hf_mip6_opt_3gpp_lapi, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_mip6_opt_3gpp_lapi, tvb, offset, 1, ENC_BIG_ENDIAN);
break;
/* 20, Additional Protocol Configuration Options
* 12.1.1.19 Additional Protocol Configuration Options
@@ -2523,9 +2523,17 @@ dissect_mip6_opt_ssm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void*
int option_len = tvb_reported_length(tvb)-2;
int offset = 2;
guint8 *apn = NULL;
- int name_len, tmp;
+ int name_len;
opt_tree = mip6_var_option_header(tree, pinfo, tvb, proto_mip6_option_ssm, ett_mip6_opt_ssm, &ti, option_len, MIP6_SSM_MINLEN);
+ /* RFC 5149 3. Service Selection Mobility Option
+ * Identifier: A variable-length encoded service identifier string
+ * used to identify the requested service. The identifier string
+ * length is between 1 and 255 octets. This specification allows
+ * international identifier strings that are based on the use of
+ * Unicode characters, encoded as UTF-8, and formatted using
+ * Normalization Form KC (NFKC).
+ */
/* 3GPP TS 29.275 version 10.5.0 Release 10, Table 5.1.1.1-2
* Set to the EPS Access Point Name to which the UE
@@ -2543,18 +2551,18 @@ dissect_mip6_opt_ssm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void*
if (option_len > 0) {
name_len = tvb_get_guint8(tvb, offset);
+ /* As can be seen above, RFC 5149 "allows" the use of UTF-8 encoded
+ * strings, but the 3GPP chose to encode as other APN fields,
+ * similar to RFC 1035 DNS labels (but without pointer compression).
+ * As a heuristic, if the first byte is less than 0x20, interpret
+ * it as a length (rather than a control code) and use APN encoding,
+ * otherwise interpret as a string.
+ */
if (name_len < 0x20) {
- apn = tvb_get_string_enc(pinfo->pool, tvb, offset + 1, option_len - 1, ENC_ASCII);
- for (;;) {
- if (name_len >= option_len - 1)
- break;
- tmp = name_len;
- name_len = name_len + apn[tmp] + 1;
- apn[tmp] = '.';
- }
+ apn = tvb_get_string_enc(pinfo->pool, tvb, offset, option_len, ENC_APN_STR);
}
else {
- apn = tvb_get_string_enc(pinfo->pool, tvb, offset, option_len, ENC_ASCII);
+ apn = tvb_get_string_enc(pinfo->pool, tvb, offset, option_len, ENC_UTF_8);
}
proto_tree_add_string(opt_tree, hf_mip6_opt_ss_identifier, tvb, offset, option_len, apn);
}
@@ -3501,7 +3509,7 @@ degrees_convert_fixed_to_float(guint value)
static void
degrees_base_custom(gchar *str, guint degrees)
{
- g_snprintf(str, ITEM_LABEL_LENGTH, "%f", degrees_convert_fixed_to_float(degrees) );
+ snprintf(str, ITEM_LABEL_LENGTH, "%f", degrees_convert_fixed_to_float(degrees) );
}
static int
@@ -3717,7 +3725,7 @@ dissect_mipv6_options(tvbuff_t *tvb, int offset, guint length,
if (option_dissector == NULL) {
name = wmem_strdup_printf(pinfo->pool, "Unknown (0x%02x)", opt);
} else {
- name = dissector_handle_get_short_name(option_dissector);
+ name = dissector_handle_get_protocol_short_name(option_dissector);
}
/* Option has a length. Is it in the packet? */
@@ -4323,7 +4331,7 @@ proto_register_mip6(void)
FT_UINT8, BASE_DEC, NULL, 0x0f,
NULL, HFILL }
},
- { &hf_hf_mip6_opt_3gpp_lapi,
+ { &hf_mip6_opt_3gpp_lapi,
{"LAPI (Low Access Priority Indication)", "mip6.3gpp.lapi",
FT_BOOLEAN, 8, NULL, 0x01,
NULL, HFILL}
@@ -4505,7 +4513,7 @@ proto_register_mip6(void)
},
{ &hf_mip6_opt_mnlli_reserved,
{ "Reserved", "mip6.mnlli.reserved",
- FT_UINT16, BASE_DEC, NULL, 0xffff,
+ FT_UINT16, BASE_DEC, NULL, 0x0,
NULL, HFILL }
},
{ &hf_mip6_opt_mnlli_lli,
@@ -4572,7 +4580,7 @@ proto_register_mip6(void)
},
{ &hf_mip6_opt_ipv4coa_reserved,
{ "Reserved", "mip6.ipv4coa.reserved",
- FT_UINT16, BASE_DEC, NULL, 0xffff,
+ FT_UINT16, BASE_DEC, NULL, 0x0,
NULL, HFILL }
},
{ &hf_mip6_opt_ipv4coa_addr,
@@ -4618,7 +4626,7 @@ proto_register_mip6(void)
},
{ &hf_mip6_bi_h_flag,
{ "Simultaneous Home and Foreign Binding (H)", "mip6.bi.h_flag",
- FT_BOOLEAN, 8, TFS(&tfs_true_false), 0x80,
+ FT_BOOLEAN, 8, NULL, 0x80,
NULL, HFILL }
},
{ &hf_mip6_bi_coa_ipv4,