xref: /aosp_15_r20/external/cronet/net/dns/public/util.h (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
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