DNSServerHelper.getPortOrDefault(destAddr, parsedUdp.getHeader().getDstPort().valueAsInt())); forwardPacket(outPacket, null); return; DNSServerHelper.getPortOrDefault(destAddr, parsedUdp.getHeader().getDstPort().valueAsInt())); forwardPacket(outPacket, parsedPacket);
@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(); }
this.header = new UdpHeader(builder, payload != null ? payload.getRawData() : new byte[0]);
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();
.getDstPort().value() & 0xFFFF;
this.header = new UdpHeader(builder, payload != null ? payload.getRawData() : new byte[0]);
private void consumeUdp(Packet packet, NetworkInterface getter) { if (agent == null || !agent.isRunning()) { if (LOGGER.isDebugEnabled()) { LOGGER.debug("Not listening SNMP. Dropped a packet: " + packet); } return; } UdpPacket udpPacket = packet.get(UdpPacket.class); SneoUdpTransportMapping tm = (SneoUdpTransportMapping)agent.getTransportMapping(); if ( (udpPacket.getHeader().getDstPort().value() & 0xFFFF) == tm.getAddress().getPort() ) { agent.getContextfulWorkerPool() .registerContext(new SnmpContext(packet, getter)); tm.processMessage(packet); } else { if (LOGGER.isDebugEnabled()) { StringBuilder sb = new StringBuilder(); sb.append("Dropped a packet not to me(") .append(tm.getAddress().getPort()) .append("): ") .append(packet); LOGGER.debug(sb.toString()); } } }
public void processMessage(Packet packet) { UdpPacket udpPacket = packet.get(UdpPacket.class); byte[] snmpMessage = udpPacket.getPayload().getRawData(); InetAddress srcAddr; IpV4Packet ipV4Packet = packet.get(IpV4Packet.class); if (ipV4Packet != null) { srcAddr = ipV4Packet.getHeader().getSrcAddr(); } else { srcAddr = packet.get(IpV6Packet.class).getHeader().getSrcAddr(); } int srcPort = udpPacket.getHeader().getSrcPort().value() & 0xFFFF; ByteBuffer bis; if (isAsyncMsgProcessingSupported()) { byte[] rawData = new byte[snmpMessage.length]; System.arraycopy(snmpMessage, 0, rawData, 0, rawData.length); bis = ByteBuffer.wrap(rawData); } else { bis = ByteBuffer.wrap(snmpMessage); } fireProcessMessage( new UdpAddress(srcAddr, srcPort), bis ); }
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; } }
@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(); }
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 {
.srcPort(udpOutPacket.getHeader().getDstPort()) .dstPort(udpOutPacket.getHeader().getSrcPort()) .srcAddr(requestPacket.getHeader().getDstAddr()) .dstAddr(requestPacket.getHeader().getSrcAddr())
UdpPacket udpOutPacket = (UdpPacket) requestPacket.getPayload(); UdpPacket.Builder payLoadBuilder = new UdpPacket.Builder(udpOutPacket) .srcPort(udpOutPacket.getHeader().getDstPort()) .dstPort(udpOutPacket.getHeader().getSrcPort()) .srcAddr(requestPacket.getHeader().getDstAddr()) .dstAddr(requestPacket.getHeader().getSrcAddr())
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; } }
@Test public void testGetHeader() { UdpHeader h = packet.getHeader(); assertEquals(srcPort, h.getSrcPort()); assertEquals(dstPort, h.getDstPort()); assertEquals(length, h.getLength()); assertEquals(checksum, h.getChecksum()); UdpPacket.Builder b = packet.getBuilder(); UdpPacket p; b.length((short) 0); p = b.build(); assertEquals((short) 0, (short) p.getHeader().getLengthAsInt()); b.length((short) -1); p = b.build(); assertEquals((short) -1, (short) p.getHeader().getLengthAsInt()); b.length((short) 32767); p = b.build(); assertEquals((short) 32767, (short) p.getHeader().getLengthAsInt()); b.length((short) -32768); p = b.build(); assertEquals((short) -32768, (short) p.getHeader().getLengthAsInt()); }
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; } }