--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/networkprotocols/dnsproxy/dnsproxyserver/inc/dnsproxymsgproc.h Tue Jan 26 15:23:49 2010 +0200
@@ -0,0 +1,105 @@
+//dnsproxymessageproc.h
+/*
+* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* dnsproxymessageproc.h - Dns Proxy message processor
+* @file
+* @internalTechnology
+*
+*/
+
+
+
+
+#ifndef _DNSPROXY_MESSAGE_PROCESSOR_H__
+#define _DNSPROXY_MESSAGE_PROCESSOR_H__
+
+#include <e32base.h>
+#include <es_sock.h>
+#include "in_sock.h"
+#include "dnsproxydb.h"
+#include "message.h"
+
+_LIT(KPTRSUFFIX,"in-addr.arpa");
+const TInt KPTRSufix = 50;
+const TInt KPTR = 50;
+
+class CDnsProxyListener;
+class CDnsProxyMessageProcessor: public CBase
+/*
+* This class constructs the response packet.
+* For constructing the response packet, it will extract the
+* query packets from the queue, then constructs the packt.
+* After constructing the response packet, it will send the constructed
+* packet back to write class for sending it to querying hosts.
+*
+* @internalTechnology
+*/
+ {
+ friend class TDnsProxyNsRecord;
+
+ public:
+ static CDnsProxyMessageProcessor* NewL(CDnsProxyListener& aListener);
+ ~CDnsProxyMessageProcessor();
+ //constructors the DNS response
+ void GetLocalDnsResponseL(TMsgBuf &msgbuf);
+ //finds the suffix of the query name
+ TInt GetQNameSuffixL(TMsgBuf& aMsg);
+ TDnsProxydbElement* LookupPTRInDb(TMsgBuf& aMsg);
+ void GetDnsFailureMessage(TMsgBuf& aMsgBuf);
+
+ private:
+ //constructor
+ CDnsProxyMessageProcessor(CDnsProxyListener& aListener);
+ //destructor
+ void GetRecordsFromDb(TMsgBuf& aMsg,TDnsProxydbElement& aElement);
+ void SetQHeaderBits(TDndHeader &aHdr);
+ //constructs the ANRData as specified in RFC1035 sect4.1.3
+ void GetAnRecordSet(TMsgBuf& aQMsg,TDnsProxydbElement& aElement);
+ //constructs the NSRdata as specified in RFC1035 section 3.3.13
+ void GetNsRecordSetL(TMsgBuf& aQMsg);
+ void GetPTRRecord(TMsgBuf& aMsg,const TDesC8& aName);
+
+ private:
+ CDnsProxyListener& iListener;
+ TInt iAntype;
+ };
+
+class TDnsProxyNsRecord
+/*
+* This class is used for constructing authoritative answer record set
+*
+* @internalTechnology
+*/
+ {
+ public:
+ TDesC8& CreateNSResourceRecord(const TDesC8& aMsg);
+ void ResetBuffer();
+
+ private:
+ void AppendRRLength(const TDesC8& aMsg);
+ void AppendTTLBuf();
+
+ public:
+ TUint16 iQType;
+ TUint16 iCType;
+ TUint32 iTTL;
+ TUint32 iSerialNum;
+ TUint32 iRefreshTime;
+ TUint32 iRetryTime;
+ TUint32 iExpiretime;
+ TBuf8<KDnsMaxMessage> iNSBuf;
+ };
+
+#endif/*_DNSPROXY_MESSAGE_PROCESSOR_H__*/
\ No newline at end of file