packet_hip: (Minor): Remove unused data_handle; move proto_register... to just before proto_reg-handoff...

svn path=/trunk/; revision=28604
This commit is contained in:
Bill Meier 2009-06-02 18:47:20 +00:00
parent ab319c586e
commit 8ccf0f9ba4
1 changed files with 400 additions and 404 deletions

View File

@ -276,11 +276,7 @@ static const value_string nat_traversal_mode_vals[] = {
};
/* functions */
static void dissect_hip_in_udp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
static int dissect_hip_tlv(tvbuff_t *tvb, int offset, proto_item *ti, int type, int tlv_len);
static void dissect_hip(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
static dissector_handle_t data_handle;
static int proto_hip = -1;
static int hf_hip_proto = -1;
@ -562,405 +558,6 @@ dissect_hip_in_udp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
}
void
proto_register_hip(void)
{
static hf_register_info hf[] = {
{ &hf_hip_proto,
{ "Payload Protocol", "hip.proto",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_hdr_len,
{ "Header Length", "hip.hdr_len",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_packet_type,
{ "Packet Type", "hip.packet_type",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_shim6_fixed_bit_p,
{ "Header fixed bit P", "hip.shim6_fixed_p",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_version,
{ "Version", "hip.version",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_shim6_fixed_bit_s,
{ "Header fixed bit S", "hip.shim6_fixed_s",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_controls,
{ "HIP Controls", "hip.controls",
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_controls_anon,
{ "Anonymous (Sender's HI is anonymous)", "hip.controls.a",
FT_BOOLEAN, 16, NULL, HIP_CONTROL_A_MASK, NULL, HFILL }},
{ &hf_hip_checksum,
{ "Checksum", "hip.checksum",
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_hit_sndr,
{ "Sender's HIT", "hip.hit_sndr",
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_hit_rcvr,
{ "Receiver's HIT", "hip.hit_rcvr",
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_type,
{ "Type", "hip.type",
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_r1_res,
{ "Reserved", "hip.tlv.r1_reserved",
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_r1count,
{ "R1 Counter", "hip.tlv.r1_counter",
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_puzzle_k,
{ "Difficulty (K)", "hip.tlv_puzzle_k",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_puzzle_life,
{ "Lifetime", "hip.tlv_puzzle_lifetime",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_puzzle_o,
{ "Opaque Data", "hip.tlv_puzzle_opaque",
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_puzzle_i,
{ "Random number (I)", "hip.tlv.puzzle_random_i",
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_solution_k,
{ "Difficulty (K)", "hip.tlv_solution_k",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_solution_reserved,
{ "Reserved", "hip.tlv_solution_reserved",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_solution_o,
{ "Opaque Data", "hip.tlv_solution_opaque",
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_solution_i,
{ "Random number (I)", "hip.tlv.solution_random_i",
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_solution_j,
{ "Solution (J)", "hip.tlv_solution_j",
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_ei_res,
{ "Reserved", "hip.tlv_esp_info_reserved",
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_ei_keyidx,
{ "Keymaterial Index", "hip.tlv_esp_info_key_index",
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_ei_oldspi,
{ "Old SPI", "hip.tlv_esp_info_old_spi",
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_ei_newspi,
{ "New SPI", "hip.tlv_esp_info_new_spi",
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_seq_updid,
{ "Seq Update ID", "hip.tlv_seq_update_id",
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_ack_updid,
{ "ACKed Peer Update ID", "hip.tlv_ack_updid",
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_dh_group_id,
{ "Group ID", "hip.tlv.dh_group_id",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_dh_pv_length,
{ "Public Value Length", "hip.tlv.dh_pv_length",
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_dh_pub,
{ "Public Value", "hip.tlv.dh_public_value",
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_trans_id,
{ "Transform ID", "hip.tlv.trans_id",
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_esp_reserved,
{ "Reserved", "hip.tlv.esp_trans_res",
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_host_id_len,
{ "Host Identity Length", "hip.tlv.host_id_length",
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_host_di_type,
{ "Domain Identifier Type", "hip.tlv.host_domain_id_type",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_host_di_len,
{ "Domain Identifier Length", "hip.tlv.host_domain_id_length",
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_host_id_hdr,
{ "Host Identity flags", "hip.tlv.host_id_hdr",
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_host_id_hdr_flags,
{ "Host Identity Header Flags", "hip.tlv.host_id_header_flags",
FT_UINT32, BASE_HEX, VALS(hi_hdr_flags_vals),
HI_HDR_FLAGS_MASK, NULL, HFILL }},
{ &hf_hip_tlv_host_id_hdr_proto,
{ "Host Identity Header Protocol", "hip.tlv.host_id_header_proto",
FT_UINT32, BASE_HEX, VALS(hi_hdr_proto_vals),
HI_HDR_PROTO_MASK, NULL, HFILL }},
{ &hf_hip_tlv_host_id_hdr_alg,
{ "Host Identity Header Algorithm", "hip.tlv.host_id_header_algo",
FT_UINT32, BASE_HEX, VALS(hi_hdr_alg_vals),
HI_HDR_ALG_MASK, NULL, HFILL }},
{ &hf_hip_tlv_host_id_t,
{ "Host Identity T", "hip.tlv.host_identity_t",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_host_id_q,
{ "Host Identity Q", "hip.tlv.host_identity_q",
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_host_id_p,
{ "Host Identity P", "hip.tlv.host_id_p",
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_host_id_g,
{ "Host Identity G", "hip.tlv.host_id_g",
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_host_id_y,
{ "Host Identity Y (public value)", "hip.tlv.host_id_y",
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_host_id_e_len,
{ "RSA Host Identity exponent length (e_len)", "hip.tlv.host_id_e_length",
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_host_id_e,
{ "RSA Host Identity exponent (e)", "hip.tlv.host_id_e",
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_host_id_n,
{ "RSA Host Identity public modulus (n)", "hip.tlv.host_id_n",
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_notification_res,
{ "Notification Reserved", "hip.tlv.notification_res",
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_notification_type,
{ "Notification Message Type", "hip.tlv.notification_type",
FT_UINT16, BASE_DEC, VALS(notification_vals), 0xFFFF, NULL, HFILL }},
{ &hf_hip_tlv_notification_data,
{ "Notification Data", "hip.tlv.notification_data",
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_opaque_data,
{ "Opaque Data", "hip.tlv.opaque_data",
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_reg_ltmin,
{ "Minimum Registration Lifetime", "hip.tlv.reg_ltmin",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_reg_ltmax,
{ "Maximum Registration Lifetime", "hip.tlv.reg_ltmax",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_reg_lt,
{ "Registration Lifetime", "hip.tlv.reg_lt",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_reg_type,
{ "Registration Type", "hip.tlv.reg_type",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_reg_failtype,
{ "Registration Failure Type", "hip.tlv.reg_failtype",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_hmac,
{ "HMAC", "hip.tlv.hmac",
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_sig_alg,
{ "Signature Algorithm", "hip.tlv.sig_alg",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_sig,
{ "Signature", "hip.tlv.sig",
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_enc_reserved,
{ "Reserved", "hip.tlv.enc_reserved",
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_locator_traffic_type,
{ "Traffic Type", "hip.tlv.locator_traffic_type",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_locator_type,
{ "Locator Type", "hip.tlv.locator_type",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_locator_len,
{ "Locator Length", "hip.tlv.locator_len",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_locator_reserved,
{ "Reserved", "hip.tlv.locator_reserved",
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_locator_lifetime,
{ "Locator Lifetime", "hip.tlv.locator_lifetime",
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_locator_port,
{ "Locator port", "hip.tlv.locator_port",
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_locator_transport_protocol,
{ "Locator transport protocol", "hip.tlv.locator_transport_protocol",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_locator_kind,
{ "Locator kind", "hip.tlv.locator_kind",
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_locator_priority,
{ "Locator priority", "hip.tlv.locator_priority",
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_locator_spi,
{ "Locator spi", "hip.tlv.locator_spi",
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_locator_address,
{ "Locator" , "hip.tlv.locator_address",
FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_cert_group,
{ "Cert group", "hip.tlv.cert_group",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_cert_count,
{ "Cert count", "hip.tlv.cert_count",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_cert_id,
{ "Cert ID", "hip.tlv.cert_id",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_cert_type,
{ "Cert type", "hip.tlv.cert_type",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_certificate,
{ "Certificate", "hip.tlv.certificate",
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_nat_traversal_mode_id,
{ "NAT Traversal Mode ID", "hip.tlv.nat_traversal_mode_id",
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_relay_from_port,
{ "Relay From Port", "hip.tlv.relay_from_port",
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_relay_to_port,
{ "Relay To Port", "hip.tlv.relay_to_port",
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_reg_from_port,
{ "Port", "hip.tlv.reg_from_port",
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_transaction_minta,
{ "Min Ta" , "hip.tlv_transaction_minta",
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_from_address,
{ "Address" , "hip.tlv_from_address",
FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_rvs_address,
{ "RVS Address" , "hip.tlv_rvs_address",
FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_relay_from_protocol,
{ "Protocol" , "hip.tlv_relay_from_protocol",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_relay_from_reserved,
{ "Reserved" , "hip.tlv_relay_from_reserved",
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_relay_from_address,
{ "Address" , "hip.tlv_relay_from_address",
FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_relay_to_protocol,
{ "Protocol" , "hip.tlv_relay_to_protocol",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_relay_to_reserved,
{ "Reserved" , "hip.tlv_relay_to_reserved",
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_relay_to_address,
{ "Address" , "hip.tlv_relay_to_address",
FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_reg_from_protocol,
{ "Protocol" , "hip.tlv_reg_from_protocol",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_reg_from_reserved,
{ "Reserved" , "hip.tlv_reg_from_reserved",
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_reg_from_address,
{ "Address" , "hip.tlv_reg_from_address",
FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL }},
};
static gint *ett[] = {
&ett_hip,
&ett_hip_controls,
&ett_hip_tlv,
&ett_hip_tlv_data,
&ett_hip_tlv_host_id_hdr,
};
proto_hip = proto_register_protocol("Host Identity Protocol",
"HIP", "hip");
proto_register_field_array(proto_hip, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
}
static int
dissect_hip_tlv(tvbuff_t *tvb, int offset, proto_item *ti, int type, int tlv_len)
@ -1503,6 +1100,406 @@ dissect_hip_tlv(tvbuff_t *tvb, int offset, proto_item *ti, int type, int tlv_len
return (0);
}
void
proto_register_hip(void)
{
static hf_register_info hf[] = {
{ &hf_hip_proto,
{ "Payload Protocol", "hip.proto",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_hdr_len,
{ "Header Length", "hip.hdr_len",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_packet_type,
{ "Packet Type", "hip.packet_type",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_shim6_fixed_bit_p,
{ "Header fixed bit P", "hip.shim6_fixed_p",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_version,
{ "Version", "hip.version",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_shim6_fixed_bit_s,
{ "Header fixed bit S", "hip.shim6_fixed_s",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_controls,
{ "HIP Controls", "hip.controls",
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_controls_anon,
{ "Anonymous (Sender's HI is anonymous)", "hip.controls.a",
FT_BOOLEAN, 16, NULL, HIP_CONTROL_A_MASK, NULL, HFILL }},
{ &hf_hip_checksum,
{ "Checksum", "hip.checksum",
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_hit_sndr,
{ "Sender's HIT", "hip.hit_sndr",
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_hit_rcvr,
{ "Receiver's HIT", "hip.hit_rcvr",
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_type,
{ "Type", "hip.type",
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_r1_res,
{ "Reserved", "hip.tlv.r1_reserved",
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_r1count,
{ "R1 Counter", "hip.tlv.r1_counter",
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_puzzle_k,
{ "Difficulty (K)", "hip.tlv_puzzle_k",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_puzzle_life,
{ "Lifetime", "hip.tlv_puzzle_lifetime",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_puzzle_o,
{ "Opaque Data", "hip.tlv_puzzle_opaque",
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_puzzle_i,
{ "Random number (I)", "hip.tlv.puzzle_random_i",
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_solution_k,
{ "Difficulty (K)", "hip.tlv_solution_k",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_solution_reserved,
{ "Reserved", "hip.tlv_solution_reserved",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_solution_o,
{ "Opaque Data", "hip.tlv_solution_opaque",
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_solution_i,
{ "Random number (I)", "hip.tlv.solution_random_i",
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_solution_j,
{ "Solution (J)", "hip.tlv_solution_j",
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_ei_res,
{ "Reserved", "hip.tlv_esp_info_reserved",
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_ei_keyidx,
{ "Keymaterial Index", "hip.tlv_esp_info_key_index",
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_ei_oldspi,
{ "Old SPI", "hip.tlv_esp_info_old_spi",
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_ei_newspi,
{ "New SPI", "hip.tlv_esp_info_new_spi",
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_seq_updid,
{ "Seq Update ID", "hip.tlv_seq_update_id",
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_ack_updid,
{ "ACKed Peer Update ID", "hip.tlv_ack_updid",
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_dh_group_id,
{ "Group ID", "hip.tlv.dh_group_id",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_dh_pv_length,
{ "Public Value Length", "hip.tlv.dh_pv_length",
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_dh_pub,
{ "Public Value", "hip.tlv.dh_public_value",
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_trans_id,
{ "Transform ID", "hip.tlv.trans_id",
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_esp_reserved,
{ "Reserved", "hip.tlv.esp_trans_res",
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_host_id_len,
{ "Host Identity Length", "hip.tlv.host_id_length",
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_host_di_type,
{ "Domain Identifier Type", "hip.tlv.host_domain_id_type",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_host_di_len,
{ "Domain Identifier Length", "hip.tlv.host_domain_id_length",
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_host_id_hdr,
{ "Host Identity flags", "hip.tlv.host_id_hdr",
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_host_id_hdr_flags,
{ "Host Identity Header Flags", "hip.tlv.host_id_header_flags",
FT_UINT32, BASE_HEX, VALS(hi_hdr_flags_vals),
HI_HDR_FLAGS_MASK, NULL, HFILL }},
{ &hf_hip_tlv_host_id_hdr_proto,
{ "Host Identity Header Protocol", "hip.tlv.host_id_header_proto",
FT_UINT32, BASE_HEX, VALS(hi_hdr_proto_vals),
HI_HDR_PROTO_MASK, NULL, HFILL }},
{ &hf_hip_tlv_host_id_hdr_alg,
{ "Host Identity Header Algorithm", "hip.tlv.host_id_header_algo",
FT_UINT32, BASE_HEX, VALS(hi_hdr_alg_vals),
HI_HDR_ALG_MASK, NULL, HFILL }},
{ &hf_hip_tlv_host_id_t,
{ "Host Identity T", "hip.tlv.host_identity_t",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_host_id_q,
{ "Host Identity Q", "hip.tlv.host_identity_q",
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_host_id_p,
{ "Host Identity P", "hip.tlv.host_id_p",
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_host_id_g,
{ "Host Identity G", "hip.tlv.host_id_g",
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_host_id_y,
{ "Host Identity Y (public value)", "hip.tlv.host_id_y",
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_host_id_e_len,
{ "RSA Host Identity exponent length (e_len)", "hip.tlv.host_id_e_length",
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_host_id_e,
{ "RSA Host Identity exponent (e)", "hip.tlv.host_id_e",
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_host_id_n,
{ "RSA Host Identity public modulus (n)", "hip.tlv.host_id_n",
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_notification_res,
{ "Notification Reserved", "hip.tlv.notification_res",
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_notification_type,
{ "Notification Message Type", "hip.tlv.notification_type",
FT_UINT16, BASE_DEC, VALS(notification_vals), 0xFFFF, NULL, HFILL }},
{ &hf_hip_tlv_notification_data,
{ "Notification Data", "hip.tlv.notification_data",
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_opaque_data,
{ "Opaque Data", "hip.tlv.opaque_data",
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_reg_ltmin,
{ "Minimum Registration Lifetime", "hip.tlv.reg_ltmin",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_reg_ltmax,
{ "Maximum Registration Lifetime", "hip.tlv.reg_ltmax",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_reg_lt,
{ "Registration Lifetime", "hip.tlv.reg_lt",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_reg_type,
{ "Registration Type", "hip.tlv.reg_type",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_reg_failtype,
{ "Registration Failure Type", "hip.tlv.reg_failtype",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_hmac,
{ "HMAC", "hip.tlv.hmac",
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_sig_alg,
{ "Signature Algorithm", "hip.tlv.sig_alg",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_sig,
{ "Signature", "hip.tlv.sig",
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_enc_reserved,
{ "Reserved", "hip.tlv.enc_reserved",
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_locator_traffic_type,
{ "Traffic Type", "hip.tlv.locator_traffic_type",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_locator_type,
{ "Locator Type", "hip.tlv.locator_type",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_locator_len,
{ "Locator Length", "hip.tlv.locator_len",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_locator_reserved,
{ "Reserved", "hip.tlv.locator_reserved",
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_locator_lifetime,
{ "Locator Lifetime", "hip.tlv.locator_lifetime",
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_locator_port,
{ "Locator port", "hip.tlv.locator_port",
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_locator_transport_protocol,
{ "Locator transport protocol", "hip.tlv.locator_transport_protocol",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_locator_kind,
{ "Locator kind", "hip.tlv.locator_kind",
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_locator_priority,
{ "Locator priority", "hip.tlv.locator_priority",
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_locator_spi,
{ "Locator spi", "hip.tlv.locator_spi",
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_locator_address,
{ "Locator" , "hip.tlv.locator_address",
FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_cert_group,
{ "Cert group", "hip.tlv.cert_group",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_cert_count,
{ "Cert count", "hip.tlv.cert_count",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_cert_id,
{ "Cert ID", "hip.tlv.cert_id",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_cert_type,
{ "Cert type", "hip.tlv.cert_type",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_certificate,
{ "Certificate", "hip.tlv.certificate",
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_nat_traversal_mode_id,
{ "NAT Traversal Mode ID", "hip.tlv.nat_traversal_mode_id",
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_relay_from_port,
{ "Relay From Port", "hip.tlv.relay_from_port",
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_relay_to_port,
{ "Relay To Port", "hip.tlv.relay_to_port",
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_reg_from_port,
{ "Port", "hip.tlv.reg_from_port",
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_transaction_minta,
{ "Min Ta" , "hip.tlv_transaction_minta",
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_from_address,
{ "Address" , "hip.tlv_from_address",
FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_rvs_address,
{ "RVS Address" , "hip.tlv_rvs_address",
FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_relay_from_protocol,
{ "Protocol" , "hip.tlv_relay_from_protocol",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_relay_from_reserved,
{ "Reserved" , "hip.tlv_relay_from_reserved",
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_relay_from_address,
{ "Address" , "hip.tlv_relay_from_address",
FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_relay_to_protocol,
{ "Protocol" , "hip.tlv_relay_to_protocol",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_relay_to_reserved,
{ "Reserved" , "hip.tlv_relay_to_reserved",
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_relay_to_address,
{ "Address" , "hip.tlv_relay_to_address",
FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_reg_from_protocol,
{ "Protocol" , "hip.tlv_reg_from_protocol",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_reg_from_reserved,
{ "Reserved" , "hip.tlv_reg_from_reserved",
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{ &hf_hip_tlv_reg_from_address,
{ "Address" , "hip.tlv_reg_from_address",
FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL }},
};
static gint *ett[] = {
&ett_hip,
&ett_hip_controls,
&ett_hip_tlv,
&ett_hip_tlv_data,
&ett_hip_tlv_host_id_hdr,
};
proto_hip = proto_register_protocol("Host Identity Protocol",
"HIP", "hip");
proto_register_field_array(proto_hip, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
}
void
proto_reg_handoff_hip(void)
{
@ -1514,5 +1511,4 @@ proto_reg_handoff_hip(void)
hip_handle2 = create_dissector_handle(dissect_hip_in_udp, proto_hip);
dissector_add("udp.port", 50500, hip_handle2);
data_handle = find_dissector("data");
}