private IpV6NeighborDiscoverySourceLinkLayerAddressOption(Builder builder) { if (builder == null || builder.linkLayerAddress == null) { StringBuilder sb = new StringBuilder(); sb.append("builder: ") .append(builder) .append(" builder.linkLayerAddress: ") .append(builder.linkLayerAddress); throw new NullPointerException(sb.toString()); } this.linkLayerAddress = new byte[builder.linkLayerAddress.length]; System.arraycopy( builder.linkLayerAddress, 0, this.linkLayerAddress, 0, builder.linkLayerAddress.length); if (builder.correctLengthAtBuild) { if (length() % 8 != 0) { StringBuilder sb = new StringBuilder(); sb.append("linkLayerAddress's length is invalid. linkLayerAddress: ") .append(ByteArrays.toHexString(linkLayerAddress, " ")); throw new IllegalArgumentException(sb.toString()); } this.length = (byte) (length() / 8); } else { this.length = builder.length; } }
@Override public byte[] getRawData() { byte[] rawData = new byte[length()]; rawData[TYPE_OFFSET] = getType().value(); rawData[LENGTH_OFFSET] = length; System.arraycopy( linkLayerAddress, 0, rawData, LINK_LAYER_ADDRESS_OFFSET, linkLayerAddress.length); return rawData; }
private IpV6NeighborDiscoverySourceLinkLayerAddressOption(Builder builder) { if (builder == null || builder.linkLayerAddress == null) { StringBuilder sb = new StringBuilder(); sb.append("builder: ") .append(builder) .append(" builder.linkLayerAddress: ") .append(builder.linkLayerAddress); throw new NullPointerException(sb.toString()); } this.linkLayerAddress = new byte[builder.linkLayerAddress.length]; System.arraycopy( builder.linkLayerAddress, 0, this.linkLayerAddress, 0, builder.linkLayerAddress.length); if (builder.correctLengthAtBuild) { if (length() % 8 != 0) { StringBuilder sb = new StringBuilder(); sb.append("linkLayerAddress's length is invalid. linkLayerAddress: ") .append(ByteArrays.toHexString(linkLayerAddress, " ")); throw new IllegalArgumentException(sb.toString()); } this.length = (byte) (length() / 8); } else { this.length = builder.length; } }
@Override public byte[] getRawData() { byte[] rawData = new byte[length()]; rawData[TYPE_OFFSET] = getType().value(); rawData[LENGTH_OFFSET] = length; System.arraycopy( linkLayerAddress, 0, rawData, LINK_LAYER_ADDRESS_OFFSET, linkLayerAddress.length); return rawData; }