49 #if VER_PRODUCTBUILD < 6000
56 PSTR pRegularExpression;
64 #define P_HAS_RESOLV_H 1 // set if using Unix-style DNS routines
65 #include <arpa/nameser.h>
67 #if defined(P_MACOSX) || defined(P_IOS)
68 #include <arpa/nameser_compat.h>
91 #define DNS_STATUS int
92 #define DNS_TYPE_SRV T_SRV
93 #define DNS_TYPE_MX T_MX
94 #define DNS_TYPE_A T_A
95 #define DNS_TYPE_AAAA T_AAAA
96 #define DNS_TYPE_NAPTR T_NAPTR
97 #define DnsFreeRecordList 1
98 #define DNS_QUERY_STANDARD 0
99 #define DNS_QUERY_BYPASS_CACHE 0
101 typedef struct _DnsAData {
105 typedef struct _DnsAAAAData {
110 char pNameExchange[MAXDNAME];
115 char pNameHost[MAXDNAME];
118 typedef struct _DnsSRVData {
119 char pNameTarget[MAXDNAME];
125 typedef struct _DnsNULLData {
130 typedef struct _DnsRecordFlags
132 unsigned Section : 2;
134 unsigned CharSet : 2;
136 unsigned Reserved : 24;
139 typedef enum _DnsSection
185 #endif // P_HAS_RESOLV_H
222 template <
unsigned type,
class RecordListType,
class RecordType>
228 recordList.RemoveAll();
242 while (dnsRecord != NULL) {
243 RecordType * record = recordList.HandleDNSRecord(dnsRecord, results);
245 recordList.Append(record);
246 dnsRecord = dnsRecord->
pNext;
249 return recordList.GetSize() != 0;
262 void PrintOn(ostream & strm)
const;
274 void PrintOn(ostream & strm) const;
291 {
return Lookup<DNS_TYPE_SRV, SRVRecordList, SRVRecord>(service, serviceList); }
298 SRVRecordList & serviceList
310 SRVRecordList & serviceList
347 Comparison Compare(
const PObject & obj)
const;
348 void PrintOn(ostream & strm)
const;
358 void PrintOn(ostream & strm) const;
374 MXRecordList & serviceList
376 {
return Lookup<DNS_TYPE_MX, MXRecordList, MXRecord>(domain, serviceList); }
383 MXRecordList & serviceList
392 #endif // P_DNS_RESOLVER
394 #endif // PTLIB_PDNS_H
#define DNS_STATUS
Definition: pdns.h:91
PDNS_RECORD DnsRecordSetCopy(PDNS_RECORD src)
DNS_AAAA_DATA AAAA
Definition: pdns.h:162
DnsRecord * PDNS_RECORD
Definition: pdns.h:171
PWORDArray priList
Definition: pdns.h:283
PINDEX lastIndex
Definition: pdns.h:366
WORD priority
Definition: pdns.h:268
WORD weight
Definition: pdns.h:269
DNS_PTR_DATA NS
Definition: pdns.h:164
#define PCLASSINFO(cls, par)
Declare all the standard PTLib class information.
Definition: object.h:2164
PINDEX priPos
Definition: pdns.h:282
#define DNS_QUERY_STANDARD
Definition: pdns.h:98
PBoolean Lookup(const PString &name, RecordListType &recordList)
Definition: pdns.h:223
DNS_RECORD_FLAGS S
flags as structure
Definition: pdns.h:157
DNS_MX_DATA MX
Definition: pdns.h:163
WORD wType
Definition: pdns.h:152
DNS_STATUS DnsQuery_A(const char *service, WORD requestType, DWORD options, void *, PDNS_RECORD *results, void *)
SRVRecord()
Definition: pdns.h:258
Comparison
Result of the comparison operation performed by the Compare() function.
Definition: object.h:2251
WORD wPriority
Definition: pdns.h:120
PString hostName
Definition: pdns.h:350
DWORD DW
flags as DWORD
Definition: pdns.h:156
PString hostName
Definition: pdns.h:264
PDNS_RECORD m_records
Definition: pdns.h:212
WORD wWeight
Definition: pdns.h:121
virtual PBoolean IsEmpty() const
Determine if the string is empty.
PBoolean used
Definition: pdns.h:352
MXRecord()
Definition: pdns.h:345
void PrintOn(ostream &strm) const
Output the contents of the object to the stream.
WORD port
Definition: pdns.h:267
WORD preference
Definition: pdns.h:353
union DnsRecord::@23 Data
DWORD IpAddress
Definition: pdns.h:102
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:170
DNS_A_DATA A
Definition: pdns.h:161
bool PBoolean
Definition: object.h:174
WORD wPreference
Definition: pdns.h:111
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:381
The character string class.
Definition: pstring.h:108
PIPSocket::Address hostAddress
Definition: pdns.h:265
DNS_SECTION
Definition: pdns.h:139
WORD wPort
Definition: pdns.h:122
PIPSocket::Address hostAddress
Definition: pdns.h:351
DWORD dwByteCount
Definition: pdns.h:126
DnsRecord * pNext
Definition: pdns.h:150
NAPTRRecord * GetNext(const char *service=NULL)
void PrintOn(ostream &strm) const
char pName[MAXDNAME]
Definition: pdns.h:151
PBoolean GetSRVRecords(const PString &service, SRVRecordList &serviceList)
provided for backwards compatibility
Definition: pdns.h:296
This is a list collection class of PString objects.
Definition: pstring.h:2562
std::vector< PIPSocket::AddressAndPort > PIPSocketAddressAndPortVector
Definition: ipsock.h:957
union DnsRecord::@22 Flags
A class describing an IP address.
Definition: ipsock.h:59
PDnsRecords()
Definition: pdns.h:205
DNS_SRV_DATA SRV
Definition: pdns.h:165
PBoolean used
Definition: pdns.h:266
NAPTRRecord * GetFirst(const char *service=NULL)
This template class maps the PAbstractArray to a specific element type.
Definition: array.h:504
PDNS::NAPTRRecord * HandleDNSRecord(PDNS_RECORD dnsRecord, PDNS_RECORD results)
PBoolean LookupSRV(const PString &srvQuery, WORD defaultPort, PIPSocketAddressAndPortVector &addrList)
Perform a DNS lookup of the specified service.
PBoolean GetRecords(const PString &domain, NAPTRRecordList &recordList)
Definition: enum.h:79
Ultimate parent class for all objects in the class library.
Definition: object.h:2204
This class describes a Universal Resource Locator.
Definition: url.h:56
WORD wDataLength
Definition: pdns.h:153
DNS_NULL_DATA Null
Definition: pdns.h:166
#define PDECLARE_SORTED_LIST(cls, T)
Begin declaration of a sorted list class.
Definition: lists.h:1131