1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
/* -*- Mode: C; tab-width: 4 -*-
*
* Copyright (c) 2015 Apple Inc. All rights reserved.
*/
#ifndef _DNS_SD_PRIVATE_H
#define _DNS_SD_PRIVATE_H
// Private flags (kDNSServiceFlagsPrivateOne, kDNSServiceFlagsPrivateTwo, kDNSServiceFlagsPrivateThree, kDNSServiceFlagsPrivateFour) from dns_sd.h
enum
{
kDNSServiceFlagsDenyCellular = 0x8000000,
/*
* This flag is meaningful only for Unicast DNS queries. When set, the daemon will restrict
* DNS resolutions on the cellular interface for that request.
*/
kDNSServiceFlagsServiceIndex = 0x10000000,
/*
* This flag is meaningful only for DNSServiceGetAddrInfo() for Unicast DNS queries.
* When set, DNSServiceGetAddrInfo() will interpret the "interfaceIndex" argument of the call
* as the "serviceIndex".
*/
kDNSServiceFlagsDenyExpensive = 0x20000000,
/*
* This flag is meaningful only for Unicast DNS queries. When set, the daemon will restrict
* DNS resolutions on interfaces defined as expensive for that request.
*/
kDNSServiceFlagsPathEvaluationDone = 0x40000000
/*
* This flag is meaningful for only Unicast DNS queries.
* When set, it indicates that Network PathEvaluation has already been performed.
*/
};
#if !DNSSD_NO_CREATE_DELEGATE_CONNECTION
/* DNSServiceCreateDelegateConnection()
*
* Parameters:
*
* sdRef: A pointer to an uninitialized DNSServiceRef. Deallocating
* the reference (via DNSServiceRefDeallocate()) severs the
* connection and deregisters all records registered on this connection.
*
* pid : Process ID of the delegate
*
* uuid: UUID of the delegate
*
* Note that only one of the two arguments (pid or uuid) can be specified. If pid
* is zero, uuid will be assumed to be a valid value; otherwise pid will be used.
*
* return value: Returns kDNSServiceErr_NoError on success, otherwise returns
* an error code indicating the specific failure that occurred (in which
* case the DNSServiceRef is not initialized). kDNSServiceErr_NotAuth is
* returned to indicate that the calling process does not have entitlements
* to use this API.
*/
DNSServiceErrorType DNSSD_API DNSServiceCreateDelegateConnection(DNSServiceRef *sdRef, int32_t pid, uuid_t uuid);
#endif
// Map the source port of the local UDP socket that was opened for sending the DNS query
// to the process ID of the application that triggered the DNS resolution.
//
/* DNSServiceGetPID() Parameters:
*
* srcport: Source port (in network byte order) of the UDP socket that was created by
* the daemon to send the DNS query on the wire.
*
* pid: Process ID of the application that started the name resolution which triggered
* the daemon to send the query on the wire. The value can be -1 if the srcport
* cannot be mapped.
*
* return value: Returns kDNSServiceErr_NoError on success, or kDNSServiceErr_ServiceNotRunning
* if the daemon is not running. The value of the pid is undefined if the return
* value has error.
*/
DNSServiceErrorType DNSSD_API DNSServiceGetPID
(
uint16_t srcport,
int32_t *pid
);
#define kDNSServiceCompPrivateDNS "PrivateDNS"
#define kDNSServiceCompMulticastDNS "MulticastDNS"
#endif
|