Shevek created DIRSERVER-1931:
---------------------------------
Summary: Dhcp: TftpServerName and BootfileName need NUL termination
Key: DIRSERVER-1931
URL: https://issues.apache.org/jira/browse/DIRSERVER-1931
Project: Directory ApacheDS
Issue Type: Bug
Components: dhcp
Reporter: Shevek
These are odd options, the PXE spec requires nul termination of the strings in
these, but no other options. It also requires the strings to be in NETASCII
(best JDK approximation is probably ISO8859_1). ApacheDS fills in simple,
nonterminated strings, therefore these options cannot be parsed by many (most?)
PXE implementations.
/** DHCP options 66 and 67 require nul termination. */
@Nonnull
private byte[] toNulTerminatedString(@Nonnull String text) {
return ArrayUtils.add(text.getBytes(Charsets.ISO_8859_1), (byte) 0);
}
protected void addBootParameters(@Nonnull Lease lease,
@Nonnull InterfaceAddress interfaceAddress, @Nonnull DhcpMessage
request,
@Nonnull InetAddress bootServerAddress, @Nonnull String
bootFileName) {
byte[] bootServerName =
toNulTerminatedString(InetAddresses.toAddrString(bootServerAddress));
DhcpUtils.setUnknownOption(lease.getOptions(), new
TftpServerName().getTag(), bootServerName);
DhcpUtils.setUnknownOption(lease.getOptions(), new
BootfileName().getTag(), toNulTerminatedString(bootFileName));
}
Note also the only way to get the tags is 'new X().getTag()' since the field
tag is not a static public field.
--
This message was sent by Atlassian JIRA
(v6.1.4#6159)