@Override protected String buildString() { StringBuilder sb = new StringBuilder(); String ls = System.getProperty("line.separator"); sb.append("[UDP Header (").append(length()).append(" bytes)]").append(ls); sb.append(" Source port: ").append(getSrcPort()).append(ls); sb.append(" Destination port: ").append(getDstPort()).append(ls); sb.append(" Length: ").append(getLengthAsInt()).append(" [bytes]").append(ls); sb.append(" Checksum: 0x").append(ByteArrays.toHexString(checksum, "")).append(ls); return sb.toString(); }
byte[] data; int destPos; int totalLength = payload.length + length(); boolean lowerLayerIsIpV4 = srcAddr instanceof Inet4Address;
@Override protected String buildString() { StringBuilder sb = new StringBuilder(); String ls = System.getProperty("line.separator"); sb.append("[UDP Header (").append(length()).append(" bytes)]").append(ls); sb.append(" Source port: ").append(getSrcPort()).append(ls); sb.append(" Destination port: ").append(getDstPort()).append(ls); sb.append(" Length: ").append(getLengthAsInt()).append(" [bytes]").append(ls); sb.append(" Checksum: 0x").append(ByteArrays.toHexString(checksum, "")).append(ls); return sb.toString(); }
byte[] data; int destPos; int totalLength = payload.length + length(); boolean lowerLayerIsIpV4 = srcAddr instanceof Inet4Address;
private UdpPacket(byte[] rawData, int offset, int length) throws IllegalRawDataException { this.header = new UdpHeader(rawData, offset, length); int payloadLength = header.getLengthAsInt() - header.length(); if (payloadLength < 0) { throw new IllegalRawDataException( "The value of length field seems to be wrong: " + header.getLengthAsInt()); } if (payloadLength > length - header.length()) { payloadLength = length - header.length(); } if (payloadLength != 0) { // payloadLength is positive. PacketFactory<Packet, UdpPort> factory = PacketFactories.getFactory(Packet.class, UdpPort.class); Class<? extends Packet> class4UnknownPort = factory.getTargetClass(); Class<? extends Packet> class4DstPort = factory.getTargetClass(header.getDstPort()); UdpPort serverPort; if (class4DstPort.equals(class4UnknownPort)) { serverPort = header.getSrcPort(); } else { serverPort = header.getDstPort(); } this.payload = PacketFactories.getFactory(Packet.class, UdpPort.class) .newInstance(rawData, offset + header.length(), payloadLength, serverPort); } else { this.payload = null; } }
private UdpHeader(Builder builder, byte[] payload) { this.srcPort = builder.srcPort; this.dstPort = builder.dstPort; if (builder.correctLengthAtBuild) { this.length = (short) (payload.length + length()); } else { this.length = builder.length; } if (builder.correctChecksumAtBuild) { if ((builder.srcAddr instanceof Inet4Address && PacketPropertiesLoader.getInstance().udpV4CalcChecksum()) || (builder.srcAddr instanceof Inet6Address && PacketPropertiesLoader.getInstance().udpV6CalcChecksum())) { this.checksum = calcChecksum(builder.srcAddr, builder.dstAddr, buildRawData(true), payload); } else { this.checksum = (short) 0; } } else { this.checksum = builder.checksum; } }
private UdpPacket(byte[] rawData, int offset, int length) throws IllegalRawDataException { this.header = new UdpHeader(rawData, offset, length); int payloadLength = header.getLengthAsInt() - header.length(); if (payloadLength < 0) { throw new IllegalRawDataException( "The value of length field seems to be wrong: " + header.getLengthAsInt()); } if (payloadLength > length - header.length()) { payloadLength = length - header.length(); } if (payloadLength != 0) { // payloadLength is positive. PacketFactory<Packet, UdpPort> factory = PacketFactories.getFactory(Packet.class, UdpPort.class); Class<? extends Packet> class4UnknownPort = factory.getTargetClass(); Class<? extends Packet> class4DstPort = factory.getTargetClass(header.getDstPort()); UdpPort serverPort; if (class4DstPort.equals(class4UnknownPort)) { serverPort = header.getSrcPort(); } else { serverPort = header.getDstPort(); } this.payload = PacketFactories.getFactory(Packet.class, UdpPort.class) .newInstance(rawData, offset + header.length(), payloadLength, serverPort); } else { this.payload = null; } }
private UdpHeader(Builder builder, byte[] payload) { this.srcPort = builder.srcPort; this.dstPort = builder.dstPort; if (builder.correctLengthAtBuild) { this.length = (short) (payload.length + length()); } else { this.length = builder.length; } if (builder.correctChecksumAtBuild) { if ((builder.srcAddr instanceof Inet4Address && PacketPropertiesLoader.getInstance().udpV4CalcChecksum()) || (builder.srcAddr instanceof Inet6Address && PacketPropertiesLoader.getInstance().udpV6CalcChecksum())) { this.checksum = calcChecksum(builder.srcAddr, builder.dstAddr, buildRawData(true), payload); } else { this.checksum = (short) 0; } } else { this.checksum = builder.checksum; } }