1*6777b538SAndroid Build Coastguard Worker // Copyright 2018 The Chromium Authors 2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file. 4*6777b538SAndroid Build Coastguard Worker 5*6777b538SAndroid Build Coastguard Worker #ifndef NET_DNS_PUBLIC_UTIL_H_ 6*6777b538SAndroid Build Coastguard Worker #define NET_DNS_PUBLIC_UTIL_H_ 7*6777b538SAndroid Build Coastguard Worker 8*6777b538SAndroid Build Coastguard Worker #include <stdint.h> 9*6777b538SAndroid Build Coastguard Worker 10*6777b538SAndroid Build Coastguard Worker #include <string> 11*6777b538SAndroid Build Coastguard Worker 12*6777b538SAndroid Build Coastguard Worker #include "net/base/address_family.h" 13*6777b538SAndroid Build Coastguard Worker #include "net/base/ip_endpoint.h" 14*6777b538SAndroid Build Coastguard Worker #include "net/base/net_export.h" 15*6777b538SAndroid Build Coastguard Worker 16*6777b538SAndroid Build Coastguard Worker namespace url { 17*6777b538SAndroid Build Coastguard Worker class SchemeHostPort; 18*6777b538SAndroid Build Coastguard Worker } 19*6777b538SAndroid Build Coastguard Worker 20*6777b538SAndroid Build Coastguard Worker // Basic utility functions for interaction with MDNS and host resolution. 21*6777b538SAndroid Build Coastguard Worker namespace net::dns_util { 22*6777b538SAndroid Build Coastguard Worker 23*6777b538SAndroid Build Coastguard Worker // Gets the endpoint for the multicast group a socket should join to receive 24*6777b538SAndroid Build Coastguard Worker // MDNS messages. Such sockets should also bind to the endpoint from 25*6777b538SAndroid Build Coastguard Worker // GetMDnsReceiveEndPoint(). 26*6777b538SAndroid Build Coastguard Worker // 27*6777b538SAndroid Build Coastguard Worker // This is also the endpoint messages should be sent to to send MDNS messages. 28*6777b538SAndroid Build Coastguard Worker NET_EXPORT IPEndPoint GetMdnsGroupEndPoint(AddressFamily address_family); 29*6777b538SAndroid Build Coastguard Worker 30*6777b538SAndroid Build Coastguard Worker // Gets the endpoint sockets should be bound to to receive MDNS messages. Such 31*6777b538SAndroid Build Coastguard Worker // sockets should also join the multicast group from GetMDnsGroupEndPoint(). 32*6777b538SAndroid Build Coastguard Worker NET_EXPORT IPEndPoint GetMdnsReceiveEndPoint(AddressFamily address_family); 33*6777b538SAndroid Build Coastguard Worker 34*6777b538SAndroid Build Coastguard Worker // Determine the new hostname for an HTTPS record query by performing "Port 35*6777b538SAndroid Build Coastguard Worker // Prefix Naming" as defined by draft-ietf-dnsop-svcb-https-08, Section 9.1. 36*6777b538SAndroid Build Coastguard Worker // 37*6777b538SAndroid Build Coastguard Worker // If non-null, `out_port` is set to the port used for the query, which might 38*6777b538SAndroid Build Coastguard Worker // not be the same as `host.port()`, e.g. if port 80 is converted to 443 for 39*6777b538SAndroid Build Coastguard Worker // scheme upgrade. 40*6777b538SAndroid Build Coastguard Worker NET_EXPORT std::string GetNameForHttpsQuery(const url::SchemeHostPort& host, 41*6777b538SAndroid Build Coastguard Worker uint16_t* out_port = nullptr); 42*6777b538SAndroid Build Coastguard Worker 43*6777b538SAndroid Build Coastguard Worker } // namespace net::dns_util 44*6777b538SAndroid Build Coastguard Worker 45*6777b538SAndroid Build Coastguard Worker #endif // NET_DNS_PUBLIC_UTIL_H_ 46