private UdpHeader(byte[] rawData, int offset, int length) throws IllegalRawDataException { if (length < UCP_HEADER_SIZE) { StringBuilder sb = new StringBuilder(80); sb.append("The data is too short to build a UDP header(") .append(UCP_HEADER_SIZE) .append(" bytes). data: ") .append(ByteArrays.toHexString(rawData, " ")) .append(", offset: ") .append(offset) .append(", length: ") .append(length); throw new IllegalRawDataException(sb.toString()); } this.srcPort = UdpPort.getInstance(ByteArrays.getShort(rawData, SRC_PORT_OFFSET + offset)); this.dstPort = UdpPort.getInstance(ByteArrays.getShort(rawData, DST_PORT_OFFSET + offset)); this.length = ByteArrays.getShort(rawData, LENGTH_OFFSET + offset); this.checksum = ByteArrays.getShort(rawData, CHECKSUM_OFFSET + offset); }
/** * @param port port * @return a UdpPort object. */ public static UdpPort register(UdpPort port) { return registry.put(port.value(), port); } }
/** * @param value value * @return a UdpPort object. */ public static UdpPort getInstance(Short value) { if (registry.containsKey(value)) { return registry.get(value); } else { return new UdpPort(value, "unknown"); } }
.getDstPort().value() & 0xFFFF; = UdpHelper.pack( unknownb.build(), UdpPort.getInstance((short)srcPort), UdpPort.getInstance((short)dstPort), srcAddr, dstAddr
DNSServerHelper.getPortOrDefault(destAddr, parsedUdp.getHeader().getDstPort().valueAsInt())); forwardPacket(outPacket, null); return; DNSServerHelper.getPortOrDefault(destAddr, parsedUdp.getHeader().getDstPort().valueAsInt())); forwardPacket(outPacket, parsedPacket);
DatagramPacket outPacket = new DatagramPacket(new byte[0], 0, 0 /* length */, destAddr, parsedUdp.getHeader().getDstPort().valueAsInt()); eventLoop.forwardPacket(outPacket, null); return; if (!ruleDatabase.isBlocked(dnsQueryName.toLowerCase(Locale.ENGLISH))) { Log.i(TAG, "handleDnsRequest: DNS Name " + dnsQueryName + " Allowed, sending to " + destAddr); DatagramPacket outPacket = new DatagramPacket(dnsRawData, 0, dnsRawData.length, destAddr, parsedUdp.getHeader().getDstPort().valueAsInt()); eventLoop.forwardPacket(outPacket, parsedPacket); } else {
public UdpPacketTest() throws Exception { this.srcPort = UdpPort.SNMP; this.dstPort = UdpPort.getInstance((short) 0); this.length = (short) 12; this.checksum = (short) 0xABCD; try { this.srcAddr = (Inet6Address) InetAddress.getByName("2001:db8::3:2:1"); this.dstAddr = (Inet6Address) InetAddress.getByName("2001:db8::3:2:2"); } catch (UnknownHostException e) { throw new AssertionError(); } UnknownPacket.Builder unknownb = new UnknownPacket.Builder(); unknownb.rawData(new byte[] {(byte) 0, (byte) 1, (byte) 2, (byte) 3}); UdpPacket.Builder b = new UdpPacket.Builder(); b.dstPort(dstPort) .srcPort(srcPort) .length(length) .checksum(checksum) .correctChecksumAtBuild(false) .correctLengthAtBuild(false) .payloadBuilder(unknownb); this.packet = b.build(); }
private List<byte[]> getRawFields(boolean zeroInsteadOfChecksum) { List<byte[]> rawFields = new ArrayList<byte[]>(); rawFields.add(ByteArrays.toByteArray(srcPort.value())); rawFields.add(ByteArrays.toByteArray(dstPort.value())); rawFields.add(ByteArrays.toByteArray(length)); rawFields.add(ByteArrays.toByteArray(zeroInsteadOfChecksum ? (short) 0 : checksum)); return rawFields; }
/** * @param value value * @return a UdpPort object. */ public static UdpPort getInstance(Short value) { if (registry.containsKey(value)) { return registry.get(value); } else { return new UdpPort(value, "unknown"); } }
udpb.dstPort(UdpPort.getInstance((short) 0)) .srcPort(UdpPort.SNMP_TRAP) .dstAddr(dstAddr)
/** * @param port port * @return a UdpPort object. */ public static UdpPort register(UdpPort port) { return registry.put(port.value(), port); } }
public IpV6ExtHopByHopOptionsPacketTest() throws Exception { this.nextHeader = IpNumber.UDP; this.hdrExtLen = (byte) 0; this.options = new ArrayList<IpV6Option>(); options.add(IpV6Pad1Option.getInstance()); options.add(new IpV6PadNOption.Builder().data(new byte[] {0, 0, 0}).dataLen((byte) 3).build()); try { srcAddr = (Inet6Address) InetAddress.getByName("2001:db8::3:2:1"); dstAddr = (Inet6Address) InetAddress.getByName("2001:db8::3:2:2"); } catch (UnknownHostException e) { throw new AssertionError(); } UnknownPacket.Builder anonb = new UnknownPacket.Builder(); anonb.rawData(new byte[] {(byte) 0, (byte) 1, (byte) 2, (byte) 3}); UdpPacket.Builder udpb = new UdpPacket.Builder(); udpb.dstPort(UdpPort.getInstance((short) 0)) .srcPort(UdpPort.SNMP_TRAP) .dstAddr(dstAddr) .srcAddr(srcAddr) .payloadBuilder(anonb) .correctChecksumAtBuild(true) .correctLengthAtBuild(true); IpV6ExtHopByHopOptionsPacket.Builder b = new IpV6ExtHopByHopOptionsPacket.Builder(); b.nextHeader(nextHeader) .hdrExtLen(hdrExtLen) .options(options) .correctLengthAtBuild(false) .payloadBuilder(udpb); this.packet = b.build(); }
private List<byte[]> getRawFields(boolean zeroInsteadOfChecksum) { List<byte[]> rawFields = new ArrayList<byte[]>(); rawFields.add(ByteArrays.toByteArray(srcPort.value())); rawFields.add(ByteArrays.toByteArray(dstPort.value())); rawFields.add(ByteArrays.toByteArray(length)); rawFields.add(ByteArrays.toByteArray(zeroInsteadOfChecksum ? (short) 0 : checksum)); return rawFields; }
public IpV6ExtDestinationOptionsPacketTest() throws Exception { this.nextHeader = IpNumber.UDP; this.hdrExtLen = (byte) 0; this.options = new ArrayList<IpV6Option>(); options.add(IpV6Pad1Option.getInstance()); options.add(new IpV6PadNOption.Builder().data(new byte[] {0, 0, 0}).dataLen((byte) 3).build()); try { srcAddr = (Inet6Address) InetAddress.getByName("2001:db8::3:2:1"); dstAddr = (Inet6Address) InetAddress.getByName("2001:db8::3:2:2"); } catch (UnknownHostException e) { throw new AssertionError(); } UnknownPacket.Builder anonb = new UnknownPacket.Builder(); anonb.rawData(new byte[] {(byte) 0, (byte) 1, (byte) 2, (byte) 3}); UdpPacket.Builder udpb = new UdpPacket.Builder(); udpb.dstPort(UdpPort.getInstance((short) 0)) .srcPort(UdpPort.SNMP_TRAP) .dstAddr(dstAddr) .srcAddr(srcAddr) .payloadBuilder(anonb) .correctChecksumAtBuild(true) .correctLengthAtBuild(true); IpV6ExtDestinationOptionsPacket.Builder b = new IpV6ExtDestinationOptionsPacket.Builder(); b.nextHeader(nextHeader) .hdrExtLen(hdrExtLen) .options(options) .correctLengthAtBuild(false) .payloadBuilder(udpb); this.packet = b.build(); }
UdpPacket.UdpHeader udpHeader = (UdpPacket.UdpHeader) transportLayerPacket.getHeader(); buffer.put(ipV4Header.getSrcAddr().getAddress()); buffer.putShort(udpHeader.getSrcPort().value()); buffer.put(ipV4Header.getDstAddr().getAddress()); buffer.putShort(udpHeader.getDstPort().value()); } else { TcpPacket.TcpHeader tcpHeader = (TcpPacket.TcpHeader) transportLayerPacket.getHeader();
public IpV6ExtUnknownPacketTest() throws Exception { this.nextHeader = IpNumber.UDP; this.hdrExtLen = (byte) 1; this.data = new byte[(hdrExtLen + 1) * 8 - 2]; for (byte i = 0; i < data.length; i++) { data[i] = i; } try { this.srcAddr = (Inet6Address) InetAddress.getByName("2001:db8::3:2:1"); this.dstAddr = (Inet6Address) InetAddress.getByName("2001:db8::3:2:2"); } catch (UnknownHostException e) { throw new AssertionError(); } UnknownPacket.Builder unknownb = new UnknownPacket.Builder(); unknownb.rawData(new byte[] {(byte) 0, (byte) 1, (byte) 2, (byte) 3}); UdpPacket.Builder udpb = new UdpPacket.Builder(); udpb.dstPort(UdpPort.getInstance((short) 0)) .srcPort(UdpPort.SNMP_TRAP) .dstAddr(dstAddr) .srcAddr(srcAddr) .payloadBuilder(unknownb) .correctChecksumAtBuild(true) .correctLengthAtBuild(true); IpV6ExtUnknownPacket.Builder b = new IpV6ExtUnknownPacket.Builder(); b.nextHeader(nextHeader).hdrExtLen(hdrExtLen).data(data).payloadBuilder(udpb); this.packet = b.build(); }