/** https://tools.ietf.org/html/rfc3315#section-18.2.5 */
  @Override
  protected Dhcp6Message requestInformation(
      final Dhcp6RequestContext requestContext, final Dhcp6Message incomingMsg)
      throws Dhcp6Exception {
    Dhcp6Message reply = createGenericReply(incomingMsg, Dhcp6MessageType.DHCP_REPLY);

    if (incomingMsg.getOptions().contains(ClientIdOption.class)) {
      reply.getOptions().add(incomingMsg.getOptions().get(ClientIdOption.class));
    }

    return leaseManager.requestInformation(requestContext, incomingMsg, reply);
  }
  /** https://tools.ietf.org/html/rfc3315#section-17.2.2 */
  @Override
  protected Dhcp6Message advertise(
      final Dhcp6RequestContext requestContext, final Dhcp6Message incomingMsg)
      throws Dhcp6Exception {
    Dhcp6Message reply = createReply(incomingMsg);
    reply.setMessageType(Dhcp6MessageType.DHCP_ADVERTISE);

    final Dhcp6Message lease = leaseManager.lease(requestContext, incomingMsg, reply);

    leaseManager.requestInformation(requestContext, incomingMsg, reply);

    return lease;
  }