53 #pragma comment(lib, "dnsapi.lib")
62 #define P_HAS_RESOLVER 1 // set if using Unix-style DNS routines
63 #include <arpa/nameser.h>
65 #if defined(P_MACOSX) && (P_MACOSX >= 700)
66 #include <arpa/nameser_compat.h>
72 #if defined(_WIN32) && VER_PRODUCTBUILD < 6000
79 PSTR pRegularExpression;
94 #define DnsRecordListFree PDnsRecordListFree
105 #define DNS_STATUS int
106 #define DNS_TYPE_SRV T_SRV
107 #define DNS_TYPE_MX T_MX
108 #define DNS_TYPE_A T_A
109 #define DNS_TYPE_NAPTR T_NAPTR
110 #define DnsFreeRecordList 0
111 #define DNS_QUERY_STANDARD 0
112 #define DNS_QUERY_BYPASS_CACHE 0
114 typedef struct _DnsAData {
119 char pNameExchange[MAXDNAME];
124 char pNameHost[MAXDNAME];
127 typedef struct _DnsSRVData {
128 char pNameTarget[MAXDNAME];
134 typedef struct _DnsNULLData {
139 typedef struct _DnsRecordFlags
141 unsigned Section : 2;
143 unsigned CharSet : 2;
145 unsigned Reserved : 24;
148 typedef enum _DnsSection
184 typedef struct _IP4_ARRAY
202 #endif // P_HAS_RESOLVER
226 template <
unsigned type,
class RecordListType,
class RecordType>
232 recordList.RemoveAll();
246 while (dnsRecord != NULL) {
247 RecordType * record = recordList.HandleDNSRecord(dnsRecord, results);
249 recordList.Append(record);
250 dnsRecord = dnsRecord->
pNext;
256 return recordList.GetSize() != 0;
269 void PrintOn(ostream & strm)
const;
281 void PrintOn(ostream & strm) const;
298 {
return Lookup<DNS_TYPE_SRV, SRVRecordList, SRVRecord>(service, serviceList); }
305 SRVRecordList & serviceList
317 SRVRecordList & serviceList
352 Comparison Compare(
const PObject & obj)
const;
353 void PrintOn(ostream & strm)
const;
363 void PrintOn(ostream & strm) const;
379 MXRecordList & serviceList
381 {
return Lookup<DNS_TYPE_MX, MXRecordList, MXRecord>(domain, serviceList); }
388 MXRecordList & serviceList
399 #endif // PTLIB_PDNS_H