1/* 2 * Copyright (c) 2004-2006, 2008, 2009, 2011-2013 Apple Inc. All rights reserved. 3 * 4 * @APPLE_LICENSE_HEADER_START@ 5 * 6 * This file contains Original Code and/or Modifications of Original Code 7 * as defined in and that are subject to the Apple Public Source License 8 * Version 2.0 (the 'License'). You may not use this file except in 9 * compliance with the License. Please obtain a copy of the License at 10 * http://www.opensource.apple.com/apsl/ and read it before using this 11 * file. 12 * 13 * The Original Code and all software distributed under the License are 14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 18 * Please see the License for the specific language governing rights and 19 * limitations under the License. 20 * 21 * @APPLE_LICENSE_HEADER_END@ 22 */ 23 24#ifndef __DNSINFO_CREATE_H__ 25#define __DNSINFO_CREATE_H__ 26 27/* 28 * These routines provide access to the systems DNS configuration 29 */ 30 31#include <TargetConditionals.h> 32#include <Availability.h> 33#include <sys/cdefs.h> 34#include <stdint.h> 35#include <sys/types.h> 36#include <sys/socket.h> 37#include <netinet/in.h> 38 39#include <dnsinfo.h> 40 41typedef const struct __dns_create_config * dns_create_config_t; 42typedef const struct __dns_create_resolver * dns_create_resolver_t; 43 44#if !TARGET_OS_IPHONE 45#ifndef _PATH_RESOLVER_DIR 46#define _PATH_RESOLVER_DIR "/etc/resolver" 47#endif 48#endif /* !TARGET_OS_IPHONE */ 49 50__BEGIN_DECLS 51 52/* 53 * DNS configuration creation APIs 54 */ 55dns_create_config_t 56_dns_configuration_create (void) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0); 57 58void 59_dns_configuration_add_resolver (dns_create_config_t *_config, 60 dns_create_resolver_t _resolver) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0); 61 62void 63_dns_configuration_signature (dns_create_config_t *_config, 64 unsigned char *signature, 65 size_t signature_len) __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_5_0); // signature_len >= CC_SHA1_DIGEST_LENGTH 66 67void 68_dns_configuration_free (dns_create_config_t *_config) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0); 69 70/* 71 * DNS [resolver] configuration creation APIs 72 */ 73dns_create_resolver_t 74_dns_resolver_create (void) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0); 75 76void 77_dns_resolver_set_domain (dns_create_resolver_t *_resolver, 78 const char *domain) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0); 79 80void 81_dns_resolver_add_nameserver (dns_create_resolver_t *_resolver, 82 struct sockaddr *nameserver) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0); 83 84void 85_dns_resolver_add_search (dns_create_resolver_t *_resolver, 86 const char *search) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0); 87 88void 89_dns_resolver_add_sortaddr (dns_create_resolver_t *_resolver, 90 dns_sortaddr_t *sortaddr) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0); 91 92void 93_dns_resolver_set_flags (dns_create_resolver_t *_resolver, 94 uint32_t flags) __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0); 95 96void 97_dns_resolver_set_if_index (dns_create_resolver_t *_resolver, 98 uint32_t if_index) __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0); 99 100void 101_dns_resolver_set_options (dns_create_resolver_t *_resolver, 102 const char *options) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0); 103 104void 105_dns_resolver_set_order (dns_create_resolver_t *_resolver, 106 uint32_t order) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0); 107 108void 109_dns_resolver_set_port (dns_create_resolver_t *_resolver, 110 uint16_t port) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0); // host byte order 111 112void 113_dns_resolver_set_timeout (dns_create_resolver_t *_resolver, 114 uint32_t timeout) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0); 115 116void 117_dns_resolver_set_service_identifier (dns_create_resolver_t *_resolver, 118 uint32_t service_identifier) __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0); 119 120void 121_dns_resolver_free (dns_create_resolver_t *_resolver) __OSX_AVAILABLE_STARTING(__MAC_10_4,__IPHONE_2_0); 122 123#if !TARGET_OS_IPHONE 124/* 125 * DNS [resolver] flat-file configuration creation APIs 126 */ 127void 128_dnsinfo_flatfile_add_resolvers (dns_create_config_t *config) __OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA); 129 130void 131_dnsinfo_flatfile_set_flags (uint32_t flags) __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_NA); 132#endif // !TARGET_OS_IPHONE 133 134__END_DECLS 135 136#endif /* __DNSINFO_CREATE_H__ */ 137