public byte[] getRawData() { byte[] rawData = new byte[length()]; Iterator<TimestampWithAddress> iter = timestampsWithAddresses.iterator(); for (int i = 0; i < rawData.length; i += INT_SIZE_IN_BYTES * 2) { TimestampWithAddress twa = iter.next(); System.arraycopy(ByteArrays.toByteArray(twa.address), 0, rawData, i, INT_SIZE_IN_BYTES); if (twa.timestamp != null) { System.arraycopy( ByteArrays.toByteArray(twa.timestamp), 0, rawData, i + INT_SIZE_IN_BYTES, INT_SIZE_IN_BYTES); } } return rawData; }
@Override protected String buildString() { StringBuilder sb = new StringBuilder(); String ls = System.getProperty("line.separator"); sb.append("[ICMPv4 Redirect Header (").append(length()).append(" bytes)]").append(ls); sb.append(" Gateway Internet Address: ").append(gatewayInternetAddress).append(ls); return sb.toString(); }
@Override public byte[] getRawData() { byte[] rawData = new byte[length()]; rawData[0] = kind.value(); rawData[1] = length; int offset = 2; for (Sack sack : sacks) { System.arraycopy( ByteArrays.toByteArray(sack.leftEdge), 0, rawData, offset, INT_SIZE_IN_BYTES); System.arraycopy( ByteArrays.toByteArray(sack.rightEdge), 0, rawData, offset + INT_SIZE_IN_BYTES, INT_SIZE_IN_BYTES); offset += INT_SIZE_IN_BYTES * 2; } return rawData; }
@Override protected String buildString() { StringBuilder sb = new StringBuilder(); String ls = System.getProperty("line.separator"); sb.append("[ICMPv6 Neighbor Advertisement Header (") .append(length()) .append(" bytes)]") .append(ls); sb.append(" Router flag: ").append(routerFlag).append(ls); sb.append(" Solicited flag: ").append(solicitedFlag).append(ls); sb.append(" Override flag: ").append(overrideFlag).append(ls); sb.append(" Reserved: ").append(reserved).append(ls); sb.append(" Target Address: ").append(targetAddress).append(ls); for (IpV6NeighborDiscoveryOption opt : options) { sb.append(" Option: ").append(opt).append(ls); } return sb.toString(); }