/** * @param value value * @return a ArpHardwareType object. */ public static ArpHardwareType getInstance(Short value) { if (registry.containsKey(value)) { return registry.get(value); } else { return new ArpHardwareType(value, "unknown"); } }
@Override public boolean equals(Object obj) { if (obj == this) { return true; } if (!this.getClass().isInstance(obj)) { return false; } LinuxSllHeader other = (LinuxSllHeader) obj; return Arrays.equals(addressField, other.addressField) && packetType.equals(other.packetType) && protocol.equals(other.protocol) && addressType.equals(other.addressType) && addressLength == other.addressLength; }
@Override protected int calcHashCode() { int result = 17; result = 31 * result + packetType.hashCode(); result = 31 * result + addressType.hashCode(); result = 31 * result + addressLength; result = 31 * result + Arrays.hashCode(addressField); result = 31 * result + protocol.hashCode(); return result; } }
/** * @param type type * @return a ArpHardwareType object. */ public static ArpHardwareType register(ArpHardwareType type) { return registry.put(type.value(), type); }
LinuxSllPacketType.getInstance(ByteArrays.getShort(rawData, PPKTTYPE_OFFSET + offset)); this.addressType = ArpHardwareType.getInstance(ByteArrays.getShort(rawData, PHATYPE_OFFSET + offset)); this.addressLength = ByteArrays.getShort(rawData, HALEN_OFFSET + offset); if (getAddressLengthAsInt() > ADDR_SIZE) {
@Override public String valueAsString() { return String.valueOf(value() & 0xFFFF); }
private ArpHeader(byte[] rawData, int offset, int length) throws IllegalRawDataException { if (length < ARP_HEADER_SIZE) { StringBuilder sb = new StringBuilder(200); sb.append("The data is too short to build an ARP header(") .append(ARP_HEADER_SIZE) .append(" bytes). data: ") .append(ByteArrays.toHexString(rawData, " ")) .append(", offset: ") .append(offset) .append(", length: ") .append(length); throw new IllegalRawDataException(sb.toString()); } this.hardwareType = ArpHardwareType.getInstance(ByteArrays.getShort(rawData, HARDWARE_TYPE_OFFSET + offset)); this.protocolType = EtherType.getInstance(ByteArrays.getShort(rawData, PROTOCOL_TYPE_OFFSET + offset)); this.hardwareAddrLength = ByteArrays.getByte(rawData, HW_ADDR_LENGTH_OFFSET + offset); this.protocolAddrLength = ByteArrays.getByte(rawData, PROTO_ADDR_LENGTH_OFFSET + offset); this.operation = ArpOperation.getInstance(ByteArrays.getShort(rawData, OPERATION_OFFSET + offset)); this.srcHardwareAddr = ByteArrays.getMacAddress(rawData, SRC_HARDWARE_ADDR_OFFSET + offset); this.srcProtocolAddr = ByteArrays.getInet4Address(rawData, SRC_PROTOCOL_ADDR_OFFSET + offset); this.dstHardwareAddr = ByteArrays.getMacAddress(rawData, DST_HARDWARE_ADDR_OFFSET + offset); this.dstProtocolAddr = ByteArrays.getInet4Address(rawData, DST_PROTOCOL_ADDR_OFFSET + offset); }
@Override protected int calcHashCode() { int result = 17; result = 31 * result + hardwareType.hashCode(); result = 31 * result + protocolType.hashCode(); result = 31 * result + hardwareAddrLength; result = 31 * result + protocolAddrLength; result = 31 * result + operation.hashCode(); result = 31 * result + srcHardwareAddr.hashCode(); result = 31 * result + srcProtocolAddr.hashCode(); result = 31 * result + dstHardwareAddr.hashCode(); result = 31 * result + dstProtocolAddr.hashCode(); return result; } }
@Override public boolean equals(Object obj) { if (obj == this) { return true; } if (!this.getClass().isInstance(obj)) { return false; } ArpHeader other = (ArpHeader) obj; return operation.equals(other.getOperation()) && srcHardwareAddr.equals(other.srcHardwareAddr) && srcProtocolAddr.equals(other.srcProtocolAddr) && dstHardwareAddr.equals(other.dstHardwareAddr) && dstProtocolAddr.equals(other.dstProtocolAddr) && hardwareType.equals(other.hardwareType) && protocolType.equals(other.protocolType) && hardwareAddrLength == other.hardwareAddrLength && protocolAddrLength == other.protocolAddrLength; }
LinuxSllPacketType.getInstance(ByteArrays.getShort(rawData, PPKTTYPE_OFFSET + offset)); this.addressType = ArpHardwareType.getInstance(ByteArrays.getShort(rawData, PHATYPE_OFFSET + offset)); this.addressLength = ByteArrays.getShort(rawData, HALEN_OFFSET + offset); if (getAddressLengthAsInt() > ADDR_SIZE) {
/** * @param value value * @return a ArpHardwareType object. */ public static ArpHardwareType getInstance(Short value) { if (registry.containsKey(value)) { return registry.get(value); } else { return new ArpHardwareType(value, "unknown"); } }
@Override protected List<byte[]> getRawFields() { List<byte[]> rawFields = new ArrayList<byte[]>(); rawFields.add(ByteArrays.toByteArray(packetType.value())); rawFields.add(ByteArrays.toByteArray(addressType.value())); rawFields.add(ByteArrays.toByteArray(addressLength)); rawFields.add(addressField); rawFields.add(ByteArrays.toByteArray(protocol.value())); return rawFields; }
@Override protected int calcHashCode() { int result = 17; result = 31 * result + packetType.hashCode(); result = 31 * result + addressType.hashCode(); result = 31 * result + addressLength; result = 31 * result + Arrays.hashCode(addressField); result = 31 * result + protocol.hashCode(); return result; } }
@Override public boolean equals(Object obj) { if (obj == this) { return true; } if (!this.getClass().isInstance(obj)) { return false; } LinuxSllHeader other = (LinuxSllHeader) obj; return Arrays.equals(addressField, other.addressField) && packetType.equals(other.packetType) && protocol.equals(other.protocol) && addressType.equals(other.addressType) && addressLength == other.addressLength; }
@Override protected List<byte[]> getRawFields() { List<byte[]> rawFields = new ArrayList<byte[]>(); rawFields.add(ByteArrays.toByteArray(hardwareType.value())); rawFields.add(ByteArrays.toByteArray(protocolType.value())); rawFields.add(ByteArrays.toByteArray(hardwareAddrLength)); rawFields.add(ByteArrays.toByteArray(protocolAddrLength)); rawFields.add(ByteArrays.toByteArray(operation.value())); rawFields.add(ByteArrays.toByteArray(srcHardwareAddr)); rawFields.add(ByteArrays.toByteArray(srcProtocolAddr)); rawFields.add(ByteArrays.toByteArray(dstHardwareAddr)); rawFields.add(ByteArrays.toByteArray(dstProtocolAddr)); return rawFields; }
@Override protected int calcHashCode() { int result = 17; result = 31 * result + hardwareType.hashCode(); result = 31 * result + protocolType.hashCode(); result = 31 * result + hardwareAddrLength; result = 31 * result + protocolAddrLength; result = 31 * result + operation.hashCode(); result = 31 * result + srcHardwareAddr.hashCode(); result = 31 * result + srcProtocolAddr.hashCode(); result = 31 * result + dstHardwareAddr.hashCode(); result = 31 * result + dstProtocolAddr.hashCode(); return result; } }
@Override public boolean equals(Object obj) { if (obj == this) { return true; } if (!this.getClass().isInstance(obj)) { return false; } ArpHeader other = (ArpHeader) obj; return operation.equals(other.getOperation()) && srcHardwareAddr.equals(other.srcHardwareAddr) && srcProtocolAddr.equals(other.srcProtocolAddr) && dstHardwareAddr.equals(other.dstHardwareAddr) && dstProtocolAddr.equals(other.dstProtocolAddr) && hardwareType.equals(other.hardwareType) && protocolType.equals(other.protocolType) && hardwareAddrLength == other.hardwareAddrLength && protocolAddrLength == other.protocolAddrLength; }
/** * @param type type * @return a ArpHardwareType object. */ public static ArpHardwareType register(ArpHardwareType type) { return registry.put(type.value(), type); }
@Override public String valueAsString() { return String.valueOf(value() & 0xFFFF); }