tcpiputils/dhcp/te_dhcp/include/te_dhcpTestServer.h
changeset 0 af10295192d8
child 5 1422c6cd3f0c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tcpiputils/dhcp/te_dhcp/include/te_dhcpTestServer.h	Tue Jan 26 15:23:49 2010 +0200
@@ -0,0 +1,153 @@
+/**
+* Copyright (c) 2003-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:
+*
+*/
+
+
+
+/**
+ @file te_dhcpTestServer.h
+*/
+#if (!defined __DHCPTEST_SERVER_H__)
+#define __DHCPTEST_SERVER_H__
+#include <test/testexecuteserverbase.h>
+
+#include <es_sock.h>
+#include <commdbconnpref.h>
+#include <comms-infras/netcfgextndhcpmsg.h>
+//#include "DHCPIP4Msg.h"
+
+class CDhcpTestServer;
+namespace CommsDat
+	{
+	class CCDIAPRecord;
+	}
+
+/**
+A base class for all DHCP test step classes
+*/
+class CDhcpTestStepBase : public CTestStep
+    {
+protected:
+    
+    TVerdict	doTestStepPreambleL();
+    
+public:
+	void SetTestServer(CDhcpTestServer*);
+
+protected:
+	enum TCurAddrType
+		{
+		KCurAddrNone = 0,
+		KCurAddrGlobal = 1,
+		KCurAddrIPv4LinkLocal = 2,
+		};
+
+protected:
+	void Set_UsingIPv6L(TBool);
+	void SetIAPToUseL(TInt);
+	void MakeIAPPrivateL(TInt);
+
+    TBool   UsingIPv6L(void) const;
+    TInt    IAPToUseL(void);
+	void	InitialServiceLinkL( CMDBSession* aDbSession, CCDIAPRecord* aIapRecord );
+	TBool	IsIAPAddrStaticL();
+	TUint	GetCurrentAddressTypesL( RSocket &socket );
+    
+    TUint   IpAddressFamilyL(void);
+    TInt    DhcpGetRawOptionDataL(RConnection &aConn, TDes8& aBufDes, TUint aOptCode);
+    void	GetDebugHandleL(RConnection &aConn);
+    
+    void    ImmediateCompletionTestL(RConnection &aConn);
+
+	TUint   WAIT_FOR_STATE_CHANGE_WITH_TIMEOUTL( TUint aTimeout );
+	void    GetProvisioningMacL(TDesC16& aSectioName, const TDesC16& aKeyName, TDes8& aHwAddress);
+private:
+    CDhcpTestServer * iTestServer;
+    
+protected:
+    TCommDbConnPref iConnPrefs;
+    TInt iDebugHandle;
+    };
+
+#define LOG_STATEL					{QUERY_STATEL(state);const TText* ss = DHCPDebug::State_Name[state];INFO_PRINTF3(_L(" .. DHCP is in state %d (%s)"),state,ss);}
+#define QUERY_STATEL(x)   			DHCP_DEBUG_QUERYL(DHCPDebug::EState + iDebugHandle, x)
+#define QUERY_READYL(x)   			DHCP_DEBUG_QUERYL(DHCPDebug::EReadiness + iDebugHandle, x)
+#define WAIT_FOR_STATE_CHANGEL(x)	{ \
+	DHCPDebug::State state; \
+	TRequestStatus propStatus; \
+	 \
+	while( true ) \
+		{ \
+		QUERY_STATEL( state ); \
+		if( state == x ) \
+			{ \
+			break; \
+			} \
+		 \
+		DHCP_DEBUG_SUBSCRIBEL(DHCPDebug::EState + iDebugHandle); \
+		} \
+	}
+#define WAIT_FOR_EITHER_STATE_CHANGEL(x, y)	{ \
+	DHCPDebug::State state; \
+	TRequestStatus propStatus; \
+	 \
+	while( true ) \
+		{ \
+		QUERY_STATEL( state ); \
+		if( ( state == x ) || ( state == y ) ) \
+			{ \
+			break; \
+			} \
+		 \
+		DHCP_DEBUG_SUBSCRIBEL(DHCPDebug::EState + iDebugHandle); \
+		} \
+	}
+
+_LIT( TCPIP_INI_PATH, "c:\\private\\101f7989\\esock\\tcpip.ini" );
+_LIT8( TCPIP_INI_IP, "[ip]\r\n" );
+_LIT8( TCPIP_INI_IPV4LINKLOCAL, "ipv4linklocal= " );
+
+
+/**
+* A clever little macro to declare the test steps...
+*/
+#define DECLARE_DHCP_TEST_STEP(nr) \
+	_LIT(KDhcpTestStep##nr,#nr); \
+class CDhcpTestStep##nr : public CDhcpTestStepBase \
+   { \
+public: \
+	CDhcpTestStep##nr() \
+      { \
+	  SetTestStepName(KDhcpTestStep##nr); \
+      }; \
+	  virtual TVerdict doTestStepL(); \
+	}
+
+class CDhcpTestServer : public CTestServer
+	{
+public:
+	IMPORT_C TInt NewServer();
+	static CDhcpTestServer* NewL();
+	virtual CTestStep* CreateTestStep(const TDesC& aStepName);
+	
+	TBool iUsingIPv6;
+	TInt iIAPToUse;
+	
+private:
+	const TPtrC ServerName() const;	
+	};
+
+#endif