Imported Upstream version 878.70.2
[platform/upstream/mdnsresponder.git] / mDNSMacOSX / DNS64State.h
1 /*
2  * Copyright (c) 2017 Apple Inc. All rights reserved.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 #ifndef __DNS64State_h
18 #define __DNS64State_h
19
20 typedef enum
21 {
22     kDNS64State_Initial             = 0,    // Initial state.
23     kDNS64State_PrefixDiscovery     = 1,    // Querying for "ipv4only.arpa." AAAA records to discover NAT64 IPv6 prefix(es).
24     kDNS64State_PrefixDiscoveryPTR  = 2,    // Same as PrefixDiscovery, but discoverying for "ip6.arpa." PTR record queries.
25     kDNS64State_QueryA              = 3,    // Querying for A record with same QNAME as AAAA record query.
26     kDNS64State_QueryA2             = 4,    // Continuing A record query after being answered with a synthesizable A record.
27     kDNS64State_QueryAAAA           = 5,    // Querying for original AAAA record.
28     kDNS64State_QueryPTR            = 6,    // Determining whether to query for reverse IPV4 or reverse IPv6 PTR record.
29     kDNS64State_ReverseIPv4         = 7,    // Querying for reverse IPV4 (in-addr.arpa.) PTR record.
30     kDNS64State_ReverseIPv6         = 8     // Querying for the original reverse IPv6 (ip6.arpa.) PTR record.
31
32 }   DNS64State;
33
34 typedef struct
35 {
36     DNS64State      state;          // Current state.
37     mDNSu8          qnameStash[15]; // Temporary space to hold the up to 15 bytes that are displaced in a DNSQuestion's qname
38                                     // when it's set to "ipv4only.arpa." during prefix discovery.
39 }   DNS64;
40
41 #endif // __DNS64State_h