/** * @param type type * @return a EtherType object. */ public static EtherType register(EtherType type) { return registry.put(type.value(), type); }
/** @return a string representation of this value. */ @Override public String valueAsString() { return "0x" + ByteArrays.toHexString(value(), ""); }
@Override protected List<byte[]> getRawFields() { List<byte[]> rawFields = new ArrayList<byte[]>(); rawFields.add( ByteArrays.toByteArray((short) ((priority << 13) | ((cfi ? 1 : 0) << 12) | vid))); rawFields.add(ByteArrays.toByteArray(type.value())); return rawFields; }
@Override protected List<byte[]> getRawFields() { List<byte[]> rawFields = new ArrayList<byte[]>(); rawFields.add(oui.valueAsByteArray()); rawFields.add(ByteArrays.toByteArray(protocolId.value())); return rawFields; }
@Override protected List<byte[]> getRawFields() { List<byte[]> rawFields = new ArrayList<byte[]>(); rawFields.add(ByteArrays.toByteArray(dstAddr)); rawFields.add(ByteArrays.toByteArray(srcAddr)); rawFields.add(ByteArrays.toByteArray(type.value())); return rawFields; }
/** * @param <T> number * @param number number * @return a class which implements Packet for a specified NamedNumber. */ public <T extends NamedNumber<?, ?>> Class<? extends Packet> getPacketClass(T number) { String val = number.valueAsString(); if (number instanceof EtherType) { EtherType et = (EtherType) number; if ((et.value() & 0xFFFF) <= EtherType.IEEE802_3_MAX_LENGTH) { val = "LLC"; } } StringBuilder sb = new StringBuilder(110); sb.append(PACKET_CLASS_KEY_BASE).append(number.getClass().getName()).append(".").append(val); return loader.<Packet>getClass(sb.toString(), getUnknownPacketClass()); }
@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 public Packet newInstance(byte[] rawData, int offset, int length, EtherType number) { if (rawData == null || number == null) { StringBuilder sb = new StringBuilder(40); sb.append("rawData: ").append(rawData).append(" number: ").append(number); throw new NullPointerException(sb.toString()); } PacketInstantiater instantiater = instantiaters.get(number); if (instantiater != null) { try { return instantiater.newInstance(rawData, offset, length); } catch (IllegalRawDataException e) { return IllegalPacket.newPacket(rawData, offset, length); } } if ((number.value() & 0xFFFF) <= EtherType.IEEE802_3_MAX_LENGTH) { try { return LlcPacket.newPacket(rawData, offset, length); } catch (IllegalRawDataException e) { IllegalPacket.newPacket(rawData, offset, length); } } return newInstance(rawData, offset, length); } }
@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; }
private EthernetPacket(byte[] rawData, int offset, int length) throws IllegalRawDataException { this.header = new EthernetHeader(rawData, offset, length); if ((header.getType().value() & 0xFFFF) <= EtherType.IEEE802_3_MAX_LENGTH) { int payloadLength = header.getType().value(); int padLength = length - header.length() - payloadLength; int payloadOffset = offset + header.length(); throw new IllegalRawDataException( "The value of the ether type (length) field seems to be wrong: " + header.getType().value());
/** * @param type type * @return a EtherType object. */ public static EtherType register(EtherType type) { return registry.put(type.value(), type); }
/** @return a string representation of this value. */ @Override public String valueAsString() { return "0x" + ByteArrays.toHexString(value(), ""); }
@Override protected List<byte[]> getRawFields() { List<byte[]> rawFields = new ArrayList<byte[]>(); rawFields.add( ByteArrays.toByteArray((short) ((priority << 13) | ((cfi ? 1 : 0) << 12) | vid))); rawFields.add(ByteArrays.toByteArray(type.value())); return rawFields; }
@Override protected List<byte[]> getRawFields() { List<byte[]> rawFields = new ArrayList<byte[]>(); rawFields.add(oui.valueAsByteArray()); rawFields.add(ByteArrays.toByteArray(protocolId.value())); return rawFields; }
@Override protected List<byte[]> getRawFields() { List<byte[]> rawFields = new ArrayList<byte[]>(); rawFields.add(ByteArrays.toByteArray(dstAddr)); rawFields.add(ByteArrays.toByteArray(srcAddr)); rawFields.add(ByteArrays.toByteArray(type.value())); return rawFields; }
@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; }