diff -r 8d540f55e491 -r 425d8f4f7fa5 linklayerprotocols/tundriver/te_tundriver/src/te_tundrivertestwrapper.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/linklayerprotocols/tundriver/te_tundriver/src/te_tundrivertestwrapper.cpp Wed Sep 15 00:18:51 2010 +0300 @@ -0,0 +1,3153 @@ +// Copyright (c) 2010 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: +// Contains the implementation of all the commands, which is used by the script file. +// + +/** + @file te_tundrivertestwrapper.h + @internalTechnology + */ + +#include "te_tundrivertestwrapper.h" +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +//Virtual Interface + +// Commands + +_LIT(KRConnTest1_1, "RConnTest1_1"); +_LIT(KRConnTest1_2, "RConnTest1_2"); +_LIT(KRConnTest1_3, "RConnTest1_3"); +_LIT(KRConnTest1_4, "RConnTest1_4"); +_LIT(KRConnTest1_5, "RConnTest1_5"); +_LIT(KRConnTest1_6, "RConnTest1_6"); +_LIT(KRConnTest1_7, "RConnTest1_7"); +_LIT(KRConnTest1_8, "RConnTest1_8"); +_LIT(KRConnTest1_9, "RConnTest1_9"); +_LIT(KRConnTest1_10, "RConnTest1_10"); +_LIT(KRConnTest1_11, "RConnTest1_11"); +_LIT(KRConnTest1_12, "RConnTest1_12"); +_LIT(KRConnTest1_13, "RConnTest1_13"); +_LIT(KRConnTest1_14, "RConnTest1_14"); +_LIT(KRConnTest1_15, "RConnTest1_15"); +_LIT(KRConnTest1_16, "RConnTest1_16"); +_LIT(KRConnTest1_17, "RConnTest1_17"); +_LIT(KRConnTest1_18, "RConnTest1_18"); +_LIT(KRConnTest1_19, "RConnTest1_19"); +_LIT(KRConnTest1_20, "RConnTest1_20"); +_LIT(KRConnTest1_21, "RConnTest1_21"); +_LIT(KRConnTest1_22, "RConnTest1_22"); +_LIT(KRConnTest1_23, "RConnTest1_23"); +_LIT(KRConnTest1_24, "RConnTest1_24"); +_LIT(KRConnTest1_25, "RConnTest1_25"); +_LIT(KRConnTest1_26, "RConnTest1_26"); +_LIT(KRConnTest1_27, "RConnTest1_27"); +_LIT(KRConnTest1_28, "RConnTest1_28"); +_LIT(KRConnTest1_29, "RConnTest1_29"); +_LIT(KRConnTest1_30, "RConnTest1_30"); +_LIT(KRConnTest1_31, "RConnTest1_31"); +_LIT(KRConnTest1_32, "RConnTest1_32"); +_LIT(KRConnTest1_33, "RConnTest1_33"); + +// Config file +_LIT(KNameDefault, "default"); +_LIT(KIpAddr, "IpAddr"); +_LIT(KGatewayAddr, "GatewayAddr"); +_LIT(KDestAddr, "DestAddr"); +_LIT(KLocalAddr, "LocalAddr"); +_LIT(KLocalPort, "LocalPort"); +_LIT(KDestPort, "DestPort"); +_LIT(KTcpDestPort, "TcpDestPort"); +_LIT(KRealDestAddr, "RealDestAddr"); +_LIT(KRealDestPort, "RealDestPort"); + +//Test code +_LIT(KCommand, "aCommand = %S"); +_LIT(KSection, "aSection = %S"); + +//Test code error +_LIT(KInetInputFail, "TInetAddr Input failed with error: %d"); + +#define TUNDRIVER_IAP 14 +#define REAL_IAP 9 +#define LOCAL_PORT 7777 + +// public +//LOCAL_D CConsoleBase* console; + + +/** +Constructor. + +@internalTechnology + */ +CTunDriverTestWrapper::CTunDriverTestWrapper() + { + } + +/** +Destructor. + +@internalTechnology + */ +CTunDriverTestWrapper::~CTunDriverTestWrapper() + { + } + +/** +Function to instantiate TestWrapper. +@return Returns constructed TestWrapper instance pointer +@internalTechnology + */ +CTunDriverTestWrapper* CTunDriverTestWrapper::NewL() + { + CTunDriverTestWrapper* ret = new (ELeave) CTunDriverTestWrapper(); + CleanupStack::PushL(ret); + ret->ConstructL(); + CleanupStack::Pop(ret); + return ret; + } + +/** +Second level constructor, constructs TestWrapper instance. +@internalTechnology + */ +void CTunDriverTestWrapper::ConstructL() + { + iInitNumOfInterfaces = 0; + iCurNumOfInterfaces = 0; + iDestPort = 0; + + } + +/** +Function to map the input command to respective function. + +@return - True Upon successfull command to Function name mapping otherwise False +@param aCommand Function name has to be called +@param aSection INI file paramenter section name +@param aAsyncErrorIndex Error index +@see Refer the script file COMMAND section. + +@internalTechnology + */ +TBool CTunDriverTestWrapper::DoCommandL(const TTEFFunction& aCommand, const TTEFSectionName& aSection, const TInt /*aAsyncErrorIndex*/) + { + TBool ret = ETrue; + + // Print out the parameters for debugging + INFO_PRINTF2( KCommand, &aCommand ); + INFO_PRINTF2( KSection, &aSection ); + //INFO_PRINTF2( KAsyncErrorIndex, aAsyncErrorIndex ); + + //RConnection Testcases + if(KRConnTest1_1() == aCommand) + { + DoRConnTest1_1(); + } + else if(KRConnTest1_2() == aCommand) + { + DoRConnTest1_2(); + } + else if(KRConnTest1_3() == aCommand) + { + DoRConnTest1_3(aSection); + } + else if(KRConnTest1_4() == aCommand) + { + DoRConnTest1_4(aSection); + } + else if(KRConnTest1_5() == aCommand) + { + DoRConnTest1_5(aSection); + } + else if(KRConnTest1_6() == aCommand) + { + DoRConnTest1_6(aSection); + } + else if(KRConnTest1_7() == aCommand) + { + DoRConnTest1_7(aSection); + } + else if(KRConnTest1_8() == aCommand) + { + DoRConnTest1_8(aSection); + } + else if(KRConnTest1_9() == aCommand) + { + DoRConnTest1_9(aSection); + } + else if(KRConnTest1_10() == aCommand) + { + DoRConnTest1_10(aSection); + } + else if(KRConnTest1_11() == aCommand) + { + DoRConnTest1_11(); + } + else if(KRConnTest1_12() == aCommand) + { + DoRConnTest1_12(); + } + else if(KRConnTest1_13() == aCommand) + { + DoRConnTest1_13(aSection); + } + else if(KRConnTest1_14() == aCommand) + { + DoRConnTest1_14(aSection); + } + else if(KRConnTest1_15() == aCommand) + { + DoRConnTest1_15(); + } + else if(KRConnTest1_16() == aCommand) + { + DoRConnTest1_16(aSection); + } + else if(KRConnTest1_17() == aCommand) + { + DoRConnTest1_17(aSection); + } + else if(KRConnTest1_18() == aCommand) + { + + } + else if(KRConnTest1_19() == aCommand) + { + + } + else if(KRConnTest1_20() == aCommand) + { + DoRConnTest1_20(); + } + else if(KRConnTest1_21() == aCommand) + { + DoRConnTest1_21(); + } + else if(KRConnTest1_22() == aCommand) + { + DoRConnTest1_22(); + } + else if(KRConnTest1_23() == aCommand) + { + DoRConnTest1_23(); + } + else if(KRConnTest1_24() == aCommand) + { + DoRConnTest1_24(); + } + else if(KRConnTest1_25() == aCommand) + { + DoRConnTest1_25(); + } + else if(KRConnTest1_26() == aCommand) + { + DoRConnTest1_26(); + } + else if(KRConnTest1_27() == aCommand) + { + DoRConnTest1_27(); + } + else if(KRConnTest1_28() == aCommand) + { + DoRConnTest1_28(); + } + else if(KRConnTest1_29() == aCommand) + { + DoRConnTest1_29(); + } + else if(KRConnTest1_30() == aCommand) + { + DoRConnTest1_30(); + } + else if(KRConnTest1_31() == aCommand) + { + DoRConnTest1_31(); + } + else if(KRConnTest1_32() == aCommand) + { + DoRConnTest1_32(); + } + else if(KRConnTest1_33() == aCommand) + { + DoRConnTest1_33(); + } + else + { + ret = EFalse; + User::LeaveIfError(KErrNone); // just to suppress LeaveScan warning + } + return ret; + } + +/** +Function to open Virtual Socket. +@internalTechnology + */ + +TBool CTunDriverTestWrapper::FindInterface(TPckgBuf &info) + { + TBool success = FALSE; + if((iStatus = iSocketServ.Connect()) == KErrNone ) + INFO_PRINTF1(_L("Socket Server Opened.\n")); + else + { + ERR_PRINTF2(_L("Error Opening Socket Server: %d"), iStatus.Int()); + SetError(iStatus.Int()); + + return success; + } + + if((iStatus = iConnection1.Open(iSocketServ)) == KErrNone ) + INFO_PRINTF1(_L("Connection1 opened. \n")); + else + { + ERR_PRINTF2(_L("Error Opening Connection1: %d"), iStatus.Int()); + SetError(iStatus.Int()); + + return success; + } + + iCommDbPref.SetIapId(TUNDRIVER_IAP); // Virtual Interface + iCommDbPref.SetBearerSet(KCommDbBearerVirtual); + iCommDbPref.SetDialogPreference(ECommDbDialogPrefDoNotPrompt); + + iConnection1.Start(iCommDbPref, iStatus); + + + //open socket on interface. + if((iStatus = iSocket1.Open(iSocketServ, KAfInet, KSockDatagram, KProtocolInetUdp, iConnection1)) == KErrNone ) + INFO_PRINTF1(_L("Socket Opened!\n ")); + + User::LeaveIfError( iSocket1.SetOpt( KSoInetEnumInterfaces, KSolInetIfCtrl ) ); + + TProtocolDesc in; + User::LeaveIfError( iSocket1.Info( in ) ); + TInt res = iSocket1.GetOpt( KSoInetNextInterface, KSolInetIfCtrl, info ); + if (res != KErrNone) + { + User::Leave( res ); + } + + TPckgBuf next; + + + while (res == KErrNone) + { + res = iSocket1.GetOpt( KSoInetNextInterface, KSolInetIfCtrl, next ); + if (res == KErrNone) + info = next; + //Compare the string with interface name + if (info().iName.Mid(1,4).Compare(_L("TunDriver"))) + //if (info().iName == KIfName) + { + success = TRUE; + break; + + } + else + { + continue; + } + } + + return success; + + + } + +TInt CTunDriverTestWrapper::StartD3PApp() + { + TInt err(0); + if ((err = p.Create(KDummy3rdPartyApp,KArg)) == KErrNone) + { + p.Resume(); + } + else + { + ERR_PRINTF2(_L("Error Opening Dummy3rdPartyApp: %d"), iVTunError); + SetError(err); + return(err); + } + //Wait for Dummy3rdPartyApp to be up and running! + User::After(10000000); //10 Sec + return(err); + } + +void CTunDriverTestWrapper::StopD3PApp() + { + p.Kill(NULL); //Kill Dummy3rdPartyApp. + } + +//Gurpreet: RConnection Testcases + +void CTunDriverTestWrapper::DoRConnTest1_1() + { + INFO_PRINTF1(_L("********************************************")); + INFO_PRINTF1(_L(" Test: DoRConnTest1_1 ")); + INFO_PRINTF1(_L("********************************************")); + + if((iStatus = iSocketServ.Connect()) == KErrNone ) + INFO_PRINTF1(_L("Socket Server Opened.\n")); + else + { + ERR_PRINTF2(_L("Error Opening Socket Server: %d"), iStatus.Int()); + SetError(iStatus.Int()); + return; + } + + if((iStatus = iConnection.Open(iSocketServ /*, KAfInet*/)) == KErrNone ) + INFO_PRINTF1(_L("Connection opened. \n")); + else + { + ERR_PRINTF2(_L("Error Opening Connection: %d"), iStatus.Int()); + SetError(iStatus.Int()); + return; + } + + iCommDbPref.SetIapId(TUNDRIVER_IAP); // Virtual Interface + iCommDbPref.SetBearerSet(KCommDbBearerVirtual); + iCommDbPref.SetDialogPreference(ECommDbDialogPrefDoNotPrompt); + + iVTunError = iConnection.Start(iCommDbPref); + //User::WaitForRequest(iStatus); + INFO_PRINTF2(_L("Starting Connection %d.\n"), iVTunError); + + if(iVTunError!= KErrNone) + { + SetError(iVTunError); + } + iConnection.Close(); + iSocketServ.Close(); + } + +void CTunDriverTestWrapper::DoRConnTest1_2() + { + INFO_PRINTF1(_L("********************************************")); + INFO_PRINTF1(_L(" Test: DoRConnTest1_2 ")); + INFO_PRINTF1(_L("********************************************")); + + if((iStatus = iSocketServ.Connect()) == KErrNone ) + INFO_PRINTF1(_L("Socket Server Opened.\n")); + else + { + ERR_PRINTF2(_L("Error Opening Socket Server: %d"), iStatus.Int()); + SetError(iStatus.Int()); + return; + } + + if((iStatus = iConnection.Open(iSocketServ /*, KAfInet*/)) == KErrNone ) + INFO_PRINTF1(_L("Connection opened. \n")); + else + { + ERR_PRINTF2(_L("Error Opening Connection: %d"), iStatus.Int()); + SetError(iStatus.Int()); + return; + } + + iCommDbPref.SetIapId(TUNDRIVER_IAP); // Virtual Interface + iCommDbPref.SetBearerSet(KCommDbBearerVirtual); + iCommDbPref.SetDialogPreference(ECommDbDialogPrefDoNotPrompt); + + iConnection.Start(iCommDbPref, iStatus); + User::WaitForRequest(iStatus); + INFO_PRINTF2(_L("Starting Connection %d.\n"), iStatus.Int()); + + iConnection.Close(); + iSocketServ.Close(); + } + +void CTunDriverTestWrapper::DoRConnTest1_3(const TDesC& aSection) + { + INFO_PRINTF1(_L("*********************************************")); + INFO_PRINTF1(_L(" Test: DoRConnTest1_3 ")); + INFO_PRINTF1(_L("********************************************")); + + //start the dummy3rdpartyapp + if ((iVTunError = StartD3PApp()) != KErrNone) + { + return; + } + + if((iStatus = iSocketServ.Connect()) == KErrNone ) + INFO_PRINTF1(_L("Socket Server Opened.\n")); + else + { + ERR_PRINTF2(_L("Error Opening Socket Server: %d"), iStatus.Int()); + SetError(iStatus.Int()); + StopD3PApp(); + return; + } + + if((iStatus = iConnection.Open(iSocketServ)) == KErrNone ) + INFO_PRINTF1(_L("Connection opened. \n")); + else + { + ERR_PRINTF2(_L("Error Opening Connection: %d"), iStatus.Int()); + SetError(iStatus.Int()); + StopD3PApp(); + return; + } + + iCommDbPref.SetIapId(TUNDRIVER_IAP); // Virtual Interface + iCommDbPref.SetBearerSet(KCommDbBearerVirtual); + iCommDbPref.SetDialogPreference(ECommDbDialogPrefDoNotPrompt); + + iConnection.Start(iCommDbPref, iStatus); + User::WaitForRequest(iStatus); + if (iStatus.Int() != KErrNone) + { + ERR_PRINTF2(_L("Error starting connection: %d"), iStatus.Int()); + SetError(iStatus.Int()); + StopD3PApp(); + return; + } + INFO_PRINTF1(_L("Connection started!\n ")); + + //open socket on interface. + if((iStatus = iSocket.Open(iSocketServ, KAfInet, KSockDatagram, KProtocolInetUdp, iConnection)) == KErrNone ) + INFO_PRINTF1(_L("Socket Opened!\n ")); + else // (iStatus!=KErrNone) + { + ERR_PRINTF2(_L("Error Opening Socket: %d"), iStatus.Int()); + SetError(iStatus.Int()); + StopD3PApp(); + return; + } + + iSendBuf.Zero(); + iSendBuf = (TText8*)"Nokia sues Apple!"; + + // Get destination address from config file + TPtrC ptrToReadFromConfig(KNameDefault); + TBool returnValue = GetStringFromConfig(aSection, KDestAddr, ptrToReadFromConfig); + if (!returnValue) + { + ERR_PRINTF1(_L("Reading config file failed, while reading DestAddr")); + SetError(KErrUnknown); + StopD3PApp(); + return; + } + //set destination IP ie. server + TInt err = iDestAddr.Input(ptrToReadFromConfig); + if(err != KErrNone) + { + INFO_PRINTF2(KInetInputFail, err); + SetError(err); + StopD3PApp(); + return; + } + + returnValue = GetIntFromConfig(aSection, KDestPort, iDestPort); + iDestAddr.SetPort(iDestPort); + + //bind local port to socket + err = iSocket.SetLocalPort(7776); + + //send data to server + iSocket.SendTo(iSendBuf, iDestAddr, NULL, iStatus); + User::WaitForRequest(iStatus); + if( iStatus == KErrNone) + INFO_PRINTF1(_L("\nData Sent")); + else + { + ERR_PRINTF1(_L("\nData sending failed")); + SetError(iStatus.Int()); + iSocket.Close(); + iConnection.Close(); + iSocketServ.Close(); + StopD3PApp(); + return; + } + + iRecvBuf.Zero(); + iSocket.RecvFrom(iRecvBuf, iDestAddr, NULL, iStatus); + User::WaitForRequest(iStatus); + TBuf<128> temp; + if( iStatus == KErrNone) + { + INFO_PRINTF1(_L("\nData Received : ")); + temp.Copy(iRecvBuf); + INFO_PRINTF1(temp); + INFO_PRINTF1(_L("\n")); + } + else + { + ERR_PRINTF1(_L("\nData receive failed")); + SetError(iStatus.Int()); + } + iSocket.Close(); + iSocketServ.Close(); + + StopD3PApp(); + + } + +void CTunDriverTestWrapper::DoRConnTest1_4(const TDesC& aSection) + { + INFO_PRINTF1(_L("*********************************************")); + INFO_PRINTF1(_L(" Test: DoRConnTest1_4 ")); + INFO_PRINTF1(_L("********************************************")); + + //start the dummy3rdpartyapp + if ((iVTunError = StartD3PApp()) != KErrNone) + { + return; + } + + if((iStatus = iSocketServ.Connect()) == KErrNone ) + INFO_PRINTF1(_L("Socket Server Opened.\n")); + else + { + ERR_PRINTF2(_L("Error Opening Socket Server: %d"), iStatus.Int()); + SetError(iStatus.Int()); + return; + } + + if((iStatus = iConnection.Open(iSocketServ)) == KErrNone ) + INFO_PRINTF1(_L("Connection opened. \n")); + else + { + ERR_PRINTF2(_L("Error Opening Connection: %d"), iStatus.Int()); + SetError(iStatus.Int()); + return; + } + + iCommDbPref.SetIapId(TUNDRIVER_IAP); // Virtual Interface + iCommDbPref.SetBearerSet(KCommDbBearerVirtual); + iCommDbPref.SetDialogPreference(ECommDbDialogPrefDoNotPrompt); + + iConnection.Start(iCommDbPref, iStatus); + User::WaitForRequest(iStatus); + if (iStatus.Int() != KErrNone) + { + ERR_PRINTF2(_L("Error starting connection: %d"), iStatus.Int()); + SetError(iStatus.Int()); + iSocketServ.Close(); + StopD3PApp(); + return; + } + INFO_PRINTF2(_L("Starting Connection %d.\n"), iStatus.Int()); + + //open socket on interface. + + if((iStatus = iSocket.Open(iSocketServ, KAfInet, KSockDatagram, KProtocolInetUdp, iConnection)) == KErrNone ) + INFO_PRINTF1(_L("Socket Opened!\n ")); + else // (iStatus!=KErrNone) + { + ERR_PRINTF2(_L("Error Opening Socket: %d"), iStatus.Int()); + SetError(iStatus.Int()); + iConnection.Close(); + iSocketServ.Close(); + StopD3PApp(); + return; + } + + iSendBuf.Zero(); + iSendBuf = (TText8*)"Nokia sues Apple!"; + + // Get destination address from config file + TPtrC ptrToReadFromConfig(KNameDefault); + TBool returnValue = GetStringFromConfig(aSection, KDestAddr, ptrToReadFromConfig); + if (!returnValue) + { + ERR_PRINTF1(_L("Reading config file failed, while reading DestAddr")); + SetError(KErrUnknown); + iSocket.Close(); + iConnection.Close(); + iSocketServ.Close(); + StopD3PApp(); + return; + } + //set destination IP ie. server + TInt err = iDestAddr.Input(ptrToReadFromConfig); + if(err != KErrNone) + { + INFO_PRINTF2(KInetInputFail, err); + SetError(err); + iSocket.Close(); + iConnection.Close(); + iSocketServ.Close(); + StopD3PApp(); + return; + } + + returnValue = GetIntFromConfig(aSection, KDestPort, iDestPort); + iDestAddr.SetPort(iDestPort); + + //bind local port to socket + err = iSocket.SetLocalPort(LOCAL_PORT); + + //send data to server + iSocket.SendTo(iSendBuf, iDestAddr, NULL, iStatus); + User::WaitForRequest(iStatus); + if( iStatus == KErrNone) + INFO_PRINTF1(_L("\nData Sent")); + else + { + ERR_PRINTF1(_L("\nData sending failed")); + SetError(iStatus.Int()); + iSocket.Close(); + iConnection.Close(); + iSocketServ.Close(); + StopD3PApp(); + return; + } + + iRecvBuf.Zero(); + iSocket.RecvFrom(iRecvBuf, iDestAddr, NULL, iStatus); + User::WaitForRequest(iStatus); + TBuf<128> temp; + if( iStatus == KErrNone) + { + INFO_PRINTF1(_L("\nData Received : ")); + temp.Copy(iRecvBuf); + INFO_PRINTF1(temp); + INFO_PRINTF1(_L("\n")); + } + else + { + ERR_PRINTF1(_L("\nData receive failed")); + SetError(iStatus.Int()); + } + iSocket.Close(); + iConnection.Close(); + iSocketServ.Close(); + + StopD3PApp(); + + } + +void CTunDriverTestWrapper::DoRConnTest1_5(const TDesC& aSection) + { + INFO_PRINTF1(_L("*********************************************")); + INFO_PRINTF1(_L(" Test: DoRConnTest1_5 ")); + INFO_PRINTF1(_L("********************************************")); + + //start the dummy3rdpartyapp + if ((iVTunError = StartD3PApp()) != KErrNone) + { + return; + } + + if((iStatus = iSocketServ.Connect()) == KErrNone ) + INFO_PRINTF1(_L("Socket Server Opened.\n")); + else + { + ERR_PRINTF2(_L("Error Opening Socket Server: %d"), iStatus.Int()); + SetError(iStatus.Int()); + StopD3PApp(); + return; + } + if((iStatus = iConnection.Open(iSocketServ)) == KErrNone ) + INFO_PRINTF1(_L("Connection opened. \n")); + else + { + ERR_PRINTF2(_L("Error Opening Connection: %d"), iStatus.Int()); + SetError(iStatus.Int()); + StopD3PApp(); + return; + } + + iCommDbPref.SetIapId(TUNDRIVER_IAP); // Virtual Interface + iCommDbPref.SetBearerSet(KCommDbBearerVirtual); + iCommDbPref.SetDialogPreference(ECommDbDialogPrefDoNotPrompt); + + iConnection.Start(iCommDbPref, iStatus); + User::WaitForRequest(iStatus); + if (iStatus.Int() != KErrNone) + { + ERR_PRINTF2(_L("Error starting connection: %d"), iStatus.Int()); + SetError(iStatus.Int()); + iSocketServ.Close(); + StopD3PApp(); + return; + } + INFO_PRINTF2(_L("Starting Connection %d.\n"), iStatus.Int()); + + //open socket on interface. + if((iStatus = iSocket1.Open(iSocketServ, KAfInet, KSockDatagram, KProtocolInetUdp, iConnection)) == KErrNone ) + INFO_PRINTF1(_L("Socket1 Opened!\n ")); + else // (iStatus!=KErrNone) + { + ERR_PRINTF2(_L("Error Opening Socket1: %d"), iStatus.Int()); + SetError(iStatus.Int()); + iConnection.Close(); + iSocketServ.Close(); + StopD3PApp(); + return; + } + + if((iStatus = iSocket2.Open(iSocketServ, KAfInet, KSockDatagram, KProtocolInetUdp, iConnection)) == KErrNone ) + INFO_PRINTF1(_L("Socket2 Opened!\n ")); + else // (iStatus!=KErrNone) + { + ERR_PRINTF2(_L("Error Opening Socket2: %d"), iStatus.Int()); + SetError(iStatus.Int()); + iConnection.Close(); + iSocketServ.Close(); + StopD3PApp(); + return; + } + + // Get destination address from config file + TPtrC ptrToReadFromConfig(KNameDefault); + TBool returnValue = GetStringFromConfig(aSection, KDestAddr, ptrToReadFromConfig); + if (!returnValue) + { + ERR_PRINTF1(_L("Reading config file failed, while reading DestAddr")); + SetError(KErrUnknown); + iSocket1.Close(); + iSocket2.Close(); + iConnection.Close(); + iSocketServ.Close(); + StopD3PApp(); + return; + } + //set destination IP ie. server + TInt err = iDestAddr.Input(ptrToReadFromConfig); + if(err != KErrNone) + { + INFO_PRINTF2(KInetInputFail, err); + SetError(err); + iSocket1.Close(); + iSocket2.Close(); + iConnection.Close(); + iSocketServ.Close(); + StopD3PApp(); + return; + } + + returnValue = GetIntFromConfig(aSection, KDestPort, iDestPort); + iDestAddr.SetPort(iDestPort); + + //bind local port to socket + err = iSocket1.SetLocalPort(LOCAL_PORT); + if(err != KErrNone) + { + ERR_PRINTF2(_L("Error Binding Socket1: %d"), err); + SetError(err); + iSocket1.Close(); + iSocket2.Close(); + iConnection.Close(); + iSocketServ.Close(); + StopD3PApp(); + } + //bind local port to socket + err = iSocket2.SetLocalPort(LOCAL_PORT + 1); + if(err != KErrNone) + { + ERR_PRINTF2(_L("Error Binding Socket2: %d"), err); + SetError(err); + iSocket1.Close(); + iSocket2.Close(); + iConnection.Close(); + iSocketServ.Close(); + StopD3PApp(); + } + + iSendBuf.Zero(); + iSendBuf = (TText8*)"Nokia sues Apple!";//"Sending Data through Socket1!"; + + //send data to server + iSocket1.SendTo(iSendBuf, iDestAddr, NULL, iStatus); + User::WaitForRequest(iStatus); + + if( iStatus == KErrNone) + INFO_PRINTF1(_L("\nData Sent thru socket1")); + else + { + ERR_PRINTF1(_L("\nData sending failed")); + SetError(iStatus.Int()); + iSocket1.Close(); + iSocket2.Close(); + iConnection.Close(); + iSocketServ.Close(); + StopD3PApp(); + } + + iRecvBuf.Zero(); + iSocket1.RecvFrom(iRecvBuf, iDestAddr, NULL, iStatus); + User::WaitForRequest(iStatus); + TBuf<128> temp; + if( iStatus == KErrNone) + { + INFO_PRINTF1(_L("\nData Received from Socket1 : ")); + temp.Copy(iRecvBuf); + INFO_PRINTF1(temp); + INFO_PRINTF1(_L("\n")); + } + else + { + ERR_PRINTF1(_L("\nData receive failed on Socket1")); + SetError(iStatus.Int()); + iSocket1.Close(); + iSocket2.Close(); + iConnection.Close(); + iSocketServ.Close(); + StopD3PApp(); + } + + iSendBuf.Zero(); + iSendBuf = (TText8*)" Socket2:Nokia sues Apple!"; + iSocket2.SendTo(iSendBuf, iDestAddr, NULL, iStatus); + User::WaitForRequest(iStatus); + + if( iStatus == KErrNone) + INFO_PRINTF1(_L("\nData Sent thru socket2")); + else + { + ERR_PRINTF1(_L("\nData sending failed")); + SetError(iStatus.Int()); + iSocket1.Close(); + iSocket2.Close(); + iConnection.Close(); + iSocketServ.Close(); + StopD3PApp(); + } + + iRecvBuf.Zero(); + iSocket2.RecvFrom(iRecvBuf, iDestAddr, NULL, iStatus); + User::WaitForRequest(iStatus); + temp.Zero(); + if( iStatus == KErrNone) + { + INFO_PRINTF1(_L("\nData Received from Socket2: ")); + temp.Copy(iRecvBuf); + INFO_PRINTF1(temp); + INFO_PRINTF1(_L("\n")); + } + else + { + ERR_PRINTF1(_L("\nData receive failed on Socket2")); + SetError(iStatus.Int()); + } + iSocket1.Close(); + iSocket2.Close(); + iConnection.Close(); + iSocketServ.Close(); + + StopD3PApp(); + + } + +void CTunDriverTestWrapper::DoRConnTest1_6(const TDesC& aSection) + { + + INFO_PRINTF1(_L("*********************************************")); + INFO_PRINTF1(_L(" Test: DoRConnTest1_6 ")); + INFO_PRINTF1(_L("*********************************************")); + + //start the dummy3rdpartyapp + if ((iVTunError = StartD3PApp()) != KErrNone) + { + return; + } + + if((iStatus = iSocketServ.Connect()) == KErrNone ) + INFO_PRINTF1(_L("Socket Server Opened.\n")); + else + { + ERR_PRINTF2(_L("Error Opening Socket Server: %d"), iStatus.Int()); + SetError(iStatus.Int()); + StopD3PApp(); + return; + } + if((iStatus = iConnection1.Open(iSocketServ /*, KAfInet*/)) == KErrNone ) + INFO_PRINTF1(_L("Connection1 opened. \n")); + else + { + ERR_PRINTF2(_L("Error Opening Connection1: %d"), iStatus.Int()); + SetError(iStatus.Int()); + StopD3PApp(); + return; + } + + if((iStatus = iConnection2.Open(iSocketServ /*, KAfInet*/)) == KErrNone ) + INFO_PRINTF1(_L("Connection2 opened. \n")); + else + { + ERR_PRINTF2(_L("Error Opening Connection2: %d"), iStatus.Int()); + SetError(iStatus.Int()); + StopD3PApp(); + return; + } + + iCommDbPref.SetIapId(TUNDRIVER_IAP); // Virtual Interface + iCommDbPref.SetBearerSet(KCommDbBearerVirtual); + iCommDbPref.SetDialogPreference(ECommDbDialogPrefDoNotPrompt); + + iConnection1.Start(iCommDbPref, iStatus); + User::WaitForRequest(iStatus); + + if(iStatus.Int()!=KErrNone) + { + ERR_PRINTF2(_L("Error starting connection1: %d"), iStatus.Int()); + SetError(iStatus.Int()); + iSocketServ.Close(); + StopD3PApp(); + return; + } + INFO_PRINTF2(_L("Starting Connection1 %d.\n"), iStatus.Int()); + + + iConnection2.Start(iCommDbPref, iStatus); + User::WaitForRequest(iStatus); + if(iStatus.Int()!=KErrNone) + { + ERR_PRINTF2(_L("Error starting connection2: %d"), iStatus.Int()); + SetError(iStatus.Int()); + iConnection1.Close(); + iSocketServ.Close(); + StopD3PApp(); + return; + } + + INFO_PRINTF2(_L("Starting Connection2 %d.\n"), iStatus.Int()); + + //open socket on interface. + if((iStatus = iSocket1.Open(iSocketServ, KAfInet, KSockDatagram, KProtocolInetUdp, iConnection1)) == KErrNone ) + INFO_PRINTF1(_L("Socket1 Opened!\n ")); + else // (iStatus!=KErrNone) + { + ERR_PRINTF2(_L("Error Opening Socket1: %d"), iStatus.Int()); + SetError(iStatus.Int()); + iConnection1.Close(); + iConnection2.Close(); + iSocketServ.Close(); + StopD3PApp(); + return; + } + if((iStatus = iSocket2.Open(iSocketServ, KAfInet, KSockDatagram, KProtocolInetUdp, iConnection2)) == KErrNone ) + INFO_PRINTF1(_L("Socket2 Opened!\n ")); + else // (iStatus!=KErrNone) + { + ERR_PRINTF2(_L("Error Opening Socket2: %d"), iStatus.Int()); + SetError(iStatus.Int()); + iSocket1.Close(); + iConnection1.Close(); + iConnection2.Close(); + iSocketServ.Close(); + StopD3PApp(); + return; + } + + iSendBuf.Zero(); + iSendBuf = (TText8*)"Socket1: Nokia sues Apple!"; + + // Get destination address from config file + TPtrC ptrToReadFromConfig(KNameDefault); + TBool returnValue = GetStringFromConfig(aSection, KDestAddr, ptrToReadFromConfig); + if (!returnValue) + { + ERR_PRINTF1(_L("Reading config file failed, while reading DestAddr")); + SetError(KErrUnknown); + iSocket1.Close(); + iSocket2.Close(); + iConnection1.Close(); + iConnection2.Close(); + iSocketServ.Close(); + StopD3PApp(); + return; + } + //set destination IP ie. server + TInt err = iDestAddr.Input(ptrToReadFromConfig); + if(err != KErrNone) + { + INFO_PRINTF2(KInetInputFail, err); + SetError(err); + iSocket1.Close(); + iSocket2.Close(); + iConnection1.Close(); + iConnection2.Close(); + iSocketServ.Close(); + StopD3PApp(); + return; + } + + returnValue = GetIntFromConfig(aSection, KDestPort, iDestPort); + iDestAddr.SetPort(iDestPort); + //bind local port to socket + err = iSocket1.SetLocalPort(LOCAL_PORT); + if(err != KErrNone) + { + ERR_PRINTF1(_L("Error in setting local port to socket1")); + SetError(err); + iSocket1.Close(); + iSocket2.Close(); + iConnection1.Close(); + iConnection2.Close(); + iSocketServ.Close(); + StopD3PApp(); + return; + } + + err = iSocket2.SetLocalPort(LOCAL_PORT+1); + if(err != KErrNone) + { + ERR_PRINTF1(_L("Error in setting local port to socket1")); + SetError(err); + iSocket1.Close(); + iSocket2.Close(); + iConnection1.Close(); + iConnection2.Close(); + iSocketServ.Close(); + StopD3PApp(); + return; + } + //send data to server + iSocket1.SendTo(iSendBuf, iDestAddr, NULL, iStatus); + User::WaitForRequest(iStatus); + if( iStatus == KErrNone) + INFO_PRINTF1(_L("\nData Sent for socket1")); + else + { + ERR_PRINTF1(_L("\nData sending failed for socket1")); + SetError(iStatus.Int()); + iSocket1.Close(); + iSocket2.Close(); + iConnection1.Close(); + iConnection2.Close(); + iSocketServ.Close(); + StopD3PApp(); + return; + } + + + iSendBuf.Zero(); + iSendBuf = (TText8*)"Socket2: Nokia sues Apple!"; + iSocket2.SendTo(iSendBuf, iDestAddr, NULL, iStatus); + User::WaitForRequest(iStatus); + if( iStatus == KErrNone) + INFO_PRINTF1(_L("\nData Sent for socket2")); + else + { + ERR_PRINTF1(_L("\nData sending failed for socket2")); + SetError(iStatus.Int()); + iSocket1.Close(); + iSocket2.Close(); + iConnection1.Close(); + iConnection2.Close(); + iSocketServ.Close(); + StopD3PApp(); + return; + } + + iRecvBuf.Zero(); + iSocket1.RecvFrom(iRecvBuf, iDestAddr, NULL, iStatus); + User::WaitForRequest(iStatus); + TBuf<128> temp; + if( iStatus == KErrNone) + { + INFO_PRINTF1(_L("\nData Received from Socket1 : ")); + temp.Copy(iRecvBuf); + INFO_PRINTF1(temp); + INFO_PRINTF1(_L("\n")); + } + else + { + ERR_PRINTF1(_L("\nData receive failed on Socket1")); + SetError(iStatus.Int()); + iSocket1.Close(); + iSocket2.Close(); + iConnection1.Close(); + iConnection2.Close(); + iSocketServ.Close(); + StopD3PApp(); + return; + } + + + iSendBuf.Zero(); + iSendBuf = (TText8*)"Sending Data through Socket2!"; + iSocket2.SendTo(iSendBuf, iDestAddr, NULL, iStatus); + User::WaitForRequest(iStatus); + if( iStatus == KErrNone) + INFO_PRINTF1(_L("\nData Sent thru socket2")); + else + { + ERR_PRINTF1(_L("\nData sending failed through socket2")); + SetError(iStatus.Int()); + iSocket1.Close(); + iSocket2.Close(); + iConnection1.Close(); + iConnection2.Close(); + iSocketServ.Close(); + StopD3PApp(); + return; + } + + + iRecvBuf.Zero(); + iSocket2.RecvFrom(iRecvBuf, iDestAddr, NULL, iStatus); + User::WaitForRequest(iStatus); + temp.Zero(); + if( iStatus == KErrNone) + { + INFO_PRINTF1(_L("\nData Received from Socket2: ")); + temp.Copy(iRecvBuf); + INFO_PRINTF1(temp); + INFO_PRINTF1(_L("\n")); + } + else + { + ERR_PRINTF1(_L("\nData receive failed on Socket2")); + SetError(iStatus.Int()); + } + iSocket1.Close(); + iSocket2.Close(); + iConnection1.Close(); + iConnection2.Close(); + iSocketServ.Close(); + StopD3PApp(); + } + +//Sockets sending concurrently over same interface but from different socket servers +//(Connection explicitly created) +void CTunDriverTestWrapper::DoRConnTest1_7(const TDesC& aSection) + { + INFO_PRINTF1(_L("*********************************************")); + INFO_PRINTF1(_L(" Test: DoRConnTest1_7 ")); + INFO_PRINTF1(_L("*********************************************")); + + //start the dummy3rdpartyapp + if ((iVTunError = StartD3PApp()) != KErrNone) + { + return; + } + + if((iStatus = iSocketServ1.Connect()) == KErrNone ) + INFO_PRINTF1(_L("Socket Server1 Opened.\n")); + else + { + ERR_PRINTF2(_L("Error Opening Socket Server1: %d"), iStatus.Int()); + SetError(iStatus.Int()); + return; + } + + if((iStatus = iSocketServ2.Connect()) == KErrNone ) + INFO_PRINTF1(_L("Socket Server2 Opened.\n")); + else + { + ERR_PRINTF2(_L("Error Opening Socket Server2: %d"), iStatus.Int()); + SetError(iStatus.Int()); + iSocketServ1.Close(); + StopD3PApp(); + return; + } + if((iStatus = iConnection1.Open(iSocketServ1 /*, KAfInet*/)) == KErrNone ) + INFO_PRINTF1(_L("Connection1 opened. \n")); + else + { + ERR_PRINTF2(_L("Error Opening Connection1: %d"), iStatus.Int()); + SetError(iStatus.Int()); + iSocketServ1.Close(); + iSocketServ2.Close(); + StopD3PApp(); + return; + } + + if((iStatus = iConnection2.Open(iSocketServ2 /*, KAfInet*/)) == KErrNone ) + INFO_PRINTF1(_L("Connection2 opened. \n")); + else + { + ERR_PRINTF2(_L("Error Opening Connection2: %d"), iStatus.Int()); + SetError(iStatus.Int()); + iSocketServ1.Close(); + iSocketServ2.Close(); + StopD3PApp(); + return; + } + + iCommDbPref.SetIapId(TUNDRIVER_IAP); // Virtual Interface + iCommDbPref.SetBearerSet(KCommDbBearerVirtual); + iCommDbPref.SetDialogPreference(ECommDbDialogPrefDoNotPrompt); + + iConnection1.Start(iCommDbPref, iStatus); + User::WaitForRequest(iStatus); + if(iStatus.Int()!=KErrNone) + { + ERR_PRINTF2(_L("Error starting connection1: %d"), iStatus.Int()); + SetError(iStatus.Int()); + iSocketServ1.Close(); + iSocketServ2.Close(); + StopD3PApp(); + return; + } + INFO_PRINTF2(_L("Starting Connection1 %d.\n"), iStatus.Int()); + + iConnection2.Start(iCommDbPref, iStatus); + User::WaitForRequest(iStatus); + if(iStatus.Int()!=KErrNone) + { + ERR_PRINTF2(_L("Error starting connection2: %d"), iStatus.Int()); + SetError(iStatus.Int()); + iConnection1.Close(); + iSocketServ1.Close(); + iSocketServ2.Close(); + StopD3PApp(); + return; + } + INFO_PRINTF2(_L("Starting Connection2 %d.\n"), iStatus.Int()); + + //Enumerate the number of interfaces + iConnection1.EnumerateConnections(iInitNumOfInterfaces); + INFO_PRINTF2(_L("Number of Interfaces: %d!\n "), iInitNumOfInterfaces); + + //open socket on interface. + if((iStatus = iSocket1.Open(iSocketServ1, KAfInet, KSockDatagram, KProtocolInetUdp, iConnection1)) == KErrNone ) + INFO_PRINTF1(_L("Socket1 Opened!\n ")); + else // (iStatus!=KErrNone) + { + ERR_PRINTF2(_L("Error Opening Socket1: %d"), iStatus.Int()); + SetError(iStatus.Int()); + iConnection1.Close(); + iConnection2.Close(); + iSocketServ1.Close(); + iSocketServ2.Close(); + StopD3PApp(); + return; + } + if((iStatus = iSocket2.Open(iSocketServ2, KAfInet, KSockDatagram, KProtocolInetUdp, iConnection2)) == KErrNone ) + INFO_PRINTF1(_L("Socket2 Opened!\n ")); + else // (iStatus!=KErrNone) + { + ERR_PRINTF2(_L("Error Opening Socket2: %d"), iStatus.Int()); + SetError(iStatus.Int()); + iSocket1.Close(); + iConnection1.Close(); + iConnection2.Close(); + iSocketServ1.Close(); + iSocketServ2.Close(); + StopD3PApp(); + return; + } + + iSendBuf.Zero(); + iSendBuf = (TText8*)"Socket1: Nokia sues Apple!"; + + // Get destination address from config file + TPtrC ptrToReadFromConfig(KNameDefault); + TBool returnValue = GetStringFromConfig(aSection, KDestAddr, ptrToReadFromConfig); + if (!returnValue) + { + ERR_PRINTF1(_L("Reading config file failed, while reading DestAddr")); + SetError(KErrUnknown); + iSocket1.Close(); + iSocket2.Close(); + iConnection1.Close(); + iConnection2.Close(); + iSocketServ1.Close(); + iSocketServ2.Close(); + StopD3PApp(); + return; + } + //set destination IP ie. server + TInt err = iDestAddr.Input(ptrToReadFromConfig); + if(err != KErrNone) + { + INFO_PRINTF2(KInetInputFail, err); + SetError(err); + iSocket1.Close(); + iSocket2.Close(); + iConnection1.Close(); + iConnection2.Close(); + iSocketServ1.Close(); + iSocketServ2.Close(); + StopD3PApp(); + return; + } + + returnValue = GetIntFromConfig(aSection, KDestPort, iDestPort); + if (!returnValue) + { + ERR_PRINTF1(_L("Reading config file failed, while reading DestPort")); + SetError(KErrUnknown); + iSocket1.Close(); + iSocket2.Close(); + iConnection1.Close(); + iConnection2.Close(); + iSocketServ1.Close(); + iSocketServ2.Close(); + StopD3PApp(); + return; + } + iDestAddr.SetPort(iDestPort); + //bind local port to socket + err = iSocket1.SetLocalPort(LOCAL_PORT); + + if(err != KErrNone) + { + ERR_PRINTF1(_L("Error in setting local port to socket1")); + SetError(err); + iSocket1.Close(); + iSocket2.Close(); + iConnection1.Close(); + iConnection2.Close(); + iSocketServ1.Close(); + iSocketServ2.Close(); + StopD3PApp(); + return; + } + + err = iSocket2.SetLocalPort(LOCAL_PORT+1); + if(err != KErrNone) + { + ERR_PRINTF1(_L("Error in setting local port to socket1")); + SetError(err); + iSocket1.Close(); + iSocket2.Close(); + iConnection1.Close(); + iConnection2.Close(); + iSocketServ1.Close(); + iSocketServ2.Close(); + StopD3PApp(); + return; + } + //send data to server + iSocket1.SendTo(iSendBuf, iDestAddr, NULL, iStatus); + User::WaitForRequest(iStatus); + if( iStatus == KErrNone) + INFO_PRINTF1(_L("\nData Sent for socket1")); + else + { + ERR_PRINTF1(_L("\nData sending failed for socket1")); + SetError(iStatus.Int()); + iSocket1.Close(); + iSocket2.Close(); + iConnection1.Close(); + iConnection2.Close(); + iSocketServ1.Close(); + iSocketServ2.Close(); + StopD3PApp(); + return; + } + iRecvBuf.Zero(); + iSocket1.RecvFrom(iRecvBuf, iDestAddr, NULL, iStatus); + User::WaitForRequest(iStatus); + TBuf<128> temp; + if( iStatus == KErrNone) + { + INFO_PRINTF1(_L("\nData Received from Socket1 : ")); + temp.Copy(iRecvBuf); + INFO_PRINTF1(temp); + INFO_PRINTF1(_L("\n")); + } + else + { + ERR_PRINTF1(_L("\nData receive failed on Socket1")); + SetError(iStatus.Int()); + iSocket1.Close(); + iSocket2.Close(); + iConnection1.Close(); + iConnection2.Close(); + iSocketServ1.Close(); + iSocketServ2.Close(); + StopD3PApp(); + return; + } + + iSendBuf.Zero(); + iSendBuf = (TText8*)"Socket2: Nokia sues Apple!"; + iSocket2.SendTo(iSendBuf, iDestAddr, NULL, iStatus); + User::WaitForRequest(iStatus); + if( iStatus == KErrNone) + INFO_PRINTF1(_L("\nData Sent for socket2")); + else + { + ERR_PRINTF1(_L("\nData sending failed for socket2")); + SetError(iStatus.Int()); + iSocket1.Close(); + iSocket2.Close(); + iConnection1.Close(); + iConnection2.Close(); + iSocketServ1.Close(); + iSocketServ2.Close(); + StopD3PApp(); + return; + } + + + iRecvBuf.Zero(); + User::After(30000); + iSocket2.RecvFrom(iRecvBuf, iDestAddr, NULL, iStatus); + User::WaitForRequest(iStatus); + temp.Zero(); + if( iStatus == KErrNone) + { + INFO_PRINTF1(_L("\nData Received from Socket2: ")); + temp.Copy(iRecvBuf); + INFO_PRINTF1(temp); + INFO_PRINTF1(_L("\n")); + } + else + { + ERR_PRINTF1(_L("\nData receive failed on Socket2")); + SetError(iStatus.Int()); + } + + iSocket1.Close(); + iSocket2.Close(); + iConnection1.Close(); + iConnection2.Close(); + iSocketServ1.Close(); + iSocketServ2.Close(); + StopD3PApp(); + } + + +//Sockets sending from within different socket servers over different interfaces +//(Connection explicitly created) +void CTunDriverTestWrapper::DoRConnTest1_8(const TDesC& aSection) + { + INFO_PRINTF1(_L("*********************************************")); + INFO_PRINTF1(_L(" Test: DoRConnTest1_8 ")); + INFO_PRINTF1(_L("*********************************************")); + + //start the dummy3rdpartyapp + if ((iVTunError = StartD3PApp()) != KErrNone) + { + return; + } + + if((iStatus = iSocketServ1.Connect()) == KErrNone ) + INFO_PRINTF1(_L("Socket Server1 Opened.\n")); + else + { + ERR_PRINTF2(_L("Error Opening Socket Server1: %d"), iStatus.Int()); + SetError(iStatus.Int()); + StopD3PApp(); + return; + } + + if((iStatus = iSocketServ2.Connect()) == KErrNone ) + INFO_PRINTF1(_L("Socket Server2 Opened.\n")); + else + { + ERR_PRINTF2(_L("Error Opening Socket Server2: %d"), iStatus.Int()); + SetError(iStatus.Int()); + StopD3PApp(); + return; + } + if((iStatus = iConnection1.Open(iSocketServ1)) == KErrNone ) + INFO_PRINTF1(_L("Connection1 opened. \n")); + else + { + ERR_PRINTF2(_L("Error Opening Connection1: %d"), iStatus.Int()); + SetError(iStatus.Int()); + StopD3PApp(); + return; + } + + if((iStatus = iConnection2.Open(iSocketServ2)) == KErrNone ) + INFO_PRINTF1(_L("Connection2 opened. \n")); + else + { + ERR_PRINTF2(_L("Error Opening Connection2: %d"), iStatus.Int()); + SetError(iStatus.Int()); + StopD3PApp(); + return; + } + + iCommDbPref1.SetIapId(TUNDRIVER_IAP); // Virtual Interface + iCommDbPref1.SetBearerSet(KCommDbBearerVirtual); + iCommDbPref1.SetDialogPreference(ECommDbDialogPrefDoNotPrompt); + + iConnection1.Start(iCommDbPref1, iStatus); + User::WaitForRequest(iStatus); + if(iStatus.Int()!=KErrNone) + { + ERR_PRINTF2(_L("Error starting connection1: %d"), iStatus.Int()); + SetError(iStatus.Int()); + iSocketServ1.Close(); + iSocketServ2.Close(); + StopD3PApp(); + return; + } + INFO_PRINTF2(_L("Starting Connection1 %d.\n"), iStatus.Int()); + + iCommDbPref2.SetIapId(REAL_IAP); // Ethernet Interface + iCommDbPref2.SetBearerSet(KCommDbBearerLAN); + iCommDbPref2.SetDialogPreference(ECommDbDialogPrefDoNotPrompt); + + iConnection2.Start(iCommDbPref2, iStatus); + User::WaitForRequest(iStatus); + if(iStatus.Int()!=KErrNone) + { + ERR_PRINTF2(_L("Error starting connection2: %d"), iStatus.Int()); + SetError(iStatus.Int()); + iSocketServ1.Close(); + iSocketServ2.Close(); + StopD3PApp(); + return; + } + + INFO_PRINTF2(_L("Starting Connection2 %d.\n"), iStatus.Int()); + + //open socket on interface. + if((iStatus = iSocket1.Open(iSocketServ1, KAfInet, KSockDatagram, KProtocolInetUdp, iConnection1)) == KErrNone ) + INFO_PRINTF1(_L("Socket1 Opened!\n ")); + else // (iStatus!=KErrNone) + { + ERR_PRINTF2(_L("Error Opening Socket1: %d"), iStatus.Int()); + SetError(iStatus.Int()); + iConnection1.Close(); + iConnection2.Close(); + iSocketServ1.Close(); + iSocketServ2.Close(); + StopD3PApp(); + return; + } + if((iStatus = iSocket2.Open(iSocketServ2, KAfInet, KSockDatagram, KProtocolInetUdp, iConnection2)) == KErrNone ) + INFO_PRINTF1(_L("Socket1 Opened!\n ")); + else // (iStatus!=KErrNone) + { + ERR_PRINTF2(_L("Error Opening Socket2: %d"), iStatus.Int()); + SetError(iStatus.Int()); + iSocket1.Close(); + iConnection1.Close(); + iConnection2.Close(); + iSocketServ1.Close(); + iSocketServ2.Close(); + StopD3PApp(); + return; + } + + iSendBuf.Zero(); + iSendBuf = (TText8*)"Socket1: Nokia sues Apple!"; + + // Get destination address from config file + TPtrC ptrToReadFromConfig(KNameDefault); + TBool returnValue = GetStringFromConfig(aSection, KDestAddr, ptrToReadFromConfig); + if (!returnValue) + { + ERR_PRINTF1(_L("Reading config file failed, while reading DestAddr")); + SetError(KErrUnknown); + iSocket1.Close(); + iSocket2.Close(); + iConnection1.Close(); + iConnection2.Close(); + iSocketServ1.Close(); + iSocketServ2.Close(); + StopD3PApp(); + return; + } + //set destination IP ie. server + TInt err = iDestAddr.Input(ptrToReadFromConfig); + if(err != KErrNone) + { + INFO_PRINTF2(KInetInputFail, err); + SetError(err); + StopD3PApp(); + return; + } + + returnValue = GetIntFromConfig(aSection, KDestPort, iDestPort); + iDestAddr.SetPort(iDestPort); + //bind local port to socket + err = iSocket1.SetLocalPort(LOCAL_PORT); + if(err != KErrNone) + { + ERR_PRINTF1(_L("Error in setting local port to socket1")); + SetError(err); + iSocket1.Close(); + iSocket2.Close(); + iConnection1.Close(); + iConnection2.Close(); + iSocketServ1.Close(); + iSocketServ2.Close(); + StopD3PApp(); + return; + } + + //read Real interface ip addr and port from config file + returnValue = GetStringFromConfig(aSection, KRealDestAddr, ptrToReadFromConfig); + if (!returnValue) + { + ERR_PRINTF1(_L("Reading config file failed, while reading RealDestAddr")); + SetError(KErrUnknown); + iSocket1.Close(); + iSocket2.Close(); + iConnection1.Close(); + iConnection2.Close(); + iSocketServ1.Close(); + iSocketServ2.Close(); + StopD3PApp(); + return; + } + //set destination IP ie. server + err = iRealDestAddr.Input(ptrToReadFromConfig); + if(err != KErrNone) + { + INFO_PRINTF2(KInetInputFail, err); + SetError(err); + iSocket1.Close(); + iSocket2.Close(); + iConnection1.Close(); + iConnection2.Close(); + iSocketServ1.Close(); + iSocketServ2.Close(); + StopD3PApp(); + return; + } + + returnValue = GetIntFromConfig(aSection, KRealDestPort, iRealDestPort); + if (!returnValue) + { + ERR_PRINTF1(_L("Reading config file failed, while reading RealDestAddr")); + SetError(KErrUnknown); + iSocket1.Close(); + iSocket2.Close(); + iConnection1.Close(); + iConnection2.Close(); + iSocketServ1.Close(); + iSocketServ2.Close(); + StopD3PApp(); + return; + } + iRealDestAddr.SetPort(iRealDestPort); + //bind local port to socket + //err = iSocket2.SetLocalPort(LOCAL_PORT); + //send data to server + iSocket1.SendTo(iSendBuf, iDestAddr, NULL, iStatus); + User::WaitForRequest(iStatus); + if( iStatus == KErrNone) + INFO_PRINTF1(_L("\nData Sent thru virtual interface")); + else + { + ERR_PRINTF1(_L("\nData sending failed through virtual interface")); + SetError(iStatus.Int()); + iSocket1.Close(); + iSocket2.Close(); + iConnection1.Close(); + iConnection2.Close(); + iSocketServ1.Close(); + iSocketServ2.Close(); + StopD3PApp(); + return; + } + + iRecvBuf.Zero(); + iSocket1.RecvFrom(iRecvBuf, iDestAddr, NULL, iStatus); + User::WaitForRequest(iStatus); + TBuf<128> temp; + if( iStatus == KErrNone) + { + INFO_PRINTF1(_L("\nData Received from Socket1 : ")); + temp.Copy(iRecvBuf); + INFO_PRINTF1(temp); + INFO_PRINTF1(_L("\n")); + } + else + { + ERR_PRINTF1(_L("\nData receive failed on Socket1")); + SetError(iStatus.Int()); + iSocket1.Close(); + iSocket2.Close(); + iConnection1.Close(); + iConnection2.Close(); + iSocketServ1.Close(); + iSocketServ2.Close(); + StopD3PApp(); + return; + } + + iSendBuf.Zero(); + iSendBuf = (TText8*)"Socket2: Nokia sues Apple!"; + iSocket2.SendTo(iSendBuf, iRealDestAddr, NULL, iStatus); + User::WaitForRequest(iStatus); + if( iStatus == KErrNone) + INFO_PRINTF1(_L("\nData Sent thru real interface")); + else + { + ERR_PRINTF1(_L("\nData sending failed through real interface")); + SetError(iStatus.Int()); + iSocket1.Close(); + iSocket2.Close(); + iConnection1.Close(); + iConnection2.Close(); + iSocketServ1.Close(); + iSocketServ2.Close(); + StopD3PApp(); + return; + + } + iRecvBuf.Zero(); + iSocket2.RecvFrom(iRecvBuf, iRealDestAddr, NULL, iStatus); + User::WaitForRequest(iStatus); + temp.Zero(); + if( iStatus == KErrNone) + { + INFO_PRINTF1(_L("\nData Received from Socket2: ")); + temp.Copy(iRecvBuf); + INFO_PRINTF1(temp); + INFO_PRINTF1(_L("\n")); + } + else + { + ERR_PRINTF1(_L("\nData receive failed on Socket2")); + SetError(iStatus.Int()); + } + + iSocket1.Close(); + iSocket2.Close(); + iConnection1.Close(); + iConnection2.Close(); + iSocketServ1.Close(); + iSocketServ2.Close(); + StopD3PApp(); + } + +void CTunDriverTestWrapper::DoRConnTest1_9(const TDesC& aSection) + { + INFO_PRINTF1(_L("*********************************************")); + INFO_PRINTF1(_L(" Test: DoRConnTest1_9 ")); + INFO_PRINTF1(_L("********************************************")); +#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + CMDBSession *cmdbSession = CMDBSession::NewL(KCDVersion1_2); +#else + CMDBSession *cmdbSession = CMDBSession::NewL(KCDVersion1_1); +#endif + CleanupStack::PushL(cmdbSession); + + CCDIAPRecord *iapRecord = (CCDIAPRecord*)CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord); + CleanupStack::PushL(iapRecord); + + iapRecord->SetRecordId(14); + + iapRecord->LoadL(*cmdbSession); + + //iapRecord->iServiceType; + TUint recid = iapRecord->iService; + CCDLANServiceRecord *lanRecord = (CCDLANServiceRecord*)CCDRecordBase::RecordFactoryL(KCDTIdLANServiceRecord); + CleanupStack::PushL(lanRecord); + + lanRecord->SetRecordId(recid); + + lanRecord->LoadL(*cmdbSession); + + // Get gateway address from config file + TPtrC ptrToReadFromConfig(KNameDefault); + TBool returnValue = GetStringFromConfig(aSection, KGatewayAddr, ptrToReadFromConfig); + if (!returnValue) + { + ERR_PRINTF1(_L("Reading config file failed, while reading DestAddr")); + SetError(KErrUnknown); + return; + } + + // Create address + TInetAddr gwAddr; + TInt err = gwAddr.Input(ptrToReadFromConfig); + if(err != KErrNone) + { + INFO_PRINTF2(KInetInputFail, err); + SetError(err); + return; + } + TPtrC displayIpAddr(lanRecord->iIpAddr); + //INFO_PRINTF2(_L("lanRecord ipAddr is %S"), &displayIpAddr); + + TPtrC ipGateway(_L("10.1.1.100")); + //TPtrC ipGateway(ptrToReadFromConfig); + lanRecord->iIpGateway.SetMaxLengthL(ipGateway.Length()); + lanRecord->iIpGateway = ipGateway; + + + // Get gateway address from config file + returnValue = GetStringFromConfig(aSection, KIpAddr, ptrToReadFromConfig); + if (!returnValue) + { + ERR_PRINTF1(_L("Reading config file failed, while reading DestAddr")); + SetError(KErrUnknown); + return; + } + //TPtrC ipAddr(_L("10.1.1.100")); + TPtrC ipAddr(ptrToReadFromConfig); + lanRecord->iIpAddr.SetMaxLengthL(ipAddr.Length()); + lanRecord->iIpAddr = ipAddr; + + TRAPD(modifyErr, lanRecord->ModifyL(*cmdbSession)); + INFO_PRINTF2(_L("lanRecord ModifyL result was %d. Should be 0"), modifyErr); + + TPtrC displayIpAddr2(lanRecord->iIpAddr); + INFO_PRINTF2(_L("lanRecord ipAddr is %S"), &displayIpAddr2); + CleanupStack::PopAndDestroy(lanRecord); + CleanupStack::PopAndDestroy(iapRecord); + CleanupStack::PopAndDestroy(cmdbSession); + + + } + +//Ensure that Close() effectively pulls down the interface +//when no other subsessions are associated with it. +void CTunDriverTestWrapper::DoRConnTest1_10(const TDesC& aSection) + { + INFO_PRINTF1(_L("*********************************************")); + INFO_PRINTF1(_L(" Test: DoRConnTest1_10 ")); + INFO_PRINTF1(_L("********************************************")); + + //start the dummy3rdpartyapp + if ((iVTunError = StartD3PApp()) != KErrNone) + { + return; + } + + if((iStatus = iSocketServ.Connect()) == KErrNone ) + INFO_PRINTF1(_L("Socket Server Opened.\n")); + else + { + ERR_PRINTF2(_L("Error Opening Socket Server: %d"), iStatus.Int()); + SetError(iStatus.Int()); + StopD3PApp(); + return; + } + if((iStatus = iConnection.Open(iSocketServ /*, KAfInet*/)) == KErrNone ) + INFO_PRINTF1(_L("Connection opened. \n")); + else + { + ERR_PRINTF2(_L("Error Opening Connection: %d"), iStatus.Int()); + SetError(iStatus.Int()); + StopD3PApp(); + return; + } + + iCommDbPref.SetIapId(TUNDRIVER_IAP); // Virtual Interface + iCommDbPref.SetBearerSet(KCommDbBearerVirtual); + iCommDbPref.SetDialogPreference(ECommDbDialogPrefDoNotPrompt); + + iConnection.Start(iCommDbPref, iStatus); + User::WaitForRequest(iStatus); + if (iStatus.Int() != KErrNone) + { + ERR_PRINTF2(_L("Error starting connection: %d"), iStatus.Int()); + SetError(iStatus.Int()); + iSocketServ.Close(); + StopD3PApp(); + return; + } + INFO_PRINTF2(_L("Starting Connection %d.\n"), iStatus.Int()); + + //Enumerate the number of interfaces + iConnection.EnumerateConnections(iInitNumOfInterfaces); + INFO_PRINTF2(_L("Number of Interfaces: %d!\n "), iInitNumOfInterfaces); + + //open socket on interface. + if((iStatus = iSocket.Open(iSocketServ, KAfInet, KSockDatagram, KProtocolInetUdp, iConnection)) == KErrNone ) + INFO_PRINTF1(_L("Socket Opened!\n ")); + else // (iStatus!=KErrNone) + { + ERR_PRINTF2(_L("Error Opening Socket: %d"), iStatus.Int()); + SetError(iStatus.Int()); + iConnection.Close(); + iSocketServ.Close(); + StopD3PApp(); + return; + } + + iSendBuf.Zero(); + iSendBuf = (TText8*)"Nokia sues Apple!"; + + // Get destination address from config file + TPtrC ptrToReadFromConfig(KNameDefault); + TBool returnValue = GetStringFromConfig(aSection, KDestAddr, ptrToReadFromConfig); + if (!returnValue) + { + ERR_PRINTF1(_L("Reading config file failed, while reading DestAddr")); + SetError(KErrUnknown); + iSocket.Close(); + iConnection.Close(); + iSocketServ.Close(); + StopD3PApp(); + return; + } + //set destination IP ie. server + TInt err = iDestAddr.Input(ptrToReadFromConfig); + if(err != KErrNone) + { + INFO_PRINTF2(KInetInputFail, err); + SetError(err); + iSocket.Close(); + iConnection.Close(); + iSocketServ.Close(); + StopD3PApp(); + return; + } + + returnValue = GetIntFromConfig(aSection, KDestPort, iDestPort); + if (!returnValue) + { + ERR_PRINTF1(_L("Reading config file failed, while reading DestAddr")); + SetError(KErrUnknown); + iSocket.Close(); + iConnection.Close(); + iSocketServ.Close(); + StopD3PApp(); + return; + } + + iDestAddr.SetPort(iDestPort); + //bind local port to socket + err = iSocket.SetLocalPort(LOCAL_PORT); + if (err != KErrNone) + { + ERR_PRINTF1(_L("Error setting local port")); + SetError(err); + iSocket.Close(); + iConnection.Close(); + iSocketServ.Close(); + StopD3PApp(); + return; + } + + //send data to server + iSocket.SendTo(iSendBuf, iDestAddr, NULL, iStatus); + User::WaitForRequest(iStatus); + if( iStatus == KErrNone) + INFO_PRINTF1(_L("\nData Sent")); + else + { + ERR_PRINTF1(_L("\nData sending failed")); + SetError(iStatus.Int()); + iSocket.Close(); + iConnection.Close(); + iSocketServ.Close(); + StopD3PApp(); + return; + } + + iRecvBuf.Zero(); + iSocket.RecvFrom(iRecvBuf, iDestAddr, NULL, iStatus); + User::WaitForRequest(iStatus); + TBuf<128> temp; + if( iStatus == KErrNone) + { + INFO_PRINTF1(_L("\nData Received : ")); + temp.Copy(iRecvBuf); + INFO_PRINTF1(temp); + INFO_PRINTF1(_L("\n")); + } + else + { + ERR_PRINTF1(_L("\nData receive failed.")); + SetError(iStatus.Int()); + } + + iSocket.Close(); + iConnection.Close(); + iSocketServ.Close(); + + StopD3PApp(); + + } + +//Ensure that Close() does not pull down the interface when there are other +//connections associated with it. +void CTunDriverTestWrapper::DoRConnTest1_11() + { + INFO_PRINTF1(_L("*********************************************")); + INFO_PRINTF1(_L(" Test: DoRConnTest1_11 ")); + INFO_PRINTF1(_L("*********************************************")); + + if((iStatus = iSocketServ.Connect()) == KErrNone ) + INFO_PRINTF1(_L("Socket Server Opened.\n")); + else + { + ERR_PRINTF2(_L("Error Opening Socket Server: %d"), iStatus.Int()); + SetError(iStatus.Int()); + return; + } + + if((iStatus = iConnection1.Open(iSocketServ /*, KAfInet*/)) == KErrNone ) + INFO_PRINTF1(_L("Connection1 opened. \n")); + else + { + ERR_PRINTF2(_L("Error Opening Connection1: %d"), iStatus.Int()); + SetError(iStatus.Int()); + return; + } + + if((iStatus = iConnection2.Open(iSocketServ /*, KAfInet*/)) == KErrNone ) + INFO_PRINTF1(_L("Connection2 opened. \n")); + else + { + ERR_PRINTF2(_L("Error Opening Connection2: %d"), iStatus.Int()); + SetError(iStatus.Int()); + return; + } + + iCommDbPref.SetIapId(TUNDRIVER_IAP); // Virtual Interface + iCommDbPref.SetBearerSet(KCommDbBearerVirtual); + iCommDbPref.SetDialogPreference(ECommDbDialogPrefDoNotPrompt); + + iConnection1.Start(iCommDbPref, iStatus); + User::WaitForRequest(iStatus); + if(iStatus.Int()!=KErrNone) + { + ERR_PRINTF2(_L("Error starting connection1: %d"), iStatus.Int()); + SetError(iStatus.Int()); + iSocketServ.Close(); + return; + } + INFO_PRINTF2(_L("Starting Connection1 %d.\n"), iStatus.Int()); + iConnection2.Start(iCommDbPref, iStatus); + User::WaitForRequest(iStatus); + if(iStatus.Int()!=KErrNone) + { + ERR_PRINTF2(_L("Error starting connection2: %d"), iStatus.Int()); + SetError(iStatus.Int()); + iSocketServ.Close(); + return; + } + INFO_PRINTF2(_L("Starting Connection2 %d.\n"), iStatus.Int()); + + //Enumerate the number of interfaces + iConnection2.EnumerateConnections(iInitNumOfInterfaces); + INFO_PRINTF2(_L("Number of Interfaces: %d!\n "), iInitNumOfInterfaces); + + iConnection1.Close(); + User::After(30000); + + iConnection2.EnumerateConnections(iCurNumOfInterfaces); + INFO_PRINTF2(_L("Number of Interfaces after closing 1st Connection: %d!\n "), iCurNumOfInterfaces); + if(iCurNumOfInterfaces == iInitNumOfInterfaces) + INFO_PRINTF1(_L("Number of interfaces before and after closing the connection is same")); + else + { + ERR_PRINTF1(_L("ERROR: More Number of Interfaces than expected.")); + SetError(KErrGeneral); + return; + } + iConnection2.Stop(); + User::After(30000); + iSocketServ.Close(); + } + +//Ensure that Stop() pulls down the interface when there are no subsessions +//other than the connection associated with it. +void CTunDriverTestWrapper::DoRConnTest1_12() + { + + INFO_PRINTF1(_L("*********************************************")); + INFO_PRINTF1(_L(" Test: DoRConnTest1_12 ")); + INFO_PRINTF1(_L("*********************************************")); + + if((iStatus = iSocketServ.Connect()) == KErrNone ) + INFO_PRINTF1(_L("Socket Server Opened.\n")); + else + { + ERR_PRINTF2(_L("Error Opening Socket Server: %d"), iStatus.Int()); + SetError(iStatus.Int()); + return; + } + + if((iStatus = iConnection.Open(iSocketServ /*, KAfInet*/)) == KErrNone ) + INFO_PRINTF1(_L("Connection opened. \n")); + else + { + ERR_PRINTF2(_L("Error Opening Connection: %d"), iStatus.Int()); + SetError(iStatus.Int()); + return; + } + + iCommDbPref1.SetIapId(REAL_IAP); // Virtual Interface + iCommDbPref1.SetBearerSet(KCommDbBearerLAN); + iCommDbPref1.SetDialogPreference(ECommDbDialogPrefDoNotPrompt); + + iConnection.Start(iCommDbPref1,iStatus); + User::WaitForRequest(iStatus); + if(iStatus.Int()!=KErrNone) + { + ERR_PRINTF2(_L("Error starting connection: %d"), iStatus.Int()); + SetError(iStatus.Int()); + iSocketServ.Close(); + return; + } + INFO_PRINTF2(_L("Starting Connection %d.\n"), iStatus.Int()); + + //Enumerate the number of interfaces + iConnection.EnumerateConnections(iInitNumOfInterfaces); + INFO_PRINTF2(_L("Number of initial Interfaces: %d!\n "), iInitNumOfInterfaces); + + TInt MyErr = iConnection.Stop(); + User::After(30000); + iConnection.EnumerateConnections(iCurNumOfInterfaces); + INFO_PRINTF2(_L("Number of Interfaces after stopping the connection: %d!\n "), iCurNumOfInterfaces); + if(iCurNumOfInterfaces>=iInitNumOfInterfaces) + { + ERR_PRINTF1(_L("ERROR: More Number of Interfaces than expected.")); + SetError(KErrGeneral); + return; + } + iSocketServ.Close(); + } + +//Ensure that Stop() pulls down the interface when +//there are sockets associated with it. +void CTunDriverTestWrapper::DoRConnTest1_13(const TDesC& aSection) + { + INFO_PRINTF1(_L("*********************************************")); + INFO_PRINTF1(_L(" Test: DoRConnTest1_13 ")); + INFO_PRINTF1(_L("*********************************************")); + + //start the dummy3rdpartyapp + if ((iVTunError = StartD3PApp()) != KErrNone) + { + return; + } + + if((iStatus = iSocketServ.Connect()) == KErrNone ) + INFO_PRINTF1(_L("Socket Server Opened.\n")); + else + { + ERR_PRINTF2(_L("Error Opening Socket Server: %d"), iStatus.Int()); + SetError(iStatus.Int()); + StopD3PApp(); + return; + } + + if((iStatus = iConnection.Open(iSocketServ /*, KAfInet*/)) == KErrNone ) + INFO_PRINTF1(_L("Connection opened. \n")); + else + { + ERR_PRINTF2(_L("Error Opening Connection: %d"), iStatus.Int()); + SetError(iStatus.Int()); + StopD3PApp(); + return; + } + + iCommDbPref.SetIapId(TUNDRIVER_IAP); // Virtual Interface + iCommDbPref.SetBearerSet(KCommDbBearerVirtual); + iCommDbPref.SetDialogPreference(ECommDbDialogPrefDoNotPrompt); + iConnection.Start(iCommDbPref, iStatus); + User::WaitForRequest(iStatus); + if(iStatus.Int()!=KErrNone) + { + ERR_PRINTF2(_L("Error starting connection: %d"), iStatus.Int()); + SetError(iStatus.Int()); + iSocketServ.Close(); + StopD3PApp(); + return; + } + INFO_PRINTF2(_L("Starting Connection %d.\n"), iStatus.Int()); + + //open socket on interface. + if((iStatus = iSocket.Open(iSocketServ, KAfInet, KSockDatagram, KProtocolInetUdp, iConnection)) == KErrNone ) + INFO_PRINTF1(_L("Socket Opened!\n ")); + else // (iStatus!=KErrNone) + { + ERR_PRINTF2(_L("Error Opening Socket: %d"), iStatus.Int()); + SetError(iStatus.Int()); + iConnection.Close(); + iSocketServ.Close(); + StopD3PApp(); + return; + } + + iSendBuf.Zero(); + iSendBuf = (TText8*)"Sending Data through Socket!"; + + // Get destination address from config file + TPtrC ptrToReadFromConfig(KNameDefault); + TBool returnValue = GetStringFromConfig(aSection, KDestAddr, ptrToReadFromConfig); + if (!returnValue) + { + ERR_PRINTF1(_L("Reading config file failed, while reading DestAddr")); + SetError(KErrUnknown); + iSocket.Close(); + iConnection.Close(); + iSocketServ.Close(); + StopD3PApp(); + return; + } + //set destination IP ie. server + TInt err = iDestAddr.Input(ptrToReadFromConfig); + if(err != KErrNone) + { + INFO_PRINTF2(KInetInputFail, err); + SetError(err); + iSocket.Close(); + iConnection.Close(); + iSocketServ.Close(); + StopD3PApp(); + return; + } + + returnValue = GetIntFromConfig(aSection, KDestPort, iDestPort); + if (!returnValue) + { + ERR_PRINTF1(_L("Reading config file failed, while reading DestAddr")); + SetError(KErrUnknown); + iSocket.Close(); + iConnection.Close(); + iSocketServ.Close(); + StopD3PApp(); + return; + } + + iDestAddr.SetPort(iDestPort); + //bind local port to socket + err = iSocket.SetLocalPort(LOCAL_PORT); + if (err != KErrNone) + { + ERR_PRINTF1(_L("Reading config file failed, while reading DestAddr")); + SetError(err); + iSocket.Close(); + iConnection.Close(); + iSocketServ.Close(); + StopD3PApp(); + return; + } + + //send data to server + iSocket.SendTo(iSendBuf, iDestAddr, NULL, iStatus); + User::WaitForRequest(iStatus); + if( iStatus == KErrNone) + INFO_PRINTF1(_L("\nData Sent")); + else + { + ERR_PRINTF1(_L("\nData sending failed")); + SetError(iStatus.Int()); + iSocket.Close(); + iConnection.Close(); + iSocketServ.Close(); + StopD3PApp(); + return; + } + + iRecvBuf.Zero(); + iSocket.RecvFrom(iRecvBuf, iDestAddr, NULL, iStatus); + User::WaitForRequest(iStatus); + TBuf<128> temp; + if( iStatus == KErrNone) + { + INFO_PRINTF1(_L("\nData Received from Socket : ")); + temp.Copy(iRecvBuf); + INFO_PRINTF1(temp); + INFO_PRINTF1(_L("\n")); + } + else + { + ERR_PRINTF1(_L("\nData receive failed on Socket")); + SetError(iStatus.Int()); + iConnection.Close(); + iSocketServ.Close(); + StopD3PApp(); + return; + } + + + //Enumerate the number of interfaces + iConnection.EnumerateConnections(iInitNumOfInterfaces); + INFO_PRINTF2(_L("Number of Init Interfaces: %d!\n "), iInitNumOfInterfaces); + + iConnection.Stop(); + User::After(30000); + iConnection.EnumerateConnections(iCurNumOfInterfaces); + INFO_PRINTF2(_L("Number of Interfaces after Stopping the interface: %d!\n "), iCurNumOfInterfaces); + if(iCurNumOfInterfaces>=iInitNumOfInterfaces) + { + ERR_PRINTF1(_L("ERROR: More Number of Interfaces than expected.")); + SetError(KErrGeneral); + } + iSocket.Close(); + iSocketServ.Close(); + StopD3PApp(); + } + +//Stop() a connection and ensure that other connections over +//other interfaces are unaffected. +void CTunDriverTestWrapper::DoRConnTest1_14(const TDesC& aSection) + { + + INFO_PRINTF1(_L("*********************************************")); + INFO_PRINTF1(_L(" Test: DoRConnTest1_14 ")); + INFO_PRINTF1(_L("*********************************************")); + + if((iStatus = iSocketServ.Connect()) == KErrNone ) + INFO_PRINTF1(_L("Socket Server Opened.\n")); + else + { + ERR_PRINTF2(_L("Error Opening Socket Server: %d"), iStatus.Int()); + SetError(iStatus.Int()); + + return; + } + + if((iStatus = iConnection1.Open(iSocketServ /*, KAfInet*/)) == KErrNone ) + INFO_PRINTF1(_L("Connection1 opened. \n")); + else + { + ERR_PRINTF2(_L("Error Opening Connection1: %d"), iStatus.Int()); + SetError(iStatus.Int()); + + return; + } + iCommDbPref1.SetIapId(TUNDRIVER_IAP); // Virtual Interface + iCommDbPref1.SetBearerSet(KCommDbBearerVirtual); + iCommDbPref1.SetDialogPreference(ECommDbDialogPrefDoNotPrompt); + iConnection1.Start(iCommDbPref1,iStatus); + User::WaitForRequest(iStatus); + if(iStatus.Int()!=KErrNone) + { + ERR_PRINTF2(_L("Error starting connection1: %d"), iStatus.Int()); + SetError(iStatus.Int()); + iSocketServ.Close(); + return; + } + INFO_PRINTF2(_L("Starting Connection1 %d.\n"), iStatus.Int()); + + if((iStatus = iConnection2.Open(iSocketServ /*, KAfInet*/)) == KErrNone ) + INFO_PRINTF1(_L("Connection2 opened. \n")); + else + { + ERR_PRINTF2(_L("Error Opening Connection2: %d"), iStatus.Int()); + SetError(iStatus.Int()); + iSocketServ.Close(); + return; + } + iCommDbPref2.SetIapId(REAL_IAP); // Virtual Interface + iCommDbPref2.SetBearerSet(KCommDbBearerLAN); + iCommDbPref2.SetDialogPreference(ECommDbDialogPrefDoNotPrompt); + iConnection2.Start(iCommDbPref2, iStatus); + User::WaitForRequest(iStatus); + if(iStatus.Int()!=KErrNone) + { + ERR_PRINTF2(_L("Error starting connection2: %d"), iStatus.Int()); + SetError(iStatus.Int()); + iConnection1.Close(); + iSocketServ.Close(); + return; + } + INFO_PRINTF2(_L("Starting Connection2 %d.\n"), iStatus.Int()); + //enumnerate the interfaces + iConnection1.EnumerateConnections(iInitNumOfInterfaces); + INFO_PRINTF2(_L("Number of Initial Interfaces: %d!\n "), iInitNumOfInterfaces); + + //Shutdown the first connection. + iConnection1.Stop(); + + //enumnerate the interfaces again. + iConnection2.EnumerateConnections(iCurNumOfInterfaces); + INFO_PRINTF2(_L("Number of Interfaces after Stopping the VTun Interface: %d!\n "), iCurNumOfInterfaces); + if(iCurNumOfInterfaces>iInitNumOfInterfaces) + { + ERR_PRINTF1(_L("ERROR: More Number of Interfaces than expected.")); + SetError(KErrGeneral); + iConnection2.Close(); + iSocketServ.Close(); + return; + } + //open udp socket over second connection and send data over it. + + if((iStatus = iSocket.Open(iSocketServ, KAfInet, KSockDatagram, KProtocolInetUdp, iConnection2)) == KErrNone ) + INFO_PRINTF1(_L("Socket Opened!\n ")); + else // (iStatus!=KErrNone) + { + ERR_PRINTF2(_L("Error Opening Socket: %d"), iStatus.Int()); + SetError(iStatus.Int()); + iConnection2.Close(); + iSocketServ.Close(); + return; + } + + iSendBuf.Zero(); + iSendBuf = (TText8*)"Sending Data through Socket!"; + + // Get destination address from config file + TPtrC ptrToReadFromConfig(KNameDefault); + TBool returnValue = GetStringFromConfig(aSection, KRealDestAddr, ptrToReadFromConfig); + if (!returnValue) + { + ERR_PRINTF1(_L("Reading config file failed, while reading DestAddr")); + SetError(KErrUnknown); + iSocket.Close(); + iConnection2.Close(); + iSocketServ.Close(); + return; + } + //set destination IP ie. server + TInt err = iRealDestAddr.Input(ptrToReadFromConfig); + if(err != KErrNone) + { + INFO_PRINTF2(KInetInputFail, err); + SetError(err); + iConnection2.Close(); + iSocketServ.Close(); + return; + } + + returnValue = GetIntFromConfig(aSection, KRealDestPort, iRealDestPort); + iRealDestAddr.SetPort(iRealDestPort); + //bind local port to socket + err = iSocket.SetLocalPort(LOCAL_PORT); + + //send data to server + iSocket.SendTo(iSendBuf, iRealDestAddr, NULL, iStatus); + User::WaitForRequest(iStatus); + if( iStatus == KErrNone) + INFO_PRINTF1(_L("\nData Sent")); + else + { + ERR_PRINTF2(_L("\nData sending failed: %d"), iStatus.Int()); + SetError(iStatus.Int()); + iSocket.Close(); + iConnection2.Close(); + iSocketServ.Close(); + return; + } + + iRecvBuf.Zero(); + iSocket.RecvFrom(iRecvBuf, iDestAddr, NULL, iStatus); + User::WaitForRequest(iStatus); + TBuf<128> temp; + if( iStatus == KErrNone ) + { + INFO_PRINTF1(_L("\nData Received from Socket : ")); + temp.Copy(iRecvBuf); + INFO_PRINTF1(temp); + INFO_PRINTF1(_L("\n")); + } + else + { + ERR_PRINTF1(_L("\nData receive failed on Socket")); + SetError(iStatus.Int()); + } + + iSocket.Close(); + iConnection2.Close(); + iSocketServ.Close(); + + } + +void CTunDriverTestWrapper::DoRConnTest1_15() + { + INFO_PRINTF1(_L("*********************************************")); + INFO_PRINTF1(_L(" Test: DoRConnTest1_15 ")); + INFO_PRINTF1(_L("********************************************")); + + if((iStatus = iSocketServ.Connect()) == KErrNone ) + INFO_PRINTF1(_L("Socket Server Opened.\n")); + else + { + ERR_PRINTF2(_L("Error Opening Socket Server: %d"), iStatus.Int()); + SetError(iStatus.Int()); + return; + } + + iSocket.Open(iSocketServ,_L("tun")); + + TUint localPort = 6789; + TPckgC portPckg (localPort); + + //Positive case + + if((iStatus = iSocket.SetOpt(KSolInetIp,KSoTunnelPort,portPckg)) == KErrNone ) + INFO_PRINTF1(_L("Socket SetOpt Positive scenario succesful Opened.\n")); + else + { + ERR_PRINTF2(_L("Error in Socket SetOpt: %d"), iStatus.Int()); + SetError(iStatus.Int()); + iSocket.Close(); + iSocketServ.Close(); + return; + } + + //Negative Case #1 + if((iStatus = iSocket.SetOpt(KSolInetUdp,KSoTunnelPort,portPckg)) == KErrNotSupported ) + INFO_PRINTF1(_L("Socket SetOpt Negative scenario #1 succesful Opened.\n")); + else + { + ERR_PRINTF2(_L("Error in Socket SetOpt: %d"), iStatus.Int()); + SetError(iStatus.Int()); + iSocket.Close(); + iSocketServ.Close(); + return; + } + + //Negative Case #2 + if((iStatus = iSocket.SetOpt(KSolInetUdp,KSoNoSourceAddressSelect,portPckg)) == KErrNotSupported ) + INFO_PRINTF1(_L("Socket SetOpt Negative scenario #2 succesful Opened.\n")); + else + { + ERR_PRINTF2(_L("Error in Socket SetOpt: %d"), iStatus.Int()); + SetError(iStatus.Int()); + } + + iSocket.Close(); + iSocketServ.Close(); + } + +void CTunDriverTestWrapper::DoRConnTest1_16(const TDesC& aSection) + { + INFO_PRINTF1(_L("*********************************************")); + INFO_PRINTF1(_L(" Test: DoRConnTest1_16 ")); + INFO_PRINTF1(_L("********************************************")); + + + if((iStatus = iSocketServ.Connect()) == KErrNone ) + INFO_PRINTF1(_L("Socket Server Opened.\n")); + else + { + ERR_PRINTF2(_L("Error Opening Socket Server: %d"), iStatus.Int()); + SetError(iStatus.Int()); + return; + } + if((iStatus = iConnection.Open(iSocketServ)) == KErrNone ) + INFO_PRINTF1(_L("Connection opened. \n")); + else + { + ERR_PRINTF2(_L("Error Opening Connection: %d"), iStatus.Int()); + SetError(iStatus.Int()); + iSocketServ.Close(); + return; + } + + iCommDbPref.SetIapId(TUNDRIVER_IAP); // Virtual Interface + iCommDbPref.SetBearerSet(KCommDbBearerVirtual); + iCommDbPref.SetDialogPreference(ECommDbDialogPrefDoNotPrompt); + + iConnection.Start(iCommDbPref, iStatus); + User::WaitForRequest(iStatus); + if(iStatus.Int()!=KErrNone) + { + ERR_PRINTF2(_L("Error starting connection: %d"), iStatus.Int()); + SetError(iStatus.Int()); + iSocketServ.Close(); + return; + } + INFO_PRINTF2(_L("Starting Connection %d.\n"), iStatus.Int()); + + iSocket.Open(iSocketServ,_L("tun")); + + TUint localPort = 6789; + TPckgC portPckg (localPort); + + //Setting the Port Number into the Stack + if((iStatus = iSocket.SetOpt(KSolInetIp,KSoTunnelPort,portPckg)) == KErrNone ) + INFO_PRINTF1(_L("Socket SetOpt Positive scenario succesful Opened.\n")); + else + { + ERR_PRINTF2(_L("Error in Socket SetOpt: %d"), iStatus.Int()); + SetError(iStatus.Int()); + iConnection.Close(); + iSocketServ.Close(); + return; + } + + // Get destination address from config file + TPtrC ptrToReadFromConfig(KNameDefault); + TBool returnValue = GetStringFromConfig(aSection, KDestAddr, ptrToReadFromConfig); + if (!returnValue) + { + ERR_PRINTF1(_L("Reading config file failed, while reading DestAddr")); + SetError(KErrUnknown); + iSocket.Close(); + iConnection.Close(); + iSocketServ.Close(); + return; + } + + //set destination IP + TInt err = iDestAddr.Input(ptrToReadFromConfig); + if(err != KErrNone) + { + INFO_PRINTF2(KInetInputFail, err); + SetError(err); + iSocket.Close(); + iConnection.Close(); + iSocketServ.Close(); + return; + } + + //set the destination port + returnValue = GetIntFromConfig(aSection, KDestPort, iDestPort); + if (!returnValue) + { + ERR_PRINTF1(_L("Reading config file failed, while reading DestAddr")); + SetError(KErrUnknown); + iSocket.Close(); + iConnection.Close(); + iSocketServ.Close(); + return; + } + + iDestAddr.SetPort(iDestPort); + + //retrieve the local address + TInetAddr iLocalAddr; + returnValue = GetStringFromConfig(aSection, KLocalAddr, ptrToReadFromConfig); + if (!returnValue) + { + ERR_PRINTF1(_L("Reading config file failed, while reading LocalAddr")); + SetError(KErrUnknown); + iSocket.Close(); + iConnection.Close(); + iSocketServ.Close(); + return; + } + + err = iLocalAddr.Input(ptrToReadFromConfig); + if(err != KErrNone) + { + INFO_PRINTF2(KInetInputFail, err); + SetError(err); + iSocket.Close(); + iConnection.Close(); + iSocketServ.Close(); + return; + } + + iLocalAddr.SetPort(LOCAL_PORT); + + //open socket on interface. + if((iStatus = iSocket1.Open(iSocketServ, KAfInet, KSockDatagram, KProtocolInetUdp,iConnection)) == KErrNone ) + INFO_PRINTF1(_L("Socket1 Opened!\n ")); + else // (iStatus!=KErrNone) + { + ERR_PRINTF2(_L("Error Opening Socket1: %d"), iStatus.Int()); + SetError(iStatus.Int()); + iSocket.Close(); + iConnection.Close(); + iSocketServ.Close(); + return; + } + + //open socket on interface. + if((iStatus = iSocket2.Open(iSocketServ, KAfInet, KSockDatagram, KProtocolInetIcmp,iConnection)) == KErrNone ) + INFO_PRINTF1(_L("Socket2 Opened!\n ")); + else // (iStatus!=KErrNone) + { + ERR_PRINTF2(_L("Error Opening Socket2: %d"), iStatus.Int()); + SetError(iStatus.Int()); + iSocket.Close(); + iSocket1.Close(); + iConnection.Close(); + iSocketServ.Close(); + return; + } + + err = iSocket1.Bind(iLocalAddr); + if(err != KErrNone) + { + ERR_PRINTF2(_L("Error Binding Socket1: %d"), err); + SetError(iStatus.Int()); + iSocket.Close(); + iSocket1.Close(); + iSocket2.Close(); + iConnection.Close(); + iSocketServ.Close(); + return; + } + + TInt iLocalPort; + returnValue = GetIntFromConfig(aSection, KLocalPort, iLocalPort); + iLocalAddr.SetPort(iLocalPort); + + err = iSocket2.Bind(iLocalAddr); + if(err != KErrNone) + { + ERR_PRINTF2(_L("Error Binding Socket2: %d"), err); + SetError(iStatus.Int()); + iSocket.Close(); + iSocket1.Close(); + iSocket2.Close(); + iConnection.Close(); + iSocketServ.Close(); + return; + } + + iSendBuf.Zero(); + iSendBuf = (TText8*)"Test Message"; + + //send data to server using the local port = LOCAL_PORT (7777) + iSocket1.SendTo(iSendBuf, iDestAddr, NULL, iStatus); + User::WaitForRequest(iStatus); + + if( iStatus == KErrNone) + INFO_PRINTF1(_L("\nData Sent thru socket1")); + else + { + ERR_PRINTF1(_L("\nData sending failed")); + SetError(iStatus.Int()); + iSocket.Close(); + iSocket1.Close(); + iSocket2.Close(); + iConnection.Close(); + iSocketServ.Close(); + return; + } + + //send data to server using the local port configured in ini file + iSocket2.SendTo(iSendBuf, iDestAddr, NULL, iStatus); + User::WaitForRequest(iStatus); + + if( iStatus == KErrNone) + INFO_PRINTF1(_L("\nData Sent thru socket2")); + else + { + ERR_PRINTF1(_L("\nData sending failed")); + SetError(iStatus.Int()); + } + iSocket.Close(); + iSocket1.Close(); + iSocket2.Close(); + iConnection.Close(); + iSocketServ.Close(); + } + +//Simple TCP data transfer. +void CTunDriverTestWrapper::DoRConnTest1_17(const TDesC& aSection) + { + INFO_PRINTF1(_L("*********************************************")); + INFO_PRINTF1(_L(" Test: DoRConnTest1_17 ")); + INFO_PRINTF1(_L("*********************************************")); + + //start the dummy3rdpartyapp + if ((iVTunError = StartD3PApp()) != KErrNone) + { + return; + } + + if((iStatus = iSocketServ.Connect()) == KErrNone ) + INFO_PRINTF1(_L("Socket Server Opened.\n")); + else + { + ERR_PRINTF2(_L("Error Opening Socket Server: %d"), iStatus.Int()); + SetError(iStatus.Int()); + StopD3PApp(); + return; + } + + if((iStatus = iConnection.Open(iSocketServ /*, KAfInet*/)) == KErrNone ) + INFO_PRINTF1(_L("Connection opened. \n")); + else + { + ERR_PRINTF2(_L("Error Opening Connection: %d"), iStatus.Int()); + SetError(iStatus.Int()); + iSocketServ.Close(); + StopD3PApp(); + return; + } + + iCommDbPref.SetIapId(TUNDRIVER_IAP); // Virtual Interface + iCommDbPref.SetBearerSet(KCommDbBearerVirtual); + iCommDbPref.SetDialogPreference(ECommDbDialogPrefDoNotPrompt); + iConnection.Start(iCommDbPref, iStatus); + User::WaitForRequest(iStatus); + if(iStatus.Int()!=KErrNone) + { + ERR_PRINTF2(_L("Error starting connection: %d"), iStatus.Int()); + SetError(iStatus.Int()); + iSocketServ.Close(); + return; + } + INFO_PRINTF2(_L("Starting Connection %d.\n"), iStatus.Int()); + + //open socket on interface. + if((iStatus = iSocket.Open(iSocketServ, KAfInet, KSockStream, KProtocolInetTcp, iConnection)) == KErrNone ) + INFO_PRINTF1(_L("Socket Opened!\n ")); + else // (iStatus!=KErrNone) + { + ERR_PRINTF1(_L("Error Opening Socket!")); + SetError(iStatus.Int()); + iConnection.Close(); + iSocketServ.Close(); + StopD3PApp(); + return; + } + + // Get destination address from config file + TPtrC ptrToReadFromConfig(KNameDefault); + TBool returnValue = GetStringFromConfig(aSection, KDestAddr, ptrToReadFromConfig); + if (!returnValue) + { + ERR_PRINTF1(_L("Reading config file failed, while reading DestAddr")); + SetError(KErrUnknown); + iSocket.Close(); + iConnection.Close(); + iSocketServ.Close(); + StopD3PApp(); + return; + } + //set destination IP ie. server + TInt err = iDestAddr.Input(ptrToReadFromConfig); + if(err != KErrNone) + { + INFO_PRINTF2(KInetInputFail, err); + SetError(err); + iSocket.Close(); + iConnection.Close(); + iSocketServ.Close(); + StopD3PApp(); + return; + } + + returnValue = GetIntFromConfig(aSection, KTcpDestPort, iDestPort); + if (!returnValue) + { + ERR_PRINTF1(_L("Reading config file failed, while reading DestPort")); + SetError(KErrUnknown); + iSocket.Close(); + iConnection.Close(); + iSocketServ.Close(); + StopD3PApp(); + return; + } + iDestAddr.SetPort(iDestPort); + //bind local port to socket + err = iSocket.SetLocalPort(7776); + if (err != KErrNone) + { + ERR_PRINTF1(_L("Error Setting local port")); + SetError(err); + iSocket.Close(); + iConnection.Close(); + iSocketServ.Close(); + StopD3PApp(); + return; + } + + iSocket.Connect(iDestAddr,iStatus); + User::WaitForRequest(iStatus); + if (iStatus != KErrNone) + { + ERR_PRINTF1(_L("Error Connecting to Server!")); + SetError(iStatus.Int()); + iSocket.Close(); + iConnection.Close(); + iSocketServ.Close(); + StopD3PApp(); + return; + } + else + { + INFO_PRINTF2(_L("tcp Start with = %d\n"), iStatus.Int()); + } + TBuf8<128> receiveBuffer; + TBuf<128> temp; + + do + { + TSockXfrLength aLen = 0; + iRecvBuf.FillZ(); + iSocket.RecvOneOrMore(receiveBuffer,0,iStatus,aLen); + User::WaitForRequest(iStatus); + temp.Copy(receiveBuffer); + + INFO_PRINTF1(_L("\nData Received from Socket : ")); + INFO_PRINTF1(temp); + INFO_PRINTF1(_L("\n")); + + }while(iStatus == KErrNone); + + //Close the Connection,Socket and socket server. + iSocket.Close(); + iConnection.Stop(); + iSocketServ.Close(); + StopD3PApp(); + } + + +//For Code Coverage. + +void CTunDriverTestWrapper::DoRConnTest1_20() +{ + INFO_PRINTF1(_L("*********************************************")); + INFO_PRINTF1(_L(" Test: DoRConnTest1_20 ")); + INFO_PRINTF1(_L("*********************************************")); + + StartConn(); + } + +void CTunDriverTestWrapper::DoRConnTest1_21() + { + INFO_PRINTF1(_L("*********************************************")); + INFO_PRINTF1(_L(" Test: DoRConnTest1_21 ")); + INFO_PRINTF1(_L("*********************************************")); + + StartConn(); + } + +void CTunDriverTestWrapper::DoRConnTest1_22() + { + INFO_PRINTF1(_L("*********************************************")); + INFO_PRINTF1(_L(" Test: DoRConnTest1_22 ")); + INFO_PRINTF1(_L("*********************************************")); + + StartConn(); + } + +void CTunDriverTestWrapper::DoRConnTest1_23() + { + + INFO_PRINTF1(_L("*********************************************")); + INFO_PRINTF1(_L(" Test: DoRConnTest1_23 ")); + INFO_PRINTF1(_L("*********************************************")); + + StartConn(); + } + + +void CTunDriverTestWrapper::DoRConnTest1_24() + { + INFO_PRINTF1(_L("*********************************************")); + INFO_PRINTF1(_L(" Test: DoRConnTest1_24 ")); + INFO_PRINTF1(_L("********************************************")); + + StartConn(); + + + + + + } + +void CTunDriverTestWrapper::DoRConnTest1_25() + { + INFO_PRINTF1(_L("*********************************************")); + INFO_PRINTF1(_L(" Test: DoRConnTest1_25 ")); + INFO_PRINTF1(_L("********************************************")); + + + StartConn(); + } + +void CTunDriverTestWrapper::DoRConnTest1_26() + { + INFO_PRINTF1(_L("*********************************************")); + INFO_PRINTF1(_L(" Test: DoRConnTest1_26 ")); + INFO_PRINTF1(_L("********************************************")); + + + StartConn(); + } + + +void CTunDriverTestWrapper::DoRConnTest1_27() + { + INFO_PRINTF1(_L("*********************************************")); + INFO_PRINTF1(_L(" Test: DoRConnTest1_27 ")); + INFO_PRINTF1(_L("********************************************")); + + StartConn(); + } + + +void CTunDriverTestWrapper::DoRConnTest1_28() + { + INFO_PRINTF1(_L("*********************************************")); + INFO_PRINTF1(_L(" Test: DoRConnTest1_28 ")); + INFO_PRINTF1(_L("********************************************")); + + StartConn(); + } + +void CTunDriverTestWrapper::DoRConnTest1_29() + { + INFO_PRINTF1(_L("*********************************************")); + INFO_PRINTF1(_L(" Test: DoRConnTest1_29 ")); + INFO_PRINTF1(_L("*********************************************")); + + StartConn(); + } + +void CTunDriverTestWrapper::DoRConnTest1_30() + { + INFO_PRINTF1(_L("*********************************************")); + INFO_PRINTF1(_L(" Test: DoRConnTest1_30 ")); + INFO_PRINTF1(_L("*********************************************")); + + StartConn(); + } + +void CTunDriverTestWrapper::DoRConnTest1_31() + { + INFO_PRINTF1(_L("*********************************************")); + INFO_PRINTF1(_L(" Test: DoRConnTest1_31 ")); + INFO_PRINTF1(_L("*********************************************")); + + StartConn(); + } + + +void CTunDriverTestWrapper::DoRConnTest1_32() + { + INFO_PRINTF1(_L("*********************************************")); + INFO_PRINTF1(_L(" Test: DoRConnTest1_32 ")); + INFO_PRINTF1(_L("*********************************************")); + + StartConn(); + } + +void CTunDriverTestWrapper::DoRConnTest1_33() + { + INFO_PRINTF1(_L("*********************************************")); + INFO_PRINTF1(_L(" Test: DoRConnTest1_33 ")); + INFO_PRINTF1(_L("*********************************************")); + + StartConn(); + } + + +void CTunDriverTestWrapper::StartConn() + { + if((iStatus = iSocketServ.Connect()) == KErrNone ) + INFO_PRINTF1(_L("Socket Server Opened.\n")); + else + { + ERR_PRINTF2(_L("Error Opening Socket Server: %d"), iStatus.Int()); + SetError(iStatus.Int()); + return; + } + + if((iStatus = iConnection.Open(iSocketServ)) == KErrNone ) + INFO_PRINTF1(_L("Connection opened. \n")); + else + { + ERR_PRINTF2(_L("Error Opening Connection: %d"), iStatus.Int()); + SetError(iStatus.Int()); + iSocketServ.Close(); + return; + } + + iCommDbPref.SetIapId(TUNDRIVER_IAP); // Virtual Interface + iCommDbPref.SetBearerSet(KCommDbBearerVirtual); + iCommDbPref.SetDialogPreference(ECommDbDialogPrefDoNotPrompt); + iConnection.Start(iCommDbPref, iStatus); + User::WaitForRequest(iStatus); + if(iStatus.Int()!=KErrNone) + { + ERR_PRINTF2(_L("Error starting connection: %d"), iStatus.Int()); + SetError(iStatus.Int()); + iSocketServ.Close(); + return; + } + INFO_PRINTF2(_L("Starting Connection %d.\n"), iStatus.Int()); + + iConnection.Stop(); + iSocketServ.Close(); + }