1*472cd20dSToomas Soome /*
2*472cd20dSToomas Soome  * Copyright (c) 2019 Apple Inc. All rights reserved.
3*472cd20dSToomas Soome  *
4*472cd20dSToomas Soome  * Licensed under the Apache License, Version 2.0 (the "License");
5*472cd20dSToomas Soome  * you may not use this file except in compliance with the License.
6*472cd20dSToomas Soome  * You may obtain a copy of the License at
7*472cd20dSToomas Soome  *
8*472cd20dSToomas Soome  *     http://www.apache.org/licenses/LICENSE-2.0
9*472cd20dSToomas Soome  *
10*472cd20dSToomas Soome  * Unless required by applicable law or agreed to in writing, software
11*472cd20dSToomas Soome  * distributed under the License is distributed on an "AS IS" BASIS,
12*472cd20dSToomas Soome  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*472cd20dSToomas Soome  * See the License for the specific language governing permissions and
14*472cd20dSToomas Soome  * limitations under the License.
15*472cd20dSToomas Soome  */
16*472cd20dSToomas Soome 
17*472cd20dSToomas Soome #ifndef __mDNSFeatures_h
18*472cd20dSToomas Soome #define __mDNSFeatures_h
19*472cd20dSToomas Soome 
20*472cd20dSToomas Soome #if MDNSRESPONDER_PLATFORM_APPLE
21*472cd20dSToomas Soome #include "ApplePlatformFeatures.h"
22*472cd20dSToomas Soome #endif
23*472cd20dSToomas Soome 
24*472cd20dSToomas Soome // Common Features
25*472cd20dSToomas Soome 
26*472cd20dSToomas Soome #undef MDNSRESPONDER_PLATFORM_COMMON
27*472cd20dSToomas Soome #define MDNSRESPONDER_PLATFORM_COMMON       1
28*472cd20dSToomas Soome 
29*472cd20dSToomas Soome // Feature: DNS Push
30*472cd20dSToomas Soome // Radar:   <rdar://problem/23226275>
31*472cd20dSToomas Soome // Enabled: Yes, for Apple.
32*472cd20dSToomas Soome 
33*472cd20dSToomas Soome #if !defined(MDNSRESPONDER_SUPPORTS_COMMON_DNS_PUSH)
34*472cd20dSToomas Soome     #if defined(MDNSRESPONDER_PLATFORM_APPLE) && MDNSRESPONDER_PLATFORM_APPLE
35*472cd20dSToomas Soome         #define MDNSRESPONDER_SUPPORTS_COMMON_DNS_PUSH      1
36*472cd20dSToomas Soome     #else
37*472cd20dSToomas Soome         #define MDNSRESPONDER_SUPPORTS_COMMON_DNS_PUSH      0
38*472cd20dSToomas Soome     #endif
39*472cd20dSToomas Soome #endif
40*472cd20dSToomas Soome 
41*472cd20dSToomas Soome #define HAS_FEATURE_CAT(A, B)       A ## B
42*472cd20dSToomas Soome #define HAS_FEATURE_CHECK_0         1
43*472cd20dSToomas Soome #define HAS_FEATURE_CHECK_1         1
44*472cd20dSToomas Soome #define HAS_FEATURE(X)              ((X) / HAS_FEATURE_CAT(HAS_FEATURE_CHECK_, X))
45*472cd20dSToomas Soome 
46*472cd20dSToomas Soome #define MDNSRESPONDER_SUPPORTS(PLATFORM, FEATURE) \
47*472cd20dSToomas Soome     (defined(MDNSRESPONDER_PLATFORM_ ## PLATFORM) && MDNSRESPONDER_PLATFORM_ ## PLATFORM && \
48*472cd20dSToomas Soome     HAS_FEATURE(MDNSRESPONDER_SUPPORTS_ ## PLATFORM ## _ ## FEATURE))
49*472cd20dSToomas Soome 
50*472cd20dSToomas Soome #endif  // __mDNSFeatures_h
51