1 /* test-dnssd.h 2 * 3 * Copyright (c) 2023 Apple Inc. All rights reserved. 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at 8 * 9 * https://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 * 17 * DNSSD intercept API for testing srp-mdns-proxy 18 */ 19 20 typedef struct dns_service_event dns_service_event_t; 21 typedef enum { 22 dns_service_event_type_register, 23 dns_service_event_type_register_record, 24 dns_service_event_type_remove_record, 25 dns_service_event_type_update_record, 26 dns_service_event_type_ref_deallocate, 27 dns_service_event_type_register_callback, 28 dns_service_event_type_register_record_callback, 29 } dns_service_event_type_t; 30 31 struct dns_service_event { 32 dns_service_event_t *NULLABLE next; 33 srp_server_t *NULLABLE server_state; 34 dns_service_event_type_t event_type; 35 intptr_t sdref; 36 intptr_t parent_sdref; 37 intptr_t rref; 38 DNSServiceFlags flags; 39 uint32_t interface_index; 40 const char *NULLABLE name; 41 const char *NULLABLE regtype; 42 const char *NULLABLE domain; 43 const char *NULLABLE host; 44 uint16_t port; 45 uint16_t rrclass; 46 uint16_t rrtype; 47 uint16_t rdlen; 48 uint32_t ttl; 49 void *NULLABLE rdata; 50 intptr_t attr; 51 intptr_t callBack; 52 intptr_t context; 53 int status; 54 bool consumed; 55 }; 56 57 typedef struct _DNSServiceRef_t dns_service_ref_t; 58 struct _DNSServiceRef_t { 59 srp_server_t *NULLABLE server_state; 60 DNSServiceRef NONNULL sdref; 61 void *NULLABLE context; 62 union { 63 DNSServiceRegisterReply NONNULL register_reply; 64 DNSServiceQueryRecordReply NONNULL query_record_reply; 65 } callback; 66 }; 67 68 typedef struct _DNSRecordRef_t dns_record_ref_t; 69 struct _DNSRecordRef_t { 70 srp_server_t *NULLABLE server_state; 71 DNSRecordRef NONNULL rref; 72 void *NULLABLE context; 73 DNSServiceRegisterRecordReply NULLABLE callback; 74 }; 75 76 bool dns_service_dump_unexpected_events(test_state_t *NONNULL test_state, srp_server_t *NONNULL server_state); 77 dns_service_event_t *NULLABLE dns_service_find_first_register_event_by_name_and_type(srp_server_t *NONNULL state, 78 const char *NONNULL name, 79 const char *NONNULL regtype); 80 dns_service_event_t *NULLABLE dns_service_find_first_register_record_event_by_name(srp_server_t *NONNULL state, 81 const char *NONNULL name); 82 dns_service_event_t *NULLABLE dns_service_find_callback_for_registration(srp_server_t *NONNULL state, 83 dns_service_event_t *NONNULL register_event); 84 dns_service_event_t *NULLABLE dns_service_find_ref_deallocate_event(srp_server_t *NONNULL state); 85 dns_service_event_t *NULLABLE dns_service_find_update_for_register_event(srp_server_t *NONNULL state, 86 dns_service_event_t *NONNULL register_event, 87 dns_service_event_t *NULLABLE after_event); 88 dns_service_event_t *NULLABLE dns_service_find_remove_for_register_event(srp_server_t *NONNULL state, 89 dns_service_event_t *NONNULL register_event, 90 dns_service_event_t *NULLABLE after_event); 91 // Local Variables: 92 // mode: C 93 // tab-width: 4 94 // c-file-style: "bsd" 95 // c-basic-offset: 4 96 // fill-column: 108 97 // indent-tabs-mode: nil 98 // End: 99