summaryrefslogtreecommitdiffstats
path: root/mDNSResponder/mDNSMacOSX/Private/dns_services_mdns.h
diff options
context:
space:
mode:
Diffstat (limited to 'mDNSResponder/mDNSMacOSX/Private/dns_services_mdns.h')
-rw-r--r--mDNSResponder/mDNSMacOSX/Private/dns_services_mdns.h124
1 files changed, 124 insertions, 0 deletions
diff --git a/mDNSResponder/mDNSMacOSX/Private/dns_services_mdns.h b/mDNSResponder/mDNSMacOSX/Private/dns_services_mdns.h
new file mode 100644
index 00000000..7b74e10d
--- /dev/null
+++ b/mDNSResponder/mDNSMacOSX/Private/dns_services_mdns.h
@@ -0,0 +1,124 @@
+/* -*- Mode: C; tab-width: 4 -*-
+ *
+ * Copyright (c) 2012 Apple Inc. All rights reserved.
+ *
+ *
+ * @header Interface to DNSX SPI
+ *
+ * @discussion Describes the functions and data structures
+ * that make up the DNSX SPI
+ */
+
+#ifndef _DNS_SERVICES_H
+#define _DNS_SERVICES_H
+
+#include <dispatch/dispatch.h>
+
+// DNSXConnRef: Opaque internal data type
+typedef struct _DNSXConnRef_t *DNSXConnRef;
+
+typedef enum
+{
+ kDNSX_NoError = 0,
+ kDNSX_UnknownErr = -65537, /* 0xFFFE FFFF */
+ kDNSX_NoMem = -65539,
+ kDNSX_BadParam = -65540,
+ kDNSX_DaemonNotRunning = -65563, /* Background daemon not running */
+ kDNSX_DictError = -65565, /* Dictionary Error */
+ kDNSX_Engaged = -65566, /* DNS Proxy is in use by another client */
+ kDNSX_Timeout = -65568
+} DNSXErrorType;
+
+// A max of 5 input interfaces can be processed at one time
+#define MaxInputIf 5
+#define IfIndex uint64_t
+#define kDNSIfindexAny 0
+
+// Enable DNS Proxy with an appropriate parameter defined below
+typedef enum
+{
+ kDNSProxyEnable = 1
+ // Other values reserved for future use
+} DNSProxyParameters;
+
+/*********************************************************************************************
+*
+* Enable DNS Proxy Functionality
+*
+*********************************************************************************************/
+
+/* DNSXEnableProxy : Turns ON the DNS Proxy (Details below)
+ *
+ * DNSXEnableProxyReply() parameters:
+ *
+ * connRef: The DNSXConnRef initialized by DNSXEnableProxy().
+ *
+ * errCode: Will be kDNSX_NoError on success, otherwise will indicate the
+ * failure that occurred. Other parameters are undefined if
+ * errCode is nonzero.
+ *
+ */
+
+typedef void (*DNSXEnableProxyReply)
+(
+ DNSXConnRef connRef,
+ DNSXErrorType errCode
+);
+
+/* DNSXEnableProxy
+ *
+ * Enables the DNS Proxy functionality which will remain ON until the client terminates explictly (or exits/crashes).
+ * Client can turn it OFF by passing the returned DNSXConnRef to DNSXRefDeAlloc()
+ *
+ * DNSXEnableProxy() Parameters:
+ *
+ * connRef: A pointer to DNSXConnRef that is initialized to NULL when called for the first
+ * time. If the call succeeds it will be initialized to a non-NULL value.
+ * Client terminates the DNS Proxy by passing this DNSXConnRef to DNSXRefDeAlloc().
+ *
+ * proxyparam: Enable DNS Proxy functionality with parameters that are described in
+ * DNSProxyParameters above.
+ *
+ * inIfindexArr[MaxInputIf]: List of input interfaces from which the DNS queries will be accepted and
+ * forwarded to the output interface specified below. The daemon processes
+ * MaxInputIf entries in the list. For eg. if one has less than MaxInputIfs
+ * values, just initialize the other values to be 0. Note: This field needs to
+ * be initialized by the client.
+ *
+ * outIfindex: Output interface on which the query will be forwarded.
+ * Passing kDNSIfindexAny causes DNS Queries to be sent on the primary interface.
+ *
+ * clientq: Queue the client wants to schedule the callBack on (Note: Must not be NULL)
+ *
+ * callBack: CallBack function for the client that indicates success or failure.
+ * Note: callback may be invoked more than once, For eg. if enabling DNS Proxy
+ * first succeeds and the daemon possibly crashes sometime later.
+ *
+ * return value: Returns kDNSX_NoError when no error otherwise returns an error code indicating
+ * the error that occurred. Note: A return value of kDNSX_NoError does not mean
+ * that DNS Proxy was successfully enabled. The callBack may asynchronously
+ * return an error (such as kDNSX_DaemonNotRunning/ kDNSX_Engaged)
+ *
+ */
+
+DNSXErrorType DNSXEnableProxy
+(
+ DNSXConnRef *connRef,
+ DNSProxyParameters proxyparam,
+ IfIndex inIfindexArr[MaxInputIf],
+ IfIndex outIfindex,
+ dispatch_queue_t clientq,
+ DNSXEnableProxyReply callBack
+);
+
+/* DNSXRefDeAlloc()
+ *
+ * Terminate a connection with the daemon and free memory associated with the DNSXConnRef.
+ * Used to Disable DNS Proxy on that connection.
+ *
+ * connRef: A DNSXConnRef initialized by any of the DNSX*() calls.
+ *
+ */
+void DNSXRefDeAlloc(DNSXConnRef connRef);
+
+#endif /* _DNS_SERVICES_H */