@Override public int length() { return 8 + ipPacket.length(); }
private IpV6Header(Builder builder, Packet payload) { this.version = builder.version; this.trafficClass = builder.trafficClass; this.flowLabel = builder.flowLabel; this.nextHeader = builder.nextHeader; this.hopLimit = builder.hopLimit; this.srcAddr = builder.srcAddr; this.dstAddr = builder.dstAddr; if (builder.correctLengthAtBuild) { if (payload != null) { this.payloadLength = (short) (payload.length()); } else { this.payloadLength = builder.payloadLength; } } else { this.payloadLength = builder.payloadLength; } }
/** * @param packet an IPv6 Packet * @param size the target size in bytes. (i.e. MTU - <IPv6 header(s) size> - <ICMPv6 * header size> - <IPv6 ND option(s) size>) * @return a new IPv6 packet object. */ public static Packet makePacketForRedirectHeaderOption(Packet packet, int size) { if (packet.length() > size) { return makePacketForInvokingPacketField(packet, size - size % 8); } else { int length = packet.length(); return makePacketForInvokingPacketField(packet, length - length % 8); } } }
private GtpV1Packet(Builder builder) { if (builder == null || builder.version == null || builder.protocolType == null || builder.messageType == null) { StringBuilder sb = new StringBuilder(); sb.append("builder: ") .append(builder) .append(", builder.version: ") .append(builder.version) .append(", builder.protocolType: ") .append(builder.protocolType) .append(", builder.messageType: ") .append(builder.messageType); throw new NullPointerException(sb.toString()); } this.payload = builder.payloadBuilder != null ? builder.payloadBuilder.build() : null; this.header = new GtpV1Header(builder, payload != null ? payload.length() : 0); }
private Ssh2BinaryPacket(Builder builder) { if (builder == null || builder.randomPadding == null || builder.mac == null) { StringBuilder sb = new StringBuilder(); sb.append("builder: ") .append(builder) .append(" builder.randomPadding: ") .append(builder.randomPadding) .append(" builder.mac: ") .append(builder.mac); throw new NullPointerException(sb.toString()); } if (!builder.paddingAtBuild && builder.randomPadding == null) { throw new NullPointerException( "builder.randomPadding must not be null" + " if builder.paddingAtBuild is false"); } this.payload = builder.payloadBuilder != null ? builder.payloadBuilder.build() : null; int payloadLength = payload != null ? payload.length() : 0; if (builder.paddingAtBuild) { int blockSize = builder.cipherBlockSize > 8 ? builder.cipherBlockSize : 8; int paddingSize = payloadLength % blockSize; this.randomPadding = new byte[paddingSize]; } else { this.randomPadding = new byte[builder.randomPadding.length]; System.arraycopy( builder.randomPadding, 0, this.randomPadding, 0, builder.randomPadding.length); } this.header = new Ssh2BinaryHeader(builder, payloadLength, (byte) randomPadding.length); this.mac = new byte[builder.mac.length]; System.arraycopy(builder.mac, 0, this.mac, 0, builder.mac.length); }
this.header = new EthernetHeader(builder); int payloadLength = payload != null ? payload.length() : 0; if (builder.paddingAtBuild) { if (payloadLength < MIN_ETHERNET_PAYLOAD_LENGTH) {
@Override public byte[] getRawData() { byte[] rawData = new byte[length()]; rawData[TYPE_OFFSET] = getType().value(); rawData[LENGTH_OFFSET] = length; System.arraycopy(reserved, 0, rawData, RESERVED_OFFSET, RESERVED_SIZE); System.arraycopy(ipPacket.getRawData(), 0, rawData, IP_HEADER_OFFSET, ipPacket.length()); return rawData; }
protected AbstractPppPacket(byte[] rawData, int offset, int length, AbstractPppHeader header) throws IllegalRawDataException { int payloadAndPadLength = length - header.length(); if (payloadAndPadLength > 0) { int payloadOffset = offset + header.length(); this.payload = PacketFactories.getFactory(Packet.class, PppDllProtocol.class) .newInstance(rawData, payloadOffset, payloadAndPadLength, header.getProtocol()); int padLength = payloadAndPadLength - payload.length(); if (padLength > 0) { this.pad = ByteArrays.getSubArray(rawData, payloadOffset + payload.length(), padLength); } else { this.pad = new byte[0]; } } else { this.payload = null; this.pad = new byte[0]; } }
/** * This method builds the value {@link #getRawData getRawData()} will return by concatenating the * header's raw data and the payload's raw data. If you write this subclass which represents a * packet with extra parts (e.g. a trailer), you need to override this method. * * @return a raw data built */ protected byte[] buildRawData() { byte[] rd = new byte[length()]; Header header = getHeader(); Packet payload = getPayload(); int dstPos = 0; if (header != null) { System.arraycopy(getHeader().getRawData(), 0, rd, 0, header.length()); dstPos += header.length(); } if (payload != null) { System.arraycopy(getPayload().getRawData(), 0, rd, dstPos, payload.length()); dstPos += payload.length(); } return rd; }
this.totalLength = (short) (payload.length() + length()); } else { this.totalLength = (short) length();
/** * This method calculates the value {@link #length length()} will return by adding up the header * length and the payload length. If you write this subclass which represents a packet with extra * parts (e.g. a trailer), you need to override this method. * * @return a calculated length */ protected int calcLength() { int length = 0; if (getHeader() != null) { length += getHeader().length(); } if (getPayload() != null) { length += getPayload().length(); } return length; }
@Override public int length() { return 8 + ipPacket.length(); }
@Test public void testLength() throws Exception { assertEquals(getPacket().getRawData().length, getPacket().length()); }
private IpV6Header(Builder builder, Packet payload) { this.version = builder.version; this.trafficClass = builder.trafficClass; this.flowLabel = builder.flowLabel; this.nextHeader = builder.nextHeader; this.hopLimit = builder.hopLimit; this.srcAddr = builder.srcAddr; this.dstAddr = builder.dstAddr; if (builder.correctLengthAtBuild) { if (payload != null) { this.payloadLength = (short) (payload.length()); } else { this.payloadLength = builder.payloadLength; } } else { this.payloadLength = builder.payloadLength; } }
/** * @param packet an IPv6 Packet * @param size the target size in bytes. (i.e. MTU - <IPv6 header(s) size> - <ICMPv6 * header size> - <IPv6 ND option(s) size>) * @return a new IPv6 packet object. */ public static Packet makePacketForRedirectHeaderOption(Packet packet, int size) { if (packet.length() > size) { return makePacketForInvokingPacketField(packet, size - size % 8); } else { int length = packet.length(); return makePacketForInvokingPacketField(packet, length - length % 8); } } }
private GtpV1Packet(Builder builder) { if (builder == null || builder.version == null || builder.protocolType == null || builder.messageType == null) { StringBuilder sb = new StringBuilder(); sb.append("builder: ") .append(builder) .append(", builder.version: ") .append(builder.version) .append(", builder.protocolType: ") .append(builder.protocolType) .append(", builder.messageType: ") .append(builder.messageType); throw new NullPointerException(sb.toString()); } this.payload = builder.payloadBuilder != null ? builder.payloadBuilder.build() : null; this.header = new GtpV1Header(builder, payload != null ? payload.length() : 0); }
@Override public byte[] getRawData() { byte[] rawData = new byte[length()]; rawData[TYPE_OFFSET] = getType().value(); rawData[LENGTH_OFFSET] = length; System.arraycopy(reserved, 0, rawData, RESERVED_OFFSET, RESERVED_SIZE); System.arraycopy(ipPacket.getRawData(), 0, rawData, IP_HEADER_OFFSET, ipPacket.length()); return rawData; }
/** * This method calculates the value {@link #length length()} will return by adding up the header * length and the payload length. If you write this subclass which represents a packet with extra * parts (e.g. a trailer), you need to override this method. * * @return a calculated length */ protected int calcLength() { int length = 0; if (getHeader() != null) { length += getHeader().length(); } if (getPayload() != null) { length += getPayload().length(); } return length; }