Home | History | Annotate | Line # | Download | only in test
      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