1.1 --- a/epoc32/include/dns_qry.h Wed Mar 31 12:27:01 2010 +0100
1.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
1.3 @@ -1,350 +0,0 @@
1.4 -/**
1.5 -* Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
1.6 -* All rights reserved.
1.7 -* This component and the accompanying materials are made available
1.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
1.9 -* which accompanies this distribution, and is available
1.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
1.11 -*
1.12 -* Initial Contributors:
1.13 -* Nokia Corporation - initial contribution.
1.14 -*
1.15 -* Contributors:
1.16 -*
1.17 -* Description:
1.18 -* DNS queries and results definition
1.19 -*
1.20 -*
1.21 -*/
1.22 -
1.23 -
1.24 -
1.25 -
1.26 -
1.27 -/**
1.28 - @file dns_qry.h
1.29 - @publishedPartner
1.30 - @released
1.31 -*/
1.32 -
1.33 -#ifndef __DNS_QRY_H__
1.34 -#define __DNS_QRY_H__
1.35 -
1.36 -#include <e32base.h>
1.37 -#include <es_sock.h>
1.38 -#include <in_sock.h>
1.39 -
1.40 -//-- DNS RR class values, see RFC 1035
1.41 -const TUint16 KDnsRRClassIN = 1; ///< Internet class
1.42 -const TUint16 KDnsRRClassCS = 2; ///< CSNET class
1.43 -const TUint16 KDnsRRClassCH = 3; ///< CHAOS class
1.44 -const TUint16 KDnsRRClassHS = 4; ///< Hesiod
1.45 -
1.46 -
1.47 -//-- DNS RR and query type values, see RFC1035
1.48 -const TUint16 KDnsRRTypeInvalid = 0; ///< invalid terminal value
1.49 -const TUint16 KDnsRRTypeA = 1; ///< host address RR type
1.50 -const TUint16 KDnsRRTypeNS = 2; ///< authoritative name server
1.51 -const TUint16 KDnsRRTypeCNAME = 5; ///< canonical name
1.52 -const TUint16 KDnsRRTypeWKS = 11; ///< well known service description
1.53 -const TUint16 KDnsRRTypePTR = 12; ///< domain name pointer
1.54 -const TUint16 KDnsRRTypeHINFO = 13; ///< host information
1.55 -const TUint16 KDnsRRTypeMX = 15; ///< mail exchange
1.56 -const TUint16 KDnsRRTypeTXT = 16; ///< text strings
1.57 -
1.58 -const TUint16 KDnsRRTypeAAAA = 28; ///< AAAA RR type
1.59 -const TUint16 KDnsRRTypeSRV = 33; ///< SRV RR type
1.60 -const TUint16 KDnsRRTypeNAPTR = 35; ///< NAPTR RR type
1.61 -
1.62 -//-- DNS RR query values only
1.63 -const TUint16 KDnsQTypeAXFR = 252; ///< request for a transfer of an entire zone
1.64 -const TUint16 KDnsQTypeMAILB = 253; ///< request for mailbox-related records (MB, MG or MR)
1.65 -const TUint16 KDnsQTypeANY = 255; ///< request for all records
1.66 -
1.67 -/**
1.68 -DNS query buffer type
1.69 -@internalTechnology
1.70 -*/
1.71 -typedef TBuf8<255> TDnsQryData;
1.72 -
1.73 -/**
1.74 -representation of domain name in terms of DNS responses
1.75 -@internalTechnology
1.76 -*/
1.77 -typedef TBuf8<255> TDnsDomainName;
1.78 -
1.79 -/**
1.80 -representation of a label data in terms of DNS responses
1.81 -@internalTechnology
1.82 -*/
1.83 -typedef TBuf8<63> TDnsLabel;
1.84 -
1.85 -/**
1.86 -representation of a character string in DNS responses
1.87 -@internalTechnology
1.88 -*/
1.89 -typedef TBuf8<255> TDnsString;
1.90 -
1.91 -
1.92 -class TDnsQuery
1.93 -/**
1.94 -DNS query representation.
1.95 -See RFC1035.
1.96 -
1.97 -@publishedPartner
1.98 -@released
1.99 -*/
1.100 - {
1.101 - public:
1.102 - inline TDnsQuery(); //- default constructor
1.103 - inline TDnsQuery(const TDesC8& aQryDomainName, TUint16 aType, TUint16 aClass = KDnsRRClassIN);
1.104 -
1.105 - inline TUint16 Type() const;
1.106 - inline TUint16 Class() const;
1.107 - inline const TDesC8& Data() const;
1.108 -
1.109 - inline void SetType(TUint16 aType);
1.110 - inline void SetClass(TUint16 aClass);
1.111 - inline void SetData(const TDesC8& aData);
1.112 -
1.113 - protected:
1.114 -
1.115 - TUint16 iQryType; ///< DNS query code
1.116 - TUint16 iQryClass; ///< DNS query class code
1.117 - TDnsQryData iQryData; ///< DNS query data (buffer)
1.118 -
1.119 - };
1.120 -
1.121 -typedef TPckgBuf<TDnsQuery> TDnsQueryBuf;
1.122 -
1.123 -
1.124 -
1.125 -class TDnsQryRespBase
1.126 -/**
1.127 -DNS query response representation.
1.128 -This is a base class and is not intended to be instantinated.
1.129 -See RFC1035.
1.130 -
1.131 -@publishedPartner
1.132 -@released
1.133 -*/
1.134 - {
1.135 - protected:
1.136 - //-- protected constructors to make instantination of this class impossible.
1.137 - inline TDnsQryRespBase();
1.138 - inline TDnsQryRespBase(TUint16 aRRespType, TUint16 aRRClass);
1.139 -
1.140 - public:
1.141 -
1.142 - inline TUint16 RRType() const;
1.143 - inline TUint16 RRClass() const;
1.144 - inline TUint32 RRTtl() const;
1.145 -
1.146 - inline void SetRRTtl (TUint32 aRRTtl);
1.147 -
1.148 - protected:
1.149 - //-- common data members for all DNS query results
1.150 - const TUint16 iRespType; ///< RR type
1.151 - const TUint16 iRespClass; ///< RR Class
1.152 - TUint32 iRespTtl; ///< RR TTL
1.153 -
1.154 - };
1.155 -
1.156 -
1.157 -class TDnsRespSRV : public TDnsQryRespBase
1.158 -/**
1.159 -DNS SRV query response representation.
1.160 -See RFC2782.
1.161 -
1.162 -@publishedPartner
1.163 -@released
1.164 -*/
1.165 - {
1.166 - public:
1.167 -
1.168 - inline TDnsRespSRV();
1.169 -
1.170 - inline TUint16 Priority() const;
1.171 - inline TUint16 Weight() const;
1.172 - inline TUint16 Port() const;
1.173 - inline const TDesC8& Target() const;
1.174 -
1.175 - inline void SetPriority(TUint16 aPriority);
1.176 - inline void SetWeight (TUint16 aWeight);
1.177 - inline void SetPort (TUint16 aPort);
1.178 - inline void SetTarget (const TDesC8& aTarget);
1.179 -
1.180 - protected:
1.181 -
1.182 - TUint16 iPriority; ///< The priority of this target host
1.183 - TUint16 iWeight; ///< the value of the weight field
1.184 - TUint16 iPort; ///< port number
1.185 - TDnsDomainName iTarget; ///< domain name of the target host.
1.186 - };
1.187 -
1.188 -typedef TPckgBuf<TDnsRespSRV> TDnsRespSRVBuf;
1.189 -
1.190 -class TDnsRespA : public TDnsQryRespBase
1.191 -/**
1.192 -DNS Host Address query response representation.
1.193 -See RFC1034, 1035.
1.194 -
1.195 -@publishedPartner
1.196 -@released
1.197 -*/
1.198 - {
1.199 - public:
1.200 -
1.201 - TDnsRespA() : TDnsQryRespBase(KDnsRRTypeA, KDnsRRClassIN) {}
1.202 -
1.203 - inline const TInetAddr& HostAddress() const;
1.204 - inline void SetHostAddress(const TInetAddr& aInetAddr);
1.205 -
1.206 - protected:
1.207 - TInetAddr iInetAddr; ///< Host address
1.208 - };
1.209 -
1.210 -typedef TPckgBuf<TDnsRespA> TDnsRespABuf;
1.211 -
1.212 -
1.213 -class TDnsRespAAAA : public TDnsQryRespBase
1.214 -/**
1.215 -IPv6 DNS Host Address query response representation.
1.216 -See RFC1035, RFC1886
1.217 -
1.218 -@publishedPartner
1.219 -@released
1.220 -*/
1.221 - {
1.222 - public:
1.223 -
1.224 - TDnsRespAAAA() : TDnsQryRespBase(KDnsRRTypeAAAA, KDnsRRClassIN) {}
1.225 -
1.226 - inline const TInetAddr& HostAddress() const;
1.227 - inline void SetHostAddress(const TInetAddr& aInetAddr);
1.228 -
1.229 - protected:
1.230 - TInetAddr iInetAddr; ///< Host address
1.231 - };
1.232 -
1.233 -typedef TPckgBuf<TDnsRespAAAA> TDnsRespAAAABuf;
1.234 -
1.235 -
1.236 -class TDnsRespPTR : public TDnsQryRespBase
1.237 -/**
1.238 -DNS Domain Name query response representation.
1.239 -See RFC1034.
1.240 -
1.241 -@publishedPartner
1.242 -@released
1.243 -*/
1.244 - {
1.245 - public:
1.246 -
1.247 - TDnsRespPTR() : TDnsQryRespBase(KDnsRRTypePTR, KDnsRRClassIN) {}
1.248 -
1.249 - inline const TDesC8& HostName() const;
1.250 - inline void SetHostName(const TDesC8& aHostName);
1.251 -
1.252 - protected:
1.253 - TDnsDomainName iName; ///< domain this RR refers to.
1.254 - };
1.255 -
1.256 -typedef TPckgBuf<TDnsRespPTR> TDnsRespPTRBuf;
1.257 -
1.258 -
1.259 -class TDnsRespNAPTR : public TDnsQryRespBase
1.260 -/**
1.261 -DNS NAPTR query response representation.
1.262 -See RFC2915.
1.263 -
1.264 -@publishedPartner
1.265 -@released
1.266 -*/
1.267 - {
1.268 - public:
1.269 -
1.270 - inline TDnsRespNAPTR();
1.271 -
1.272 - inline TUint16 Order() const;
1.273 - inline TUint16 Pref() const;
1.274 - inline const TDesC8& Flags() const;
1.275 - inline const TDesC8& Service() const;
1.276 - inline const TDesC8& Regexp() const;
1.277 - inline const TDesC8& Replacement() const;
1.278 -
1.279 - inline void SetOrder(TUint16 aOrder);
1.280 - inline void SetPref(TUint16 aPref);
1.281 - inline void SetFlags(const TDesC8& aFlags);
1.282 - inline void SetService(const TDesC8& aService);
1.283 - inline void SetRegexp(const TDesC8& aRegexp);
1.284 - inline void SetReplacement(const TDesC8& aReplacement);
1.285 -
1.286 - protected:
1.287 -
1.288 - TUint16 iOrder; ///< RR Order field
1.289 - TUint16 iPref; ///< RR Preference field
1.290 - TDnsString iFlags; ///< RR Flags string
1.291 - TDnsString iService; ///< service name(s) available
1.292 - TDnsString iRegexp; ///< RR Regexp field
1.293 - TDnsDomainName iReplacement;///< RR Replacement field
1.294 - };
1.295 -
1.296 -typedef TPckgBuf<TDnsRespNAPTR> TDnsRespNAPTRBuf;
1.297 -
1.298 -class TDnsRespMX: public TDnsQryRespBase
1.299 -/**
1.300 -DNS MX query response representation.
1.301 -See RFC1035, RFC974.
1.302 -
1.303 -@publishedPartner
1.304 -@released
1.305 -*/
1.306 - {
1.307 - public:
1.308 -
1.309 - TDnsRespMX() : TDnsQryRespBase(KDnsRRTypeMX, KDnsRRClassIN) {}
1.310 -
1.311 - inline TUint16 Pref() const;
1.312 - inline const TDesC8& HostName() const;
1.313 -
1.314 - inline void SetPref(TUint16 aPref);
1.315 - inline void SetHostName(const TDesC8& aHostName);
1.316 -
1.317 - protected:
1.318 -
1.319 - TUint16 iPref; ///< RR Preference field.
1.320 - TDnsDomainName iHostName; ///< Host name.
1.321 -
1.322 - };
1.323 -
1.324 -typedef TPckgBuf<TDnsRespMX> TDnsRespMXBuf;
1.325 -
1.326 -// -- DNS query type value, DoCoMo Cache requirement
1.327 -// This is used in conjunction with RHostResolver::Query
1.328 -// Example usage:
1.329 -//
1.330 -// TDnsQueryBuf dnsQryBuf;
1.331 -// TDnsRespABuf dummy;
1.332 -//
1.333 -// dnsQryBuf().SetType(KDnsQTypeCacheClear);
1.334 -// resolver.Query(dnsQryBuf, dummy, status);
1.335 -// User::WaitForRequest(status);
1.336 -//
1.337 -const TUint16 KDnsQTypeCacheClear = 99; ///< Resolver Cache Clear type
1.338 -// -- DNS non-recursive look up, DoCoMo requirement
1.339 -// This is used in conjunction with RHostResolver::GetByName.
1.340 -// Example usage:
1.341 -//
1.342 -// TNameEntry nameEntry;
1.343 -// TBuf<256> hostName(KDnsNonrecursive);
1.344 -// hostName.Append(_L("www.symbian.com"));
1.345 -//
1.346 -// resolver.GetByName(hostName,nameEntry, status);
1.347 -// User::WaitForRequest(status);
1.348 -//
1.349 -_LIT(KDnsNonrecursive, "NONRECURSIVE?");
1.350 -
1.351 -#include "dns_qry.inl"
1.352 -
1.353 -#endif //__DNS_QRY_H__