--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/networkprotocols/dnsproxy/dnsproxyserver/inc/dnsproxyengine.h Tue Jan 26 15:23:49 2010 +0200
@@ -0,0 +1,190 @@
+//dnsproxyengine.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:
+* dnsproxyengine.h - Dns Engine class
+* @file
+* @internalTechnology
+*
+*/
+
+
+
+#ifndef DNS_PROXY_ENGINE_H
+#define DNS_PROXY_ENGINE_H
+
+#include <es_ini.h>
+#include <es_enum.h>
+#include "dnsproxyserver.h"
+#include "dnsproxydb.h"
+#include "dns_hdr.h"
+
+//Literals constants for reading .ini file
+_LIT(DNS_PROXY_INI_DATA, "resolver.ini");
+_LIT(DNS_PROXY_INI_SECTION, "proxyresolver");
+_LIT(DNS_PROXY_INI_NUM_SOCK_SESSION, "sessioncount");
+_LIT(DNS_PROXY_INI_NUM_RETRIES, "retries");
+_LIT(DNS_PROXY_INI_QUEUE_SIZE, "queuesize");
+_LIT(DNS_PROXY_INI_TTL, "TTL");
+_LIT(DNS_PROXY_INI_DB_SIZE, "dbsize");
+_LIT(DNS_PROXY_INI_TIMER_VAL, "timerval");
+_LIT(DNS_PROXY_INI_SERIAL_NUM, "serialnum");
+_LIT(DNS_PROXY_INI_REFRESH_TIME, "refreshtime");
+_LIT(DNS_PROXY_INI_RETRY_TIME, "retrytime");
+_LIT(DNS_PROXY_INI_EXPIRE_TIME, "expiretime");
+
+const TUint KSessioncount = 1;
+const TUint KRetrycount = 2;
+const TUint KQSize = 20;
+const TUint KTtl = 21600;//dhcp lease timer is 6 hrs
+const TUint KDbSize = 10;
+const TUint KTimerVal = 5;
+const TUint32 KSerialNum = 10000;
+const TUint32 KRefreshTime = 900;
+const TUint32 KRetryTime = 600;
+const TUint32 KExpireTime = 300;
+const TUint32 KAddrLength = 100;
+
+
+
+
+//T Type class for DNS Proxy Configuration parameters
+class TDnsProxyConfigParams
+ {
+public:
+ TUint iSessionCount;//< Max number of Socket sessions
+ TUint iRetryCount; //< Possible number of retries
+ TUint iQSize; //< Queue size limit
+ TUint iTTL; //< Time to Live
+ TUint iDbSize; //< Max number of DB entries
+ TUint iTimerVal; //< Timeout value for response timer
+ TUint32 iSerialNum; //< This is required for NS response
+ TUint32 iRefreshTime; //< This is required for NS response
+ TUint32 iRetryTime; //< This is required for NS response
+ TUint32 iExpiretime; //< This is required for NS response
+ };
+
+
+//forward declaration
+class CDnsProxyListener;
+class CESockIniData;
+class CDnsProxyDb;
+class CDnsServerConfig;
+
+
+/**
+ * This class is an entry point and reads all configuration values and creates
+ * some necessary objects
+ * @internalTechnology
+ * */
+class CDnsProxyEngine:public CBase
+ {
+ public:
+ //two phase construction
+ static CDnsProxyEngine* GetInstanceL();
+ ~CDnsProxyEngine();
+ //Starts DNSProxy. The method is called from DNSProxy server session.
+ TInt Start(const RMessage2& aMessage);
+ //Stops DNSProxy. The method is called from DNSProxy server session.
+ void Stop();
+ //Returns instance of socket server
+ RSocketServ& GetSocketServer();
+ //Returns an instance of Listener
+ CDnsProxyListener* GetProxyListener();
+ // The method updates DNS Proxy DB.
+ TInt AddDbEntryL(const RMessage2& aMsg);
+ //remove entry from db
+ TInt RemoveDbEntry(const RMessage2& aMsg);
+ //This method updates domain name
+ void UpdateDomainName(const RMessage2& aMsg);
+ // The method to update domain info
+ TInt UpdateDomainInfo(const RMessage2& aMsg);
+ void UpdateLocalAddr(TInetAddr& aAddr);
+ // Suffix is available or not
+ TInt IsSuffixAvailable();
+ //This method returns the configuration parameters read from .ini file.
+ const TDnsProxyConfigParams& GetConfig() const;
+ TInt SetDlinkConnectionInfo(const RMessage2 &aMessage);
+ TInt SetUplinkConnectionInfo(const RMessage2 &aMessage);
+
+ protected:
+ // Initializes the member variables
+ void ConstructL();
+
+ private:
+ static CDnsProxyEngine* NewL();
+ //constructor
+ CDnsProxyEngine();
+ //reads the configuation file
+ void ReadConfiguration();
+ //reads the configuation file for specified name /value pair
+ TInt GetIniValue(const TDesC& aSection, const TDesC& aName, TInt aValue=0);
+ //finds the value for given name
+ TBool FindVar(const TDesC& aSection, const TDesC& aVarName, TInt& aResult);
+ //loads the cinfiguaration file
+ TBool LoadConfigurationFile();
+ //unloads cinfiguration file
+ void UnLoadConfigurationFile();
+
+
+ public:
+ TDnsProxyConfigParams iConfigParams; //< Parsed configuration parameters
+ CDnsServerConfig* iProxyServer; //< DNS server configuration
+ CDnsProxyDb* iDnsproxydb; //< DNS Proxy db instance
+ TInetAddr iProxyIfAddr; //< Listener interface address
+ TBuf8<KMaxName> iSuffixInfo;
+
+ private:
+ CESockIniData* iConfigData; //< Used to read config data
+ TInt iConfigDataErr; //< Contains config data error
+ RSocketServ iSockServ; //< socket server handler
+ CDnsProxyListener* iListener; //< Intance of listener object
+ TBool iSuffixAvailable; //< Suffix is available
+
+
+ private:
+ TBuf<KDnsMaxMessage> iBuf; //< Receive buffer
+ TBuf<KDnsMaxMessage> iDomainName;
+ static CDnsProxyEngine* iDnsProxyEngine;
+
+ };
+
+ inline const TDnsProxyConfigParams& CDnsProxyEngine::GetConfig() const
+ /**
+ * This method returns an instance of config params
+ * @internalTechnology
+ * */
+ {
+ return iConfigParams;
+ }
+
+ inline RSocketServ& CDnsProxyEngine::GetSocketServer()
+/**
+ * This method returns an instance of socket server
+ * @internalTechnology
+ * */
+ {
+ return iSockServ;
+ }
+
+inline CDnsProxyListener* CDnsProxyEngine::GetProxyListener()
+/**
+ * This method returns an instance of listener object
+ * @internalTechnology
+ * */
+ {
+ return iListener;
+ }
+
+#endif /* DNS_PROXY_ENGINE_H */