| /* advertising_proxy_services.h |
| * |
| * Copyright (c) 2020-2024 Apple Inc. All rights reserved. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * https://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| * |
| * This file contains definitions for the SRP Advertising Proxy management |
| * API on MacOS, which is private API used to control and manage the advertising |
| * proxy. |
| */ |
| |
| #ifndef DNSSD_PROXY_SERVICES_H |
| #define DNSSD_PROXY_SERVICES_H |
| |
| #if !defined(__BEGIN_DECLS) |
| #if defined(__cplusplus) |
| #define __BEGIN_DECLS extern "C" { |
| #define __END_DECLS } |
| #else |
| #define __BEGIN_DECLS |
| #define __END_DECLS |
| #endif |
| #endif |
| |
| __BEGIN_DECLS |
| typedef void *run_context_t; |
| typedef struct _cti_connection_t *advertising_proxy_conn_ref; |
| #define ADV_CTL_SERVER_SOCKET_NAME "/var/run/adv-ctl-server-socket" |
| #define RCHAR char |
| #define RUCHAR uint8_t |
| |
| typedef struct advertising_proxy_subscription advertising_proxy_subscription_t; |
| |
| typedef struct advertising_proxy_host_address { |
| uint16_t rrtype; |
| RUCHAR *NULLABLE rdata; |
| uint16_t rdlen; |
| } advertising_proxy_host_address_t; |
| |
| typedef struct advertising_proxy_instance { |
| RCHAR *NULLABLE instance_name; |
| RCHAR *NULLABLE service_type; |
| RCHAR *NULLABLE reg_type; |
| uint16_t port; |
| RUCHAR *NULLABLE txt_data; |
| uint16_t txt_len; |
| } advertising_proxy_instance_t; |
| |
| typedef struct advertising_proxy_host { |
| int ref_count; |
| RCHAR *NULLABLE hostname; |
| RCHAR *NULLABLE regname; |
| uint16_t num_addresses; |
| uint32_t lease_time; |
| advertising_proxy_host_address_t *NULLABLE addresses; |
| uint16_t num_instances; |
| advertising_proxy_instance_t *NULLABLE instances; |
| bool removed; |
| uint64_t server_id; |
| } advertising_proxy_host_t; |
| |
| #if (defined(__GNUC__) && (__GNUC__ >= 4)) |
| #define DNS_SERVICES_EXPORT __attribute__((visibility("default"))) |
| #else |
| #define DNS_SERVICES_EXPORT |
| #endif |
| |
| typedef enum |
| { |
| kDNSSDAdvertisingProxyStatus_NoError = 0, |
| kDNSSDAdvertisingProxyStatus_UnknownErr = -65537, /* 0xFFFE FFFF */ |
| kDNSSDAdvertisingProxyStatus_NoMemory = -65539, /* No Memory */ |
| kDNSSDAdvertisingProxyStatus_BadParam = -65540, /* Client passed invalid arg */ |
| kDNSSDAdvertisingProxyStatus_Invalid = -65549, /* Invalid message */ |
| kDNSSDAdvertisingProxyStatus_DaemonNotRunning = -65563, /* Daemon not running */ |
| kDNSSDAdvertisingProxyStatus_Disconnected = -65569, /* Daemon disconnected */ |
| kDNSSDAdvertisingProxyStatus_NotPermitted = -65571 |
| } advertising_proxy_error_type; |
| |
| // Register for notification that TLS key has changed |
| #define kDNSSDAdvertisingProxyTLSKeyUpdateNotification "com.apple.srp-mdns-proxy.tls-key-update" |
| |
| /********************************************************************************************* |
| * |
| * DNSSD Advertising Proxy control/management library functions |
| * |
| *********************************************************************************************/ |
| |
| /* advertising_proxy_reply: Callback from all DNSSD Advertising proxy library functions |
| * |
| * advertising_proxy_reply() parameters: |
| * |
| * conn_ref: The advertising_proxy_conn_ref initialized by the library function. |
| * |
| * errCode: Will be kDNSSDAdvertisingProxy_NoError on success, otherwise will indicate the |
| * failure that occurred. |
| * |
| */ |
| |
| typedef void (*advertising_proxy_reply) |
| ( |
| advertising_proxy_conn_ref NULLABLE conn_ref, |
| void * NULLABLE data, |
| advertising_proxy_error_type errCode |
| ); |
| |
| /* advertising_proxy_response_reply: Callback from all DNSSD Advertising proxy library functions |
| * |
| * advertising_proxy_response_reply() parameters: |
| * |
| * conn_ref: The advertising_proxy_conn_ref initialized by the library function. Call advertising_proxy_ |
| * |
| * context: context passed to advertising proxy call |
| * |
| * response: Any data returned by the advertising proxy in response to the request. |
| * |
| * errCode: Will be kDNSSDAdvertisingProxy_NoError on success, otherwise will indicate the |
| * failure that occurred. |
| * |
| */ |
| |
| typedef void (*advertising_proxy_response_reply) |
| ( |
| advertising_proxy_conn_ref NULLABLE conn_ref, |
| void * NULLABLE context; |
| void * NULLABLE response, |
| advertising_proxy_error_type errCode |
| ); |
| |
| |
| |
| /* advertising_proxy_flush_entries |
| * |
| * Flushes any host entries that have been registered with the advertising proxy. For testing only: |
| * this is never the right thing to do in production. |
| * |
| * advertising_proxy_flush_entries() Parameters: |
| * |
| * conn_ref: A pointer to advertising_proxy_conn_ref that is initialized to NULL. |
| * If the call succeeds it will be initialized to a non-NULL value. |
| * The same conn_ref can be used for more than one call. |
| * |
| * 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. |
| * Callback is not called until either the command has failed, or has completed. |
| * |
| * return value: Returns kDNSSDAdvertisingProxy_NoError when no error otherwise returns an |
| * error code indicating the error that occurred. Note: A return value of |
| * kDNSSDAdvertisingProxy_NoError does not mean that DNSSD Advertising Proxy host |
| * table was successfully flushed. The callback may asynchronously return an |
| * error (such as kDNSSDAdvertisingProxy_DaemonNotRunning) |
| * |
| */ |
| |
| DNS_SERVICES_EXPORT |
| advertising_proxy_error_type advertising_proxy_flush_entries |
| ( |
| advertising_proxy_conn_ref NONNULL *NULLABLE conn_ref, |
| run_context_t NONNULL clientq, |
| advertising_proxy_reply NULLABLE callback |
| ); |
| |
| /* advertising_proxy_get_service_list |
| * |
| * Returns a list of registered services on the advertising proxy. |
| * |
| * advertising_proxy_get_service_list() Parameters: |
| * |
| * conn_ref: A pointer to advertising_proxy_conn_ref that is initialized to NULL. |
| * If the call succeeds it will be initialized to a non-NULL value. |
| * The same conn_ref can be used for more than one call. |
| * |
| * 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. |
| * Callback is not called until either the command has failed, or has completed. |
| * |
| * return value: Returns kDNSSDAdvertisingProxy_NoError when no error otherwise returns an |
| * error code indicating the error that occurred. Note: A return value of |
| * kDNSSDAdvertisingProxy_NoError does not mean that DNSSD Advertising Proxy host |
| * table was successfully flushed. The callback may asynchronously return an |
| * error (such as kDNSSDAdvertisingProxy_DaemonNotRunning) |
| * |
| */ |
| |
| DNS_SERVICES_EXPORT |
| advertising_proxy_error_type advertising_proxy_get_service_list |
| ( |
| advertising_proxy_conn_ref NONNULL *NULLABLE conn_ref, |
| run_context_t NONNULL clientq, |
| advertising_proxy_reply NULLABLE callback |
| ); |
| |
| /* advertising_proxy_block_service |
| * |
| * For testing, block advertisement of SRP service on the thread network. |
| * |
| * advertising_proxy_block_service() Parameters: |
| * |
| * conn_ref: A pointer to advertising_proxy_conn_ref that is initialized to NULL. |
| * If the call succeeds it will be initialized to a non-NULL value. |
| * The same conn_ref can be used for more than one call. |
| * |
| * 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. |
| * Callback is not called until either the command has failed, or has completed. |
| * |
| * return value: Returns kDNSSDAdvertisingProxy_NoError when no error otherwise returns an |
| * error code indicating the error that occurred. Note: A return value of |
| * kDNSSDAdvertisingProxy_NoError does not mean that DNSSD Advertising Proxy host |
| * table was successfully flushed. The callback may asynchronously return an |
| * error (such as kDNSSDAdvertisingProxy_DaemonNotRunning) |
| * |
| */ |
| |
| DNS_SERVICES_EXPORT |
| advertising_proxy_error_type advertising_proxy_block_service |
| ( |
| advertising_proxy_conn_ref NONNULL *NULLABLE conn_ref, |
| run_context_t NONNULL clientq, |
| advertising_proxy_reply NULLABLE callback |
| ); |
| |
| /* advertising_proxy_unblock_service |
| * |
| * For testing, unblock advertisement of SRP service on the thread network. |
| * |
| * advertising_proxy_unblock_service() Parameters: |
| * |
| * conn_ref: A pointer to advertising_proxy_conn_ref that is initialized to NULL. |
| * If the call succeeds it will be initialized to a non-NULL value. |
| * The same conn_ref can be used for more than one call. |
| * |
| * 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. |
| * Callback is not called until either the command has failed, or has completed. |
| * |
| * return value: Returns kDNSSDAdvertisingProxy_NoError when no error otherwise returns an |
| * error code indicating the error that occurred. Note: A return value of |
| * kDNSSDAdvertisingProxy_NoError does not mean that DNSSD Advertising Proxy host |
| * table was successfully flushed. The callback may asynchronously return an |
| * error (such as kDNSSDAdvertisingProxy_DaemonNotRunning) |
| * |
| */ |
| |
| DNS_SERVICES_EXPORT |
| advertising_proxy_error_type advertising_proxy_unblock_service |
| ( |
| advertising_proxy_conn_ref NONNULL *NULLABLE conn_ref, |
| run_context_t NONNULL clientq, |
| advertising_proxy_reply NULLABLE callback |
| ); |
| |
| /* advertising_proxy_regenerate_ula |
| * |
| * For testing, generate a new ULA prefix |
| * |
| * advertising_proxy_regenerate_ula() Parameters: |
| * |
| * conn_ref: A pointer to advertising_proxy_conn_ref that is initialized to NULL. |
| * If the call succeeds it will be initialized to a non-NULL value. |
| * The same conn_ref can be used for more than one call. |
| * |
| * 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. |
| * Callback is not called until either the command has failed, or has completed. |
| * |
| * return value: Returns kDNSSDAdvertisingProxy_NoError when no error otherwise returns an |
| * error code indicating the error that occurred. Note: A return value of |
| * kDNSSDAdvertisingProxy_NoError does not mean that DNSSD Advertising Proxy host |
| * table was successfully flushed. The callback may asynchronously return an |
| * error (such as kDNSSDAdvertisingProxy_DaemonNotRunning) |
| * |
| */ |
| |
| DNS_SERVICES_EXPORT |
| advertising_proxy_error_type advertising_proxy_regenerate_ula |
| ( |
| advertising_proxy_conn_ref NONNULL *NULLABLE conn_ref, |
| run_context_t NONNULL clientq, |
| advertising_proxy_reply NULLABLE callback |
| ); |
| |
| /* advertising_proxy_advertise_prefix |
| * |
| * For testing, advertise it's own prefix to thread network |
| * |
| * advertising_proxy_advertise_prefix() Parameters: |
| * |
| * conn_ref: A pointer to advertising_proxy_conn_ref that is initialized to NULL. |
| * If the call succeeds it will be initialized to a non-NULL value. |
| * The same conn_ref can be used for more than one call. |
| * |
| * high: If true, advertise the prefix as high priority. |
| * |
| * 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. |
| * Callback is not called until either the command has failed, or has completed. |
| * |
| * return value: Returns kDNSSDAdvertisingProxy_NoError when no error otherwise returns an |
| * error code indicating the error that occurred. Note: A return value of |
| * kDNSSDAdvertisingProxy_NoError does not mean that the prefix advertising |
| * was successful. The callback may asynchronously return an |
| * error (such as kDNSSDAdvertisingProxy_DaemonNotRunning) |
| * |
| */ |
| |
| DNS_SERVICES_EXPORT |
| advertising_proxy_error_type advertising_proxy_advertise_prefix |
| ( |
| advertising_proxy_conn_ref NONNULL *NULLABLE conn_ref, |
| bool high, |
| run_context_t NONNULL clientq, |
| advertising_proxy_reply NULLABLE callback |
| ); |
| |
| /* advertising_proxy_add_prefix |
| * |
| * For testing, stop advertising service |
| * |
| * advertising_proxy_add_prefix() Parameters: |
| * |
| * conn_ref: A pointer to advertising_proxy_conn_ref that is initialized to NULL. |
| * If the call succeeds it will be initialized to a non-NULL value. |
| * The same conn_ref can be used for more than one call. |
| * |
| * 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. |
| * Callback is not called until either the command has failed, or has completed. |
| * |
| * prefix_buf: Prefix to be added. |
| * |
| * buf_len: Length of the prefixbuf. |
| * |
| * return value: Returns kDNSSDAdvertisingProxy_NoError when no error otherwise returns an |
| * error code indicating the error that occurred. Note: A return value of |
| * kDNSSDAdvertisingProxy_NoError does not mean that the service advertising |
| * was stopped successfully. The callback may asynchronously return an |
| * error (such as kDNSSDAdvertisingProxy_DaemonNotRunning). |
| * |
| */ |
| |
| DNS_SERVICES_EXPORT |
| advertising_proxy_error_type advertising_proxy_add_prefix |
| ( |
| advertising_proxy_conn_ref NONNULL *NULLABLE conn_ref, |
| run_context_t NONNULL clientq, |
| advertising_proxy_reply NULLABLE callback, |
| const uint8_t *NONNULL prefix_buf, |
| size_t buf_len |
| ); |
| |
| /* advertising_proxy_remove_prefix |
| * |
| * For testing, stop advertising service |
| * |
| * advertising_proxy_remove_prefix() Parameters: |
| * |
| * conn_ref: A pointer to advertising_proxy_conn_ref that is initialized to NULL. |
| * If the call succeeds it will be initialized to a non-NULL value. |
| * The same conn_ref can be used for more than one call. |
| * |
| * 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. |
| * Callback is not called until either the command has failed, or has completed. |
| * |
| * prefix_buf: Prefix to be added. |
| * |
| * buf_len: Length of the prefixbuf. |
| * |
| * return value: Returns kDNSSDAdvertisingProxy_NoError when no error otherwise returns an |
| * error code indicating the error that occurred. Note: A return value of |
| * kDNSSDAdvertisingProxy_NoError does not mean that the service advertising |
| * was stopped successfully. The callback may asynchronously return an |
| * error (such as kDNSSDAdvertisingProxy_DaemonNotRunning). |
| * |
| */ |
| |
| /* advertising_proxy_add_nat64_prefix |
| * |
| * For testing, add nat64 prefix |
| * |
| * advertising_proxy_add_nat64_prefix() Parameters: |
| * |
| * conn_ref: A pointer to advertising_proxy_conn_ref that is initialized to NULL. |
| * If the call succeeds it will be initialized to a non-NULL value. |
| * The same conn_ref can be used for more than one call. |
| * |
| * 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. |
| * Callback is not called until either the command has failed, or has completed. |
| * |
| * prefix_buf: Prefix to be added. |
| * |
| * buf_len: Length of the prefixbuf. |
| * |
| * return value: Returns kDNSSDAdvertisingProxy_NoError when no error otherwise returns an |
| * error code indicating the error that occurred. Note: A return value of |
| * kDNSSDAdvertisingProxy_NoError does not mean that the service advertising |
| * was stopped successfully. The callback may asynchronously return an |
| * error (such as kDNSSDAdvertisingProxy_DaemonNotRunning). |
| * |
| */ |
| |
| DNS_SERVICES_EXPORT |
| advertising_proxy_error_type advertising_proxy_add_nat64_prefix |
| ( |
| advertising_proxy_conn_ref NONNULL *NULLABLE conn_ref, |
| run_context_t NONNULL clientq, |
| advertising_proxy_reply NULLABLE callback, |
| const uint8_t *NONNULL prefix_buf, |
| size_t buf_len |
| ); |
| |
| /* advertising_proxy_remove_nat64_prefix |
| * |
| * For testing, remove nat64 prefix |
| * |
| * advertising_proxy_remove_nat64_prefix() Parameters: |
| * |
| * conn_ref: A pointer to advertising_proxy_conn_ref that is initialized to NULL. |
| * If the call succeeds it will be initialized to a non-NULL value. |
| * The same conn_ref can be used for more than one call. |
| * |
| * 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. |
| * Callback is not called until either the command has failed, or has completed. |
| * |
| * prefix_buf: Prefix to be removed. |
| * |
| * buf_len: Length of the prefixbuf. |
| * |
| * return value: Returns kDNSSDAdvertisingProxy_NoError when no error otherwise returns an |
| * error code indicating the error that occurred. Note: A return value of |
| * kDNSSDAdvertisingProxy_NoError does not mean that the service advertising |
| * was stopped successfully. The callback may asynchronously return an |
| * error (such as kDNSSDAdvertisingProxy_DaemonNotRunning). |
| * |
| */ |
| DNS_SERVICES_EXPORT |
| advertising_proxy_error_type advertising_proxy_remove_nat64_prefix |
| ( |
| advertising_proxy_conn_ref NONNULL *NULLABLE conn_ref, |
| run_context_t NONNULL clientq, |
| advertising_proxy_reply NULLABLE callback, |
| const uint8_t *NONNULL prefix_buf, |
| size_t buf_len |
| ); |
| |
| DNS_SERVICES_EXPORT |
| advertising_proxy_error_type advertising_proxy_remove_prefix |
| ( |
| advertising_proxy_conn_ref NONNULL *NULLABLE conn_ref, |
| run_context_t NONNULL clientq, |
| advertising_proxy_reply NULLABLE callback, |
| const uint8_t *NONNULL prefix_buf, |
| size_t buf_len |
| ); |
| |
| /* advertising_proxy_stop |
| * |
| * For testing, stop advertising service |
| * |
| * advertising_proxy_stop() Parameters: |
| * |
| * conn_ref: A pointer to advertising_proxy_conn_ref that is initialized to NULL. |
| * If the call succeeds it will be initialized to a non-NULL value. |
| * The same conn_ref can be used for more than one call. |
| * |
| * 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. |
| * Callback is not called until either the command has failed, or has completed. |
| * |
| * return value: Returns kDNSSDAdvertisingProxy_NoError when no error otherwise returns an |
| * error code indicating the error that occurred. Note: A return value of |
| * kDNSSDAdvertisingProxy_NoError does not mean that the service advertising |
| * was stopped successfully. The callback may asynchronously return an |
| * error (such as kDNSSDAdvertisingProxy_DaemonNotRunning). |
| * |
| */ |
| |
| DNS_SERVICES_EXPORT |
| advertising_proxy_error_type advertising_proxy_stop |
| ( |
| advertising_proxy_conn_ref NONNULL *NULLABLE conn_ref, |
| run_context_t NONNULL clientq, |
| advertising_proxy_reply NULLABLE callback |
| ); |
| |
| /* advertising_proxy_get_ula |
| * |
| * For testing, advertise it's own prefix to thread network |
| * |
| * advertising_proxy_get_ula() Parameters: |
| * |
| * conn_ref: A pointer to advertising_proxy_conn_ref that is initialized to NULL. |
| * If the call succeeds it will be initialized to a non-NULL value. |
| * The same conn_ref can be used for more than one call. |
| * |
| * 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. |
| * Callback is not called until either the command has failed, or has completed. |
| * The response object in the callback is a pointer to a uint64_t containing the |
| * prefix in host byte order. |
| * |
| * return value: Returns kDNSSDAdvertisingProxy_NoError when no error otherwise returns an |
| * error code indicating the error that occurred. Note: A return value of |
| * kDNSSDAdvertisingProxy_NoError does not mean that the prefix advertising |
| * was successful. The callback may asynchronously return an |
| * error (such as kDNSSDAdvertisingProxy_DaemonNotRunning) |
| * |
| */ |
| |
| DNS_SERVICES_EXPORT |
| advertising_proxy_error_type advertising_proxy_get_ula |
| ( |
| advertising_proxy_conn_ref NONNULL *NULLABLE conn_ref, |
| run_context_t NONNULL clientq, |
| advertising_proxy_reply NULLABLE callback |
| ); |
| |
| /* advertising_proxy_disable_srp_replication |
| * |
| * For testing, disable SRP replication. |
| * |
| * advertising_proxy_disable_srp_replication() Parameters: |
| * |
| * conn_ref: A pointer to advertising_proxy_conn_ref that is initialized to NULL. |
| * If the call succeeds it will be initialized to a non-NULL value. |
| * The same conn_ref can be used for more than one call. |
| * |
| * 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. |
| * Callback is not called until either the command has failed, or has completed. |
| * |
| * return value: Returns kDNSSDAdvertisingProxy_NoError when no error otherwise returns an |
| * error code indicating the error that occurred. Note: A return value of |
| * kDNSSDAdvertisingProxy_NoError does not mean that srp replication was disabled |
| * successfully. The callback may asynchronously return an |
| * error (such as kDNSSDAdvertisingProxy_DaemonNotRunning) |
| * |
| */ |
| |
| DNS_SERVICES_EXPORT |
| advertising_proxy_error_type advertising_proxy_disable_srp_replication |
| ( |
| advertising_proxy_conn_ref NONNULL *NULLABLE conn_ref, |
| run_context_t NONNULL clientq, |
| advertising_proxy_reply NULLABLE callback |
| ); |
| |
| /* advertising_proxy_undrop_srpl_advertisement |
| * |
| * For testing, undrop_srpl_advertisement |
| * |
| * advertising_proxy_undrop_srpl_advertisement() Parameters: |
| * |
| * conn_ref: A pointer to advertising_proxy_conn_ref that is initialized to NULL. |
| * If the call succeeds it will be initialized to a non-NULL value. |
| * The same conn_ref can be used for more than one call. |
| * |
| * 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. |
| * Callback is not called until either the command has failed, or has completed. |
| * |
| * return value: Returns kDNSSDAdvertisingProxy_NoError when no error otherwise returns an |
| * error code indicating the error that occurred. Note: A return value of |
| * kDNSSDAdvertisingProxy_NoError does not mean that srp replication advertisements |
| * were successfully resumed. The callback may asynchronously return an |
| * error (such as kDNSSDAdvertisingProxy_DaemonNotRunning) |
| * |
| */ |
| |
| DNS_SERVICES_EXPORT |
| advertising_proxy_error_type advertising_proxy_undrop_srpl_advertisement |
| ( |
| advertising_proxy_conn_ref NONNULL *NULLABLE conn_ref, |
| run_context_t NONNULL clientq, |
| advertising_proxy_reply NULLABLE callback |
| ); |
| |
| /* advertising_proxy_undrop_srpl_connection |
| * |
| * For testing, restart all dropped srpl connections |
| * |
| * advertising_proxy_undrop_srpl_connection() Parameters: |
| * |
| * conn_ref: A pointer to advertising_proxy_conn_ref that is initialized to NULL. |
| * If the call succeeds it will be initialized to a non-NULL value. |
| * The same conn_ref can be used for more than one call. |
| * |
| * 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. |
| * Callback is not called until either the command has failed, or has completed. |
| * |
| * return value: Returns kDNSSDAdvertisingProxy_NoError when no error otherwise returns an |
| * error code indicating the error that occurred. Note: A return value of |
| * kDNSSDAdvertisingProxy_NoError does not mean that srp replication connections |
| * were successfully resumed. The callback may asynchronously return an |
| * error (such as kDNSSDAdvertisingProxy_DaemonNotRunning) |
| * |
| */ |
| |
| DNS_SERVICES_EXPORT |
| advertising_proxy_error_type advertising_proxy_undrop_srpl_connection |
| ( |
| advertising_proxy_conn_ref NONNULL *NULLABLE conn_ref, |
| run_context_t NONNULL clientq, |
| advertising_proxy_reply NULLABLE callback |
| ); |
| |
| /* advertising_proxy_unblock_anycast_service |
| * |
| * For testing, unblock_anycast_service |
| * |
| * advertising_proxy_unblock_anycast_service() Parameters: |
| * |
| * conn_ref: A pointer to advertising_proxy_conn_ref that is initialized to NULL. |
| * If the call succeeds it will be initialized to a non-NULL value. |
| * The same conn_ref can be used for more than one call. |
| * |
| * 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. |
| * Callback is not called until either the command has failed, or has completed. |
| * |
| * return value: Returns kDNSSDAdvertisingProxy_NoError when no error otherwise returns an |
| * error code indicating the error that occurred. Note: A return value of |
| * kDNSSDAdvertisingProxy_NoError does not mean that anycast service advertisements |
| * were successfully unblocked. The callback may asynchronously return an |
| * error (such as kDNSSDAdvertisingProxy_DaemonNotRunning) |
| * |
| */ |
| |
| DNS_SERVICES_EXPORT |
| advertising_proxy_error_type advertising_proxy_unblock_anycast_service |
| ( |
| advertising_proxy_conn_ref NONNULL *NULLABLE conn_ref, |
| run_context_t NONNULL clientq, |
| advertising_proxy_reply NULLABLE callback |
| ); |
| |
| /* advertising_proxy_drop_srpl_advertisement |
| * |
| * For testing, drop all srpl advertisements |
| * |
| * advertising_proxy_drop_srpl_advertisement() Parameters: |
| * |
| * conn_ref: A pointer to advertising_proxy_conn_ref that is initialized to NULL. |
| * If the call succeeds it will be initialized to a non-NULL value. |
| * The same conn_ref can be used for more than one call. |
| * |
| * 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. |
| * Callback is not called until either the command has failed, or has completed. |
| * |
| * return value: Returns kDNSSDAdvertisingProxy_NoError when no error otherwise returns an |
| * error code indicating the error that occurred. Note: A return value of |
| * kDNSSDAdvertisingProxy_NoError does not mean that srp replication advertisements |
| * were successfully discontinued. The callback may asynchronously return an |
| * error (such as kDNSSDAdvertisingProxy_DaemonNotRunning) |
| * |
| */ |
| |
| DNS_SERVICES_EXPORT |
| advertising_proxy_error_type advertising_proxy_drop_srpl_advertisement |
| ( |
| advertising_proxy_conn_ref NONNULL *NULLABLE conn_ref, |
| run_context_t NONNULL clientq, |
| advertising_proxy_reply NULLABLE callback |
| ); |
| |
| /* advertising_proxy_drop_srpl_connection |
| * |
| * For testing, drop all srpl connections |
| * |
| * advertising_proxy_drop_srpl_connection() Parameters: |
| * |
| * conn_ref: A pointer to advertising_proxy_conn_ref that is initialized to NULL. |
| * If the call succeeds it will be initialized to a non-NULL value. |
| * The same conn_ref can be used for more than one call. |
| * |
| * 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. |
| * Callback is not called until either the command has failed, or has completed. |
| * |
| * return value: Returns kDNSSDAdvertisingProxy_NoError when no error otherwise returns an |
| * error code indicating the error that occurred. Note: A return value of |
| * kDNSSDAdvertisingProxy_NoError does not mean that srp replication connections |
| * were successfully dropped. The callback may asynchronously return an |
| * error (such as kDNSSDAdvertisingProxy_DaemonNotRunning) |
| * |
| */ |
| |
| DNS_SERVICES_EXPORT |
| advertising_proxy_error_type advertising_proxy_drop_srpl_connection |
| ( |
| advertising_proxy_conn_ref NONNULL *NULLABLE conn_ref, |
| run_context_t NONNULL clientq, |
| advertising_proxy_reply NULLABLE callback |
| ); |
| |
| /* advertising_proxy_start_dropping_push_connections |
| * |
| * For testing, start dropping DNS Push connections every 90 seconds. |
| * |
| * advertising_proxy_start_dropping_push_connections() Parameters: |
| * |
| * conn_ref: A pointer to advertising_proxy_conn_ref that is initialized to NULL. |
| * If the call succeeds it will be initialized to a non-NULL value. |
| * The same conn_ref can be used for more than one call. |
| * |
| * 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. |
| * Callback is not called until either the command has failed, or has completed. |
| * |
| * return value: Returns kDNSSDAdvertisingProxy_NoError when no error otherwise returns an |
| * error code indicating the error that occurred. Note: A return value of |
| * kDNSSDAdvertisingProxy_NoError does not mean that srp replication connections |
| * were successfully dropped. The callback may asynchronously return an |
| * error (such as kDNSSDAdvertisingProxy_DaemonNotRunning) |
| * |
| */ |
| |
| DNS_SERVICES_EXPORT |
| advertising_proxy_error_type advertising_proxy_start_dropping_push_connections |
| ( |
| advertising_proxy_conn_ref NONNULL *NULLABLE conn_ref, |
| run_context_t NONNULL clientq, |
| advertising_proxy_reply NULLABLE callback |
| ); |
| |
| /* advertising_proxy_block_anycast service |
| * |
| * For testing, block anycast service |
| * |
| * advertising_proxy_block_anycast_service() Parameters: |
| * |
| * conn_ref: A pointer to advertising_proxy_conn_ref that is initialized to NULL. |
| * If the call succeeds it will be initialized to a non-NULL value. |
| * The same conn_ref can be used for more than one call. |
| * |
| * 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. |
| * Callback is not called until either the command has failed, or has completed. |
| * |
| * return value: Returns kDNSSDAdvertisingProxy_NoError when no error otherwise returns an |
| * error code indicating the error that occurred. Note: A return value of |
| * kDNSSDAdvertisingProxy_NoError does not mean that anycast service advertisements |
| * were successfully blocked. The callback may asynchronously return an |
| * error (such as kDNSSDAdvertisingProxy_DaemonNotRunning) |
| * |
| */ |
| |
| DNS_SERVICES_EXPORT |
| advertising_proxy_error_type advertising_proxy_block_anycast_service |
| ( |
| advertising_proxy_conn_ref NONNULL *NULLABLE conn_ref, |
| run_context_t NONNULL clientq, |
| advertising_proxy_reply NULLABLE callback |
| ); |
| |
| /* advertising_proxy_start_breaking_time_validation |
| * |
| * For testing, start breaking SIG(0) validation on replicated host messages. This tests that we correctly |
| * handle such failures in the SRP replication protocol. |
| * |
| * advertising_proxy_start_dropping_push_connections() Parameters: |
| * |
| * conn_ref: A pointer to advertising_proxy_conn_ref that is initialized to NULL. |
| * If the call succeeds it will be initialized to a non-NULL value. |
| * The same conn_ref can be used for more than one call. |
| * |
| * 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. |
| * Callback is not called until either the command has failed, or has completed. |
| * |
| * return value: Returns kDNSSDAdvertisingProxy_NoError when no error otherwise returns an |
| * error code indicating the error that occurred. Note: A return value of |
| * kDNSSDAdvertisingProxy_NoError does not mean that srp replication connections |
| * were successfully dropped. The callback may asynchronously return an |
| * error (such as kDNSSDAdvertisingProxy_DaemonNotRunning) |
| * |
| */ |
| |
| DNS_SERVICES_EXPORT |
| advertising_proxy_error_type advertising_proxy_start_breaking_time_validation |
| ( |
| advertising_proxy_conn_ref NONNULL *NULLABLE conn_ref, |
| run_context_t NONNULL clientq, |
| advertising_proxy_reply NULLABLE callback |
| ); |
| |
| /* advertising_proxy_start_start_thread_shutdown |
| * |
| * For testing, start breaking SIG(0) validation on replicated host messages. This tests that we correctly |
| * handle such failures in the SRP replication protocol. |
| * |
| * advertising_proxy_start_dropping_push_connections() Parameters: |
| * |
| * conn_ref: A pointer to advertising_proxy_conn_ref that is initialized to NULL. |
| * If the call succeeds it will be initialized to a non-NULL value. |
| * The same conn_ref can be used for more than one call. |
| * |
| * 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. |
| * Callback is not called until either the command has failed, or has completed. |
| * Completion in this case means that all Thread services and prefixes were |
| * successfully removed from the Thread network data and a network data update |
| * was seen with this information removed, or else two seconds passed without |
| * seeing the update (in which case we give up). |
| * |
| * return value: Returns kDNSSDAdvertisingProxy_NoError when no error otherwise returns an |
| * error code indicating the error that occurred. |
| * |
| */ |
| |
| DNS_SERVICES_EXPORT |
| advertising_proxy_error_type advertising_proxy_start_thread_shutdown |
| ( |
| advertising_proxy_conn_ref NONNULL *NULLABLE conn_ref, |
| run_context_t NONNULL clientq, |
| advertising_proxy_reply NULLABLE callback |
| ); |
| |
| /* advertising_proxy_set-variable |
| * |
| * Set the specified variable to the specified value on the advertising proxy |
| * |
| * advertising_proxy_set_variable() Parameters: |
| * |
| * conn_ref: A pointer to advertising_proxy_conn_ref that is initialized to NULL. |
| * If the call succeeds it will be initialized to a non-NULL value. |
| * The same conn_ref can be used for more than one call. |
| * |
| * 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. |
| * Callback is not called until either the command has failed, or has completed. |
| * |
| * context: Context to return in callback |
| * |
| * variable: Name of variable to set |
| * |
| * value: Value to set. Value is a string which will be interpreted by the advertising proxy, |
| * and can be a quoted string ("\"foo\""), "NULL", a number ("100"), or a boolean |
| * ("true" or "false") depending on the variable's type. |
| * |
| * return value: Returns kDNSSDAdvertisingProxy_NoError when no error otherwise returns an |
| * error code indicating the error that occurred. Note: A return value of |
| * kDNSSDAdvertisingProxy_NoError does not mean that the variable was set, just |
| * that the variable set command was successfully created and sent. |
| * |
| */ |
| |
| DNS_SERVICES_EXPORT |
| advertising_proxy_error_type advertising_proxy_set_variable |
| ( |
| advertising_proxy_conn_ref NONNULL *NULLABLE conn_ref, |
| run_context_t NONNULL clientq, |
| advertising_proxy_response_reply NULLABLE callback, |
| void * NULLABLE context, |
| const char * NONNULL name, |
| const char * NONNULL value |
| ); |
| |
| |
| /* advertising_proxy_ref_dealloc() |
| * |
| * Terminate a connection with the daemon and free memory associated with the advertising_proxy_conn_ref. |
| * When used on a advertising_proxy_conn_ref returned by advertising_proxy_enable, terminates the advertising |
| * proxy. When used on a call that subscribes to notifications about objects managed by the advertising proxy, |
| * discontinues those notifications. |
| * |
| * conn_ref: A advertising_proxy_conn_ref initialized by any of the advertising_proxy_*() calls. |
| * |
| */ |
| DNS_SERVICES_EXPORT void |
| advertising_proxy_ref_dealloc(advertising_proxy_conn_ref NONNULL conn_ref); |
| |
| DNS_SERVICES_EXPORT advertising_proxy_error_type |
| advertising_proxy_resolver_init(os_log_t NULLABLE log_thingy); |
| |
| DNS_SERVICES_EXPORT advertising_proxy_error_type |
| advertising_proxy_browse_create(advertising_proxy_subscription_t *NULLABLE *NONNULL aref, |
| run_context_t NONNULL clientq, const char *NONNULL regtype, |
| advertising_proxy_browse_reply NONNULL callBack, void *NULLABLE context); |
| |
| DNS_SERVICES_EXPORT advertising_proxy_error_type |
| advertising_proxy_resolve_create(advertising_proxy_subscription_t *NULLABLE *NONNULL subscription_ret, |
| run_context_t NONNULL clientq, |
| const char *NONNULL name, const char *NONNULL regtype, |
| const char *NONNULL domain, |
| advertising_proxy_resolve_reply NONNULL callback, void *NULLABLE context); |
| DNS_SERVICES_EXPORT advertising_proxy_error_type |
| advertising_proxy_registrar_create(advertising_proxy_subscription_t *NULLABLE *NONNULL subscription_ret, |
| run_context_t NONNULL clientq, |
| advertising_proxy_registrar_reply NONNULL callback, |
| void *NULLABLE context); |
| DNS_SERVICES_EXPORT advertising_proxy_error_type |
| advertising_proxy_get_addresses(advertising_proxy_subscription_t *NONNULL *NULLABLE subscription_ret, run_context_t NONNULL clientq, |
| const char *NULLABLE name, advertising_proxy_address_reply NONNULL callback, void *NULLABLEcontext); |
| |
| #define advertising_proxy_subscription_retain(subscription) advertising_proxy_subscription_retain_(subscription, __FILE__, __LINE__) |
| DNS_SERVICES_EXPORT advertising_proxy_error_type |
| advertising_proxy_subscription_retain_(advertising_proxy_subscription_t *NONNULL subscription, const char *NONNULL file, int line); |
| |
| #define advertising_proxy_subscription_release(subscription) advertising_proxy_subscription_release_(subscription, __FILE__, __LINE__) |
| DNS_SERVICES_EXPORT advertising_proxy_error_type |
| advertising_proxy_subscription_release_(advertising_proxy_subscription_t *NONNULL subscription, const char *NONNULL file, int line); |
| |
| DNS_SERVICES_EXPORT advertising_proxy_error_type |
| advertising_proxy_subscription_cancel(advertising_proxy_subscription_t *NONNULL subscription); |
| __END_DECLS |
| #endif /* DNSSD_PROXY_SERVICES_H */ |
| |
| // Local Variables: |
| // mode: C |
| // tab-width: 4 |
| // c-file-style: "bsd" |
| // c-basic-offset: 4 |
| // fill-column: 108 |
| // indent-tabs-mode: nil |
| // End: |