53 #if VER_PRODUCTBUILD < 6000
60 PSTR pRegularExpression;
68 #define P_HAS_RESOLVER 1 // set if using Unix-style DNS routines
69 #include <arpa/nameser.h>
71 #if defined(P_MACOSX) && (P_MACOSX >= 700)
72 #include <arpa/nameser_compat.h>
95 #define DNS_STATUS int
96 #define DNS_TYPE_SRV T_SRV
97 #define DNS_TYPE_MX T_MX
98 #define DNS_TYPE_A T_A
99 #define DNS_TYPE_AAAA T_AAAA
100 #define DNS_TYPE_NAPTR T_NAPTR
101 #define DnsFreeRecordList 1
102 #define DNS_QUERY_STANDARD 0
103 #define DNS_QUERY_BYPASS_CACHE 0
105 typedef struct _DnsAData {
109 typedef struct _DnsAAAAData {
114 char pNameExchange[MAXDNAME];
119 char pNameHost[MAXDNAME];
122 typedef struct _DnsSRVData {
123 char pNameTarget[MAXDNAME];
129 typedef struct _DnsNULLData {
134 typedef struct _DnsRecordFlags
136 unsigned Section : 2;
138 unsigned CharSet : 2;
140 unsigned Reserved : 24;
143 typedef enum _DnsSection
189 #endif // P_HAS_RESOLVER
212 template <
unsigned type,
class RecordListType,
class RecordType>
218 recordList.RemoveAll();
232 while (dnsRecord != NULL) {
233 RecordType * record = recordList.HandleDNSRecord(dnsRecord, results);
235 recordList.Append(record);
236 dnsRecord = dnsRecord->
pNext;
242 return recordList.GetSize() != 0;
255 void PrintOn(ostream & strm)
const;
267 void PrintOn(ostream & strm) const;
284 {
return Lookup<DNS_TYPE_SRV, SRVRecordList, SRVRecord>(service, serviceList); }
291 SRVRecordList & serviceList
303 SRVRecordList & serviceList
338 Comparison Compare(
const PObject & obj)
const;
339 void PrintOn(ostream & strm)
const;
349 void PrintOn(ostream & strm) const;
365 MXRecordList & serviceList
367 {
return Lookup<DNS_TYPE_MX, MXRecordList, MXRecord>(domain, serviceList); }
374 MXRecordList & serviceList
385 #endif // PTLIB_PDNS_H
#define DNS_STATUS
Definition: pdns.h:95
PDNS_RECORD DnsRecordSetCopy(PDNS_RECORD src)
DNS_AAAA_DATA AAAA
Definition: pdns.h:166
DnsRecord * PDNS_RECORD
Definition: pdns.h:175
PWORDArray priList
Definition: pdns.h:276
PINDEX lastIndex
Definition: pdns.h:357
WORD priority
Definition: pdns.h:261
WORD weight
Definition: pdns.h:262
DNS_PTR_DATA NS
Definition: pdns.h:168
#define PCLASSINFO(cls, par)
Declare all the standard PTLib class information.
Definition: object.h:1049
PINDEX priPos
Definition: pdns.h:275
#define DNS_QUERY_STANDARD
Definition: pdns.h:102
union DnsRecord::@25 Data
PBoolean Lookup(const PString &name, RecordListType &recordList)
Definition: pdns.h:213
DNS_RECORD_FLAGS S
flags as structure
Definition: pdns.h:161
DNS_MX_DATA MX
Definition: pdns.h:167
WORD wType
Definition: pdns.h:156
DNS_STATUS DnsQuery_A(const char *service, WORD requestType, DWORD options, void *, PDNS_RECORD *results, void *)
SRVRecord()
Definition: pdns.h:251
Comparison
Result of the comparison operation performed by the Compare() function.
Definition: object.h:1184
WORD wPriority
Definition: pdns.h:124
PString hostName
Definition: pdns.h:341
DWORD DW
flags as DWORD
Definition: pdns.h:160
PString hostName
Definition: pdns.h:257
WORD wWeight
Definition: pdns.h:125
virtual PBoolean IsEmpty() const
Determine if the string is empty.
PBoolean used
Definition: pdns.h:343
MXRecord()
Definition: pdns.h:336
BOOL PBoolean
Definition: object.h:102
void PrintOn(ostream &strm) const
Output the contents of the object to the stream.
PBoolean GetRecords(const PString &service, SRVRecordList &serviceList)
return a list of DNS SRV record with the specified service type
Definition: pdns.h:283
WORD port
Definition: pdns.h:260
WORD preference
Definition: pdns.h:344
Array of unsigned short integers.
Definition: array.h:710
union DnsRecord::@24 Flags
DWORD IpAddress
Definition: pdns.h:106
DNS_STATUS Cached_DnsQuery(const char *name, WORD type, DWORD options, void *extra, PDNS_RECORD *queryResults, void *reserved)
void DnsRecordListFree(PDNS_RECORD rec, int FreeType)
DnsRecord DNS_RECORD
Definition: pdns.h:174
DNS_A_DATA A
Definition: pdns.h:165
WORD wPreference
Definition: pdns.h:115
Comparison Compare(const PObject &obj) const
Compare the two objects and return their relative rank.
PBoolean GetMXRecords(const PString &domain, MXRecordList &serviceList)
provided for backwards compatibility
Definition: pdns.h:372
The character string class.
Definition: pstring.h:108
std::vector< PIPSocketAddressAndPort > PIPSocketAddressAndPortVector
Definition: ipsock.h:796
PIPSocket::Address hostAddress
Definition: pdns.h:258
DNS_SECTION
Definition: pdns.h:143
WORD wPort
Definition: pdns.h:126
PIPSocket::Address hostAddress
Definition: pdns.h:342
DWORD dwByteCount
Definition: pdns.h:130
DnsRecord * pNext
Definition: pdns.h:154
NAPTRRecord * GetNext(const char *service=NULL)
void PrintOn(ostream &strm) const
char pName[MAXDNAME]
Definition: pdns.h:155
PBoolean GetSRVRecords(const PString &service, SRVRecordList &serviceList)
provided for backwards compatibility
Definition: pdns.h:289
This is a list collection class of PString objects.
Definition: pstring.h:2184
A class describing an IP address.
Definition: ipsock.h:75
DNS_SRV_DATA SRV
Definition: pdns.h:169
PBoolean used
Definition: pdns.h:259
NAPTRRecord * GetFirst(const char *service=NULL)
PDNS::NAPTRRecord * HandleDNSRecord(PDNS_RECORD dnsRecord, PDNS_RECORD results)
#define DnsFreeRecordList
Definition: pdns.h:101
PBoolean LookupSRV(const PString &srvQuery, WORD defaultPort, PIPSocketAddressAndPortVector &addrList)
Perform a DNS lookup of the specified service.
Ultimate parent class for all objects in the class library.
Definition: object.h:1118
This class describes a Universal Resource Locator.
Definition: url.h:54
WORD wDataLength
Definition: pdns.h:157
DNS_NULL_DATA Null
Definition: pdns.h:170
#define PDECLARE_SORTED_LIST(cls, T)
Begin declaration of a sorted list class.
Definition: lists.h:1028