/** * @param array array * @param offset offset * @return int value. */ public static int getInt(byte[] array, int offset) { return getInt(array, offset, ByteOrder.BIG_ENDIAN); }
/** * @param array array * @param offset offset * @param length length * @return int value. */ public static int getInt(byte[] array, int offset, int length) { return getInt(array, offset, length, ByteOrder.BIG_ENDIAN); }
/** * @param rawData rawData * @param offset offset * @param length length * @param headerLen headerLen */ protected Dot11ManagementPacket(byte[] rawData, int offset, int length, int headerLen) { int remainingLen = length - headerLen; if (remainingLen >= 4) { this.fcs = ByteArrays.getInt(rawData, offset + headerLen, ByteOrder.LITTLE_ENDIAN); } else { this.fcs = null; } }
/** * @param value value * @return a Oui object. */ public static Oui getInstance(byte[] value) { if (value.length != 3) { throw new IllegalArgumentException("value length must be 3"); } return getInstance(ByteArrays.getInt(new byte[] {(byte) 0, value[0], value[1], value[2]}, 0)); }
private IcmpV6TimeExceededHeader(byte[] rawData, int offset, int length) throws IllegalRawDataException { if (length < ICMPV6_TIME_EXCEEDED_HEADER_SIZE) { StringBuilder sb = new StringBuilder(80); sb.append("The data is too short to build an ICMPv6 Time Exceeded Header(") .append(ICMPV6_TIME_EXCEEDED_HEADER_SIZE) .append(" bytes). data: ") .append(ByteArrays.toHexString(rawData, " ")) .append(", offset: ") .append(offset) .append(", length: ") .append(length); throw new IllegalRawDataException(sb.toString()); } this.unused = ByteArrays.getInt(rawData, UNUSED_OFFSET + offset); }
private IcmpV4TimeExceededHeader(byte[] rawData, int offset, int length) throws IllegalRawDataException { if (length < ICMPV4_TIME_EXCEEDED_HEADER_SIZE) { StringBuilder sb = new StringBuilder(80); sb.append("The data is too short to build an ICMPv4 Time Exceeded Header(") .append(ICMPV4_TIME_EXCEEDED_HEADER_SIZE) .append(" bytes). data: ") .append(ByteArrays.toHexString(rawData, " ")) .append(", offset: ") .append(offset) .append(", length: ") .append(length); throw new IllegalRawDataException(sb.toString()); } this.unused = ByteArrays.getInt(rawData, UNUSED_OFFSET + offset); }
private IpV4InternetTimestampOptionTimestamps(byte[] rawData, int offset, int length) throws IllegalRawDataException { if ((length % INT_SIZE_IN_BYTES) != 0) { StringBuilder sb = new StringBuilder(100); sb.append("The raw data length must be an integer multiple of 4 octets long." + " rawData: ") .append(ByteArrays.toHexString(rawData, " ")) .append(", offset: ") .append(offset) .append(", length: ") .append(length); throw new IllegalRawDataException(sb.toString()); } this.timestamps = new ArrayList<Integer>(); for (int i = 0; i < length; i += INT_SIZE_IN_BYTES) { timestamps.add(ByteArrays.getInt(rawData, i + offset)); } }
private IcmpV6PacketTooBigHeader(byte[] rawData, int offset, int length) throws IllegalRawDataException { if (length < ICMPV6_PACKET_TOO_BIG_HEADER_SIZE) { StringBuilder sb = new StringBuilder(80); sb.append("The data is too short to build an ICMPv6 Packet Too Big Header(") .append(ICMPV6_PACKET_TOO_BIG_HEADER_SIZE) .append(" bytes). data: ") .append(ByteArrays.toHexString(rawData, " ")) .append(", offset: ") .append(offset) .append(", length: ") .append(length); throw new IllegalRawDataException(sb.toString()); } this.mtu = ByteArrays.getInt(rawData, MTU_OFFSET + offset); }
private IcmpV4SourceQuenchHeader(byte[] rawData, int offset, int length) throws IllegalRawDataException { if (length < ICMPV4_SOURCE_QUENCH_HEADER_SIZE) { StringBuilder sb = new StringBuilder(80); sb.append("The data is too short to build an ICMPv4 Source Quench Header(") .append(ICMPV4_SOURCE_QUENCH_HEADER_SIZE) .append(" bytes). data: ") .append(ByteArrays.toHexString(rawData, " ")) .append(", offset: ") .append(offset) .append(", length: ") .append(length); throw new IllegalRawDataException(sb.toString()); } this.unused = ByteArrays.getInt(rawData, UNUSED_OFFSET + offset); }
private IcmpV4DestinationUnreachableHeader(byte[] rawData, int offset, int length) throws IllegalRawDataException { if (length < ICMPV4_DESTINATION_UNREACHABLE_HEADER_SIZE) { StringBuilder sb = new StringBuilder(80); sb.append("The data is too short to build an ICMPv4 Destination Unreachable Header(") .append(ICMPV4_DESTINATION_UNREACHABLE_HEADER_SIZE) .append(" bytes). data: ") .append(ByteArrays.toHexString(rawData, " ")) .append(", offset: ") .append(offset) .append(", length: ") .append(length); throw new IllegalRawDataException(sb.toString()); } this.unused = ByteArrays.getInt(rawData, UNUSED_OFFSET + offset); }
private IcmpV6ParameterProblemHeader(byte[] rawData, int offset, int length) throws IllegalRawDataException { if (length < ICMPV6_PARAMETER_PROBLEM_HEADER_SIZE) { StringBuilder sb = new StringBuilder(80); sb.append("The data is too short to build an ICMPv6 Parameter Problem Header(") .append(ICMPV6_PARAMETER_PROBLEM_HEADER_SIZE) .append(" bytes). data: ") .append(ByteArrays.toHexString(rawData, " ")) .append(", offset: ") .append(offset) .append(", length: ") .append(length); throw new IllegalRawDataException(sb.toString()); } this.pointer = ByteArrays.getInt(rawData, POINTER_OFFSET + offset); }
private IcmpV4TimestampReplyHeader(byte[] rawData, int offset, int length) throws IllegalRawDataException { super(rawData, offset, length); if (length < ICMPV4_TIMESTAMP_HEADER_SIZE) { StringBuilder sb = new StringBuilder(80); sb.append("The data is too short to build an ") .append(getHeaderName()) .append("(") .append(ICMPV4_TIMESTAMP_HEADER_SIZE) .append(" bytes). data: ") .append(ByteArrays.toHexString(rawData, " ")) .append(", offset: ") .append(offset) .append(", length: ") .append(length); throw new IllegalRawDataException(sb.toString()); } this.originateTimestamp = ByteArrays.getInt(rawData, ORIGINATE_TIMESTAMP_OFFSET + offset); this.receiveTimestamp = ByteArrays.getInt(rawData, RECEIVE_TIMESTAMP_OFFSET + offset); this.transmitTimestamp = ByteArrays.getInt(rawData, TRANSMIT_TIMESTAMP_OFFSET + offset); }
private IcmpV6DestinationUnreachableHeader(byte[] rawData, int offset, int length) throws IllegalRawDataException { if (length < ICMPV6_DESTINATION_UNREACHABLE_HEADER_SIZE) { StringBuilder sb = new StringBuilder(80); sb.append("The data is too short to build an ICMPv6 Destination Unreachable Header(") .append(ICMPV6_DESTINATION_UNREACHABLE_HEADER_SIZE) .append(" bytes). data: ") .append(ByteArrays.toHexString(rawData, " ")) .append(", offset: ") .append(offset) .append(", length: ") .append(length); throw new IllegalRawDataException(sb.toString()); } this.unused = ByteArrays.getInt(rawData, UNUSED_OFFSET + offset); }
private IcmpV4TimestampHeader(byte[] rawData, int offset, int length) throws IllegalRawDataException { super(rawData, offset, length); if (length < ICMPV4_TIMESTAMP_HEADER_SIZE) { StringBuilder sb = new StringBuilder(80); sb.append("The data is too short to build an ") .append(getHeaderName()) .append("(") .append(ICMPV4_TIMESTAMP_HEADER_SIZE) .append(" bytes). data: ") .append(ByteArrays.toHexString(rawData, " ")) .append(", offset: ") .append(offset) .append(", length: ") .append(length); throw new IllegalRawDataException(sb.toString()); } this.originateTimestamp = ByteArrays.getInt(rawData, ORIGINATE_TIMESTAMP_OFFSET + offset); this.receiveTimestamp = ByteArrays.getInt(rawData, RECEIVE_TIMESTAMP_OFFSET + offset); this.transmitTimestamp = ByteArrays.getInt(rawData, TRANSMIT_TIMESTAMP_OFFSET + offset); }
private IcmpV4ParameterProblemHeader(byte[] rawData, int offset, int length) throws IllegalRawDataException { if (length < ICMPV4_PARAMETER_PROBLEM_HEADER_SIZE) { StringBuilder sb = new StringBuilder(80); sb.append("The data is too short to build" + " an ICMPv4 Parameter Problem Header(") .append(ICMPV4_PARAMETER_PROBLEM_HEADER_SIZE) .append(" bytes). data: ") .append(ByteArrays.toHexString(rawData, " ")) .append(", offset: ") .append(offset) .append(", length: ") .append(length); throw new IllegalRawDataException(sb.toString()); } int pointerAndUnused = ByteArrays.getInt(rawData, POINTER_AND_UNUSED_OFFSET + offset); this.pointer = (byte) (pointerAndUnused >>> 24); this.unused = pointerAndUnused & 0x00FFFFFF; }
@Override public IpV6FlowLabel newInstance(byte[] rawData, int offset, int length) { ByteArrays.validateBounds(rawData, offset, length); if (length < INT_SIZE_IN_BYTES) { StringBuilder sb = new StringBuilder(100); sb.append("rawData is too short: ") .append(ByteArrays.toHexString(rawData, " ")) .append(", offset: ") .append(offset) .append(", length: ") .append(length); throw new IllegalArgumentException(sb.toString()); } return IpV6SimpleFlowLabel.newInstance(ByteArrays.getInt(rawData, offset)); }
private BsdLoopbackHeader(byte[] rawData, int offset, int length) throws IllegalRawDataException { if (length < BSD_LOOPBACK_HEADER_SIZE) { StringBuilder sb = new StringBuilder(200); sb.append("The data is too short to build a BSD loopback header(") .append(BSD_LOOPBACK_HEADER_SIZE) .append(" bytes). data: ") .append(ByteArrays.toHexString(rawData, " ")) .append(", offset: ") .append(offset) .append(", length: ") .append(length); throw new IllegalRawDataException(sb.toString()); } this.protocolFamily = ProtocolFamily.getInstance( ByteArrays.getInt(rawData, PROTOCOL_FAMILY_OFFSET + offset, ByteOrder.nativeOrder())); }
private IpV4InternetTimestampOptionAddressPrespecified(byte[] rawData, int offset, int length) throws IllegalRawDataException { if ((length % INT_SIZE_IN_BYTES) != 0) { StringBuilder sb = new StringBuilder(100); sb.append("The raw data length must be an integer multiple of 4 octets long." + " rawData: ") .append(ByteArrays.toHexString(rawData, " ")) .append(", offset: ") .append(offset) .append(", length: ") .append(length); throw new IllegalRawDataException(sb.toString()); } this.address = ByteArrays.getInet4Address(rawData, 0 + offset); this.timestamps = new ArrayList<Integer>(); for (int i = INT_SIZE_IN_BYTES; i < length; i += INT_SIZE_IN_BYTES) { timestamps.add(ByteArrays.getInt(rawData, i + offset)); } }
/** @return OUI */ public Oui getOui() { return Oui.getInstance(ByteArrays.getInt(getAddress(), 0) >>> 8); }
private IpV4InternetTimestampOptionTimestampsWithAddresses(byte[] rawData, int offset, int length) throws IllegalRawDataException { if ((length % INT_SIZE_IN_BYTES) != 0) { StringBuilder sb = new StringBuilder(100); sb.append("The raw data length must be an integer multiple of 4 octets long." + " rawData: ") .append(ByteArrays.toHexString(rawData, " ")) .append(", offset: ") .append(offset) .append(", length: ") .append(length); throw new IllegalRawDataException(sb.toString()); } this.timestampsWithAddresses = new ArrayList<TimestampWithAddress>(); for (int i = 0; i < length; i += INT_SIZE_IN_BYTES * 2) { Inet4Address address = ByteArrays.getInet4Address(rawData, i + offset); Integer timestamp = null; if (i + INT_SIZE_IN_BYTES < length) { timestamp = ByteArrays.getInt(rawData, i + INT_SIZE_IN_BYTES + offset); } timestampsWithAddresses.add(new TimestampWithAddress(address, timestamp)); } }