return null; // not me?! FIXME: handle authoritative server case
}
Lease lease = getExistingLease( clientAddress, request );
DhcpMessage reply = initGeneralReply( localAddress, request );
if ( null == lease )
{
// null lease? send NAK
// FIXME...
reply.setMessageType( MessageType.DHCPNAK );
reply.setCurrentClientAddress( null );
reply.setAssignedClientAddress( null );
reply.setNextServerAddress( null );
}
else
{
dhcpStore.releaseLease( lease );
// lease Ok, send ACK
// FIXME...
reply.getOptions().merge( lease.getOptions() );
reply.setAssignedClientAddress( lease.getClientAddress() );
reply.setNextServerAddress( lease.getNextServerAddress() );
// fix options
OptionsField options = reply.getOptions();
// these options must not be present
options.remove( RequestedIpAddress.class );
options.remove( ParameterRequestList.class );
options.remove( ClientIdentifier.class );