@Test public void testNewPacket() { try { UdpPacket p = UdpPacket.newPacket(packet.getRawData(), 0, packet.getRawData().length); assertEquals(packet, p); } catch (IllegalRawDataException e) { throw new AssertionError(e); } }
@Override public UdpPacket build() { return new UdpPacket(this); } }
if (parsedUdp.getPayload() == null) { Log.i(TAG, "handleDnsRequest: Sending UDP packet without payload: " + parsedUdp); DNSServerHelper.getPortOrDefault(destAddr, parsedUdp.getHeader().getDstPort().valueAsInt())); forwardPacket(outPacket, null); return; byte[] dnsRawData = (parsedUdp).getPayload().getRawData(); DnsMessage dnsMsg; try { DNSServerHelper.getPortOrDefault(destAddr, parsedUdp.getHeader().getDstPort().valueAsInt())); forwardPacket(outPacket, parsedPacket);
if (parsedUdp.getPayload() == null) { return; byte[] dnsRawData = (parsedUdp).getPayload().getRawData(); DnsMessage dnsMsg; try {
@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()); }
@Test public void testHasValidChecksumFFFF() throws Exception { PcapHandle pcapHandle = Pcaps.openOffline(resourceDirPath.concat("/UdpPacketTestChecksum0xFFFF.pcap")); Packet packet = pcapHandle.getNextPacket(); assertNotNull(packet); assertTrue(packet.contains(IpV4Packet.class)); IpV4Packet ipV4Packet = packet.get(IpV4Packet.class); assertNotNull(ipV4Packet); IpV4Packet.IpV4Header ipV4Header = ipV4Packet.getHeader(); assertNotNull(ipV4Header); assertTrue(ipV4Packet.contains(UdpPacket.class)); UdpPacket udpPacket = ipV4Packet.get(UdpPacket.class); assertNotNull(udpPacket); assertEquals((short) 0xFFFF, udpPacket.getHeader().getChecksum()); assertTrue(udpPacket.hasValidChecksum(ipV4Header.getSrcAddr(), ipV4Header.getDstAddr(), false)); }
@Override public Packet newInstance(byte[] rawData, int offset, int length) throws IllegalRawDataException { return UdpPacket.newPacket(rawData, offset, length); }
@Test public void testHasValidChecksum() { UdpPacket.Builder b = packet.getBuilder(); b.srcAddr(srcAddr).dstAddr(dstAddr); UdpPacket p = b.correctChecksumAtBuild(false).build(); assertFalse(packet.hasValidChecksum(srcAddr, dstAddr, false)); assertFalse(packet.hasValidChecksum(srcAddr, dstAddr, true)); b.checksum((short) 0).correctChecksumAtBuild(false); p = b.build(); assertFalse(p.hasValidChecksum(srcAddr, dstAddr, false)); assertTrue(p.hasValidChecksum(srcAddr, dstAddr, true)); b.correctChecksumAtBuild(true); p = b.build(); assertTrue(p.hasValidChecksum(srcAddr, dstAddr, false)); assertTrue(p.hasValidChecksum(srcAddr, dstAddr, true)); }
.correctLengthAtBuild(true); byte[] rawPayload = udpb.build().getRawData();
@Override protected Packet getWholePacket() { IpV6Packet.Builder IpV6b = new IpV6Packet.Builder(); IpV6b.version(IpVersion.IPV6) .trafficClass(IpV6SimpleTrafficClass.newInstance((byte) 0x12)) .flowLabel(IpV6SimpleFlowLabel.newInstance(0x12345)) .nextHeader(IpNumber.UDP) .hopLimit((byte) 100) .srcAddr(srcAddr) .dstAddr(dstAddr) .payloadBuilder(packet.getBuilder().correctChecksumAtBuild(true).correctLengthAtBuild(true)) .correctLengthAtBuild(true); EthernetPacket.Builder eb = new EthernetPacket.Builder(); eb.dstAddr(MacAddress.getByName("fe:00:00:00:00:02")) .srcAddr(MacAddress.getByName("fe:00:00:00:00:01")) .type(EtherType.IPV6) .payloadBuilder(IpV6b) .paddingAtBuild(true); eb.get(UdpPacket.Builder.class).dstAddr(dstAddr).srcAddr(srcAddr); return eb.build(); }
if (parsedUdp.getPayload() == null) { Log.i(TAG, "handleDnsRequest: Sending UDP packet without payload: " + parsedUdp); DatagramPacket outPacket = new DatagramPacket(new byte[0], 0, 0 /* length */, destAddr, parsedUdp.getHeader().getDstPort().valueAsInt()); eventLoop.forwardPacket(outPacket, null); return; byte[] dnsRawData = (parsedUdp).getPayload().getRawData(); Message dnsMsg; try { 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 {
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())
final UdpPacket udppack = ippacket.get(UdpPacket.class); if (udppack != null && udppack.getPayload() != null) { final int srcAddrHash = ippacket.getHeader().getSrcAddr().hashCode(); final int dstAddrHash = ippacket.getHeader().getDstAddr().hashCode(); final int payloadLen = udppack.getPayload().getRawData().length;
@Override public Packet newInstance(byte[] rawData, int offset, int length) throws IllegalRawDataException { return UdpPacket.newPacket(rawData, offset, length); }
.correctLengthAtBuild(true); byte[] rawPayload = udpb.build().getRawData();
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 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()); } } }
@Override public Packet newInstance( byte[] rawData, int offset, int length ) throws IllegalRawDataException { return UdpPacket.newPacket(rawData, offset, length); }
/** * A static factory method. This method validates the arguments by {@link * ByteArrays#validateBounds(byte[], int, int)}, which may throw exceptions undocumented here. * * @param rawData rawData * @param offset offset * @param length length * @return a new UdpPacket object. * @throws IllegalRawDataException if parsing the raw data fails. */ public static UdpPacket newPacket(byte[] rawData, int offset, int length) throws IllegalRawDataException { ByteArrays.validateBounds(rawData, offset, length); return new UdpPacket(rawData, offset, length); }