networkprotocols/dnsproxy/dnsproxyserver/inc/dnsproxymsgproc.h
changeset 0 af10295192d8
--- /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