*
* RPL support added by Colin O'Flynn & Owen Kirby.
*
- * Enhance ICMPv6 dissector by Alexis La Goutte
+ * Enhance ICMPv6 dissector by Alexis La Goutte
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* RFC 5075/5175: IPv6 Router Advertisement Flags Option
* RFC 5269: Distributing a Symmetric Fast Mobile IPv6 (FMIPv6) Handover Key Using SEcure Neighbor Discovery (SEND)
* RFC 5271: Mobile IPv6 Fast Handovers for 3G CDMA Networks
+ * RFC 6275: Mobility Support in IPv6
* draft-ieft-roll-rpl-19.txt: RPL: IPv6 Routing Protocol for Low power and Lossy Networks
* draft-ietf-csi-proxy-send-05: Secure Proxy ND Support for SEND
* draft-ietf-6lowpan-nd-17: Neighbor Discovery Optimization for Low Power and Lossy Networks (6LoWPAN)
static int hf_icmpv6_opt_prefix_flag = -1;
static int hf_icmpv6_opt_prefix_flag_l = -1;
static int hf_icmpv6_opt_prefix_flag_a = -1;
+static int hf_icmpv6_opt_prefix_flag_r = -1;
static int hf_icmpv6_opt_prefix_flag_reserved = -1;
static int hf_icmpv6_opt_prefix_valid_lifetime = -1;
static int hf_icmpv6_opt_prefix_preferred_lifetime = -1;
link_str = tvb_ether_to_str(tvb, opt_offset);
col_append_fstr(pinfo->cinfo, COL_INFO, " from %s", link_str);
proto_item_append_text(ti, " : %s", link_str);
- /* if the opt len is 16 and the 6 last bytes is 0n the Link Addr is EUI64 Address */
+ /* if the opt len is 16 and the 6 last bytes is 0n the Link Addr is EUI64 Address */
}else if(opt_len == 16 && tvb_get_ntohl(tvb, opt_offset + 8) == 0 && tvb_get_ntohs(tvb, opt_offset + 12) == 0){
proto_tree_add_item(icmp6opt_tree, hf_icmpv6_opt_linkaddr_eui64, tvb, opt_offset, 8, ENC_BIG_ENDIAN);
ti_opt = proto_tree_add_item(icmp6opt_tree, hf_icmpv6_opt_src_linkaddr_eui64, tvb, opt_offset, 8, ENC_BIG_ENDIAN);
col_append_fstr(pinfo->cinfo, COL_INFO, " is at %s", link_str);
proto_item_append_text(ti, " : %s", link_str);
- /* if the opt len is 16 and the 6 last bytes is 0n the Link Addr is EUI64 Address */
+ /* if the opt len is 16 and the 6 last bytes is 0n the Link Addr is EUI64 Address */
}else if(opt_len == 16 && tvb_get_ntohl(tvb, opt_offset + 8) == 0 && tvb_get_ntohs(tvb, opt_offset + 12) == 0){
proto_tree_add_item(icmp6opt_tree, hf_icmpv6_opt_linkaddr_eui64, tvb, opt_offset, 8, ENC_BIG_ENDIAN);
ti_opt = proto_tree_add_item(icmp6opt_tree, hf_icmpv6_opt_target_linkaddr_eui64, tvb, opt_offset, 8, ENC_BIG_ENDIAN);
proto_tree_add_item(flag_tree, hf_icmpv6_opt_prefix_flag_l, tvb, opt_offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(flag_tree, hf_icmpv6_opt_prefix_flag_a, tvb, opt_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flag_tree, hf_icmpv6_opt_prefix_flag_r, tvb, opt_offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(flag_tree, hf_icmpv6_opt_prefix_flag_reserved, tvb, opt_offset, 1, ENC_BIG_ENDIAN);
opt_offset += 1;
offset = dissect_rpl_control(tvb, offset, pinfo, icmp6_tree, icmp6_type, icmp6_code);
break;
}
-
+
case ICMP6_6LOWPANND_DAR:
case ICMP6_6LOWPANND_DAC:
- {
+ {
/* Status */
proto_tree_add_item(icmp6_tree, hf_icmpv6_da_status, tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1;
/* EUI-64 */
proto_tree_add_item(icmp6_tree, hf_icmpv6_da_eui64, tvb, offset, 8, ENC_BIG_ENDIAN);
offset += 8;
-
+
/* Address */
proto_tree_add_item(icmp6_tree, hf_icmpv6_da_raddr, tvb, offset, 16, ENC_BIG_ENDIAN);
offset += 16;
{ &hf_icmpv6_opt_prefix_flag_a,
{ "Autonomous address-configuration flag(A)", "icmpv6.opt.prefix.flag.a", FT_BOOLEAN, 8, TFS(&tfs_set_notset), 0x40,
"When set indicates that this prefix can be used for stateless address configuration", HFILL }},
+ { &hf_icmpv6_opt_prefix_flag_r,
+ { "Router address flag(R)", "icmpv6.opt.prefix.flag.r", FT_BOOLEAN, 8, TFS(&tfs_set_notset), 0x20,
+ "When set indicates that the Prefix field contains a complete IP address assigned to the sending router", HFILL }},
{ &hf_icmpv6_opt_prefix_flag_reserved,
- { "Reserved", "icmpv6.opt.prefix.flag.reserved", FT_UINT8, BASE_DEC, NULL, 0x3f,
+ { "Reserved", "icmpv6.opt.prefix.flag.reserved", FT_UINT8, BASE_DEC, NULL, 0x1f,
NULL, HFILL }},
{ &hf_icmpv6_opt_prefix_valid_lifetime,
{ "Valid Lifetime", "icmpv6.opt.prefix.valid_lifetime", FT_UINT32, BASE_DEC, NULL, 0x00,