blob: f6862f6157aed4dedd2a2f52caa048bf40b9e4f0 [file] [log] [blame]
// Copyright 2017 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef SRC_CONNECTIVITY_NETWORK_MDNS_SERVICE_DNS_READING_H_
#define SRC_CONNECTIVITY_NETWORK_MDNS_SERVICE_DNS_READING_H_
#include <memory>
#include "src/connectivity/network/mdns/service/dns_message.h"
#include "src/connectivity/network/mdns/service/packet_reader.h"
namespace mdns {
// Note: DnsResourceDataTxt, DnsResourceDataOpt and DnsResourceDataNSec must be
// read with a reader whose 'bytes remaining' has been set to the length of the
// item to be read. This is their size needs to be known in order to read them.
// See the overload for DnsResource to see how this is done.
template <typename T>
PacketReader& operator>>(PacketReader& reader, std::shared_ptr<T>& value) {
value = std::make_shared<T>();
return reader >> *value;
}
PacketReader& operator>>(PacketReader& reader, DnsName& value);
PacketReader& operator>>(PacketReader& reader, DnsV4Address& value);
PacketReader& operator>>(PacketReader& reader, DnsV6Address& value);
PacketReader& operator>>(PacketReader& reader, DnsType& value);
PacketReader& operator>>(PacketReader& reader, DnsClass& value);
PacketReader& operator>>(PacketReader& reader, DnsClassAndFlag& value);
PacketReader& operator>>(PacketReader& reader, DnsHeader& value);
PacketReader& operator>>(PacketReader& reader, DnsQuestion& value);
PacketReader& operator>>(PacketReader& reader, DnsResourceDataA& value);
PacketReader& operator>>(PacketReader& reader, DnsResourceDataNs& value);
PacketReader& operator>>(PacketReader& reader, DnsResourceDataCName& value);
PacketReader& operator>>(PacketReader& reader, DnsResourceDataPtr& value);
PacketReader& operator>>(PacketReader& reader, DnsResourceDataTxt& value);
PacketReader& operator>>(PacketReader& reader, DnsResourceDataAaaa& value);
PacketReader& operator>>(PacketReader& reader, DnsResourceDataSrv& value);
PacketReader& operator>>(PacketReader& reader, DnsResourceDataOpt& value);
PacketReader& operator>>(PacketReader& reader, DnsResourceDataNSec& value);
PacketReader& operator>>(PacketReader& reader, DnsResource& value);
PacketReader& operator>>(PacketReader& reader, DnsMessage& value);
} // namespace mdns
#endif // SRC_CONNECTIVITY_NETWORK_MDNS_SERVICE_DNS_READING_H_