// Copyright 2019 The Chromium 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 DISCOVERY_DNSSD_IMPL_NETWORK_INTERFACE_CONFIG_H_ #define DISCOVERY_DNSSD_IMPL_NETWORK_INTERFACE_CONFIG_H_ #include "platform/base/interface_info.h" #include "platform/base/ip_address.h" namespace openscreen { namespace discovery { class NetworkInterfaceConfig { public: NetworkInterfaceConfig(NetworkInterfaceIndex network_interface, IPAddress address_v4, IPAddress address_v6); ~NetworkInterfaceConfig(); NetworkInterfaceIndex network_interface() const { return network_interface_; } const IPAddress& address_v4() const { return address_v4_; } const IPAddress& address_v6() const { return address_v6_; } bool HasAddressV4() const; bool HasAddressV6() const; // Returns either the |address_v4_| or |address_v6_| depending which is // present, or the empty IPAddress if neither is present. const IPAddress& GetAddress() const; private: friend class FakeNetworkInterfaceConfig; NetworkInterfaceConfig(); NetworkInterfaceIndex network_interface_; IPAddress address_v4_; IPAddress address_v6_; }; } // namespace discovery } // namespace openscreen #endif // DISCOVERY_DNSSD_IMPL_NETWORK_INTERFACE_CONFIG_H_