/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

using mozilla::net::NetAddr from "mozilla/net/DNS.h";
using mozilla::net::IPCTypeRecord from "mozilla/net/DNSByTypeRecord.h";
using nsIRequest::TRRMode from "nsIRequest.h";
using class mozilla::TimeStamp from "mozilla/TimeStamp.h";

namespace mozilla {
namespace net {

//-----------------------------------------------------------------------------
// DNS IPDL structs
//-----------------------------------------------------------------------------

struct DNSRecord
{
  nsCString canonicalName;
  NetAddr[] addrs;
  double trrFetchDuration;
  double trrFetchDurationNetworkOnly;
  bool isTRR;
  TRRMode effectiveTRRMode;
  uint32_t ttl;
  TimeStamp lastUpdate;
};

union DNSRequestResponse
{
  DNSRecord;
  IPCTypeRecord; // The result of a by-type query
  nsresult;   // if error
};


} // namespace ipc
} // namespace mozilla
