directory-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Shevek (JIRA)" <>
Subject [jira] [Created] (DIRSERVER-1931) Dhcp: TftpServerName and BootfileName need NUL termination
Date Thu, 12 Dec 2013 09:50:07 GMT
Shevek created DIRSERVER-1931:

             Summary: Dhcp: TftpServerName and BootfileName need NUL termination
                 Key: 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. */
    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

View raw message