bbChecksum.put(ipv6.getDestinationAddress()); bbChecksum.put((byte) 0); // padding bbChecksum.put(ipv6.getNextHeader()); bbChecksum.putInt(length); bbChecksum.rewind();
bbChecksum.put(ipv6.getDestinationAddress()); bbChecksum.put((byte) 0); // padding bbChecksum.put(ipv6.getNextHeader()); bbChecksum.putInt(length); bbChecksum.rewind();
sb.append(Ip6Address.valueOf(ipv6.getDestinationAddress()).toString()); sb.append("\nipv6_proto: "); sb.append(ipv6.getNextHeader());
checkArgument(ipv6Request.getNextHeader() == IPv6.PROTOCOL_ICMP6, "Protocol must be ICMP6");
@Override public void process(PacketContext context) { // Stop processing if the packet has been handled, since we // can't do any more to it. if (context.isHandled()) { return; } InboundPacket pkt = context.inPacket(); Ethernet ethPkt = pkt.parsed(); if (ethPkt == null) { return; } if (ethPkt.getEtherType() == TYPE_ARP) { // handle ARP packets handlePacket(context); } else if (ethPkt.getEtherType() == TYPE_IPV6) { IPv6 ipv6 = (IPv6) ethPkt.getPayload(); if (ipv6.getNextHeader() == IPv6.PROTOCOL_ICMP6) { ICMP6 icmp6 = (ICMP6) ipv6.getPayload(); if (icmp6.getIcmpType() == NEIGHBOR_SOLICITATION || icmp6.getIcmpType() == NEIGHBOR_ADVERTISEMENT) { // handle ICMPv6 solicitations and advertisements (NDP) handlePacket(context); } } } } }
if (ipv6.getNextHeader() != IPv6.PROTOCOL_ICMP6) { return null;
} else if (ipv6NeighborDiscovery && ethPkt.getEtherType() == TYPE_IPV6) { IPv6 ipv6Pkt = (IPv6) ethPkt.getPayload(); if (ipv6Pkt.getNextHeader() == IPv6.PROTOCOL_ICMP6) { ICMP6 icmp6Pkt = (ICMP6) ipv6Pkt.getPayload(); if (icmp6Pkt.getIcmpType() == NEIGHBOR_SOLICITATION ||
if (ipv6Request.getNextHeader() != IPv6.PROTOCOL_ICMP6) { return null;
if (ipv6Request.getNextHeader() != IPv6.PROTOCOL_ICMP6) { return null;