--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testexecmgmt/ucc/Source/UUInterface/CSvcUuinterface.cpp Mon Mar 08 15:04:18 2010 +0800
@@ -0,0 +1,706 @@
+/*
+* Copyright (c) 2005-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:
+* This file was autogenerated by rpcgen, but should be modified by the developer.
+* Make sure you don't use the -component_mod flag in future or this file will be overwritten.
+* Wed Nov 05 16:06:20 2003
+* System Includes
+*
+*/
+
+
+
+
+#include <stdio.h>
+
+
+/****************************************************************************************
+ *
+ * Local Includes
+ *
+ ***************************************************************************************/
+#include "CSvcUuinterface.h"
+#include "uuinterface.h"
+#include "../ProcessLibrary/proclib.h"
+#include "../include/standard_unix.h"
+#include "../include/standard_service_manager.h"
+
+/****************************************************************************************
+ *
+ * File-scope variables
+ *
+ ***************************************************************************************/
+static CComponentManager<CSUuinterface> *iComponentManager;
+
+
+/****************************************************************************************
+ *
+ * Implementation
+ *
+ ***************************************************************************************/
+
+
+/****************************************************************************************
+ *
+ * PUBLIC: GetInstanceKeyFromArgs
+ *
+ ***************************************************************************************/
+int CSvcUuinterface::GetInstanceKeyFromArgs( int aMethod, void *aArgs )
+{
+ // Not implemented as we will never have more that one instance
+ assert( !"NOT IMPLEMENTED" );
+ return ERR_NONE;
+}
+
+
+/****************************************************************************************
+ *
+ * PUBLIC: SetError
+ *
+ ***************************************************************************************/
+int CSvcUuinterface::SetError( int aMethod, void *aArgs, int aError )
+{
+ TResult* result;
+ TComponentList *rv_component_list;
+ int rv = ERR_NONE;
+
+ // Check params
+ assert ( aArgs != NULL );
+
+ switch( aMethod ) {
+ case LIST_DEVICES:
+ SET_LIST_ERROR_CODE( TComponentList, rv_component_list );
+
+ case ST_SETDELAY:
+ case ST_SETDROPPERCENTAGE:
+ case ST_SETDUPLICATEPERCENTAGE:
+ case ST_SETBANDWIDTH:
+ case ST_SETDRD:
+ case ST_CLEARSETTINGS:
+ case ST_STOPSERVICE:
+ case ST_RESET:
+ SET_ERROR_CODE( TResult, iStandardResult, result );
+ break;
+
+ default:
+ rv = ERR_INVALID_METHOD;
+ break;
+ }
+
+ return rv;
+}
+
+
+/****************************************************************************************
+ *
+ * PUBLIC: GetError
+ *
+ ***************************************************************************************/
+int CSvcUuinterface::GetError( int aMethod, void *aArgs )
+{
+ // Not implemented as we will never have more that one instance
+ assert( !"NOT IMPLEMENTED" );
+ return ERR_NONE;
+}
+
+
+/****************************************************************************************
+ *
+ * PUBLIC: StartRPCService
+ *
+ ***************************************************************************************/
+int CSvcUuinterface::StartRPCService( CComponentManager<CSUuinterface> *aComponentManager, TStartupInfo *aArg )
+{
+ assert( iComponentManager == NULL );
+ iComponentManager = aComponentManager;
+ return ERR_NONE;
+}
+
+
+/****************************************************************************************
+ *
+ * PUBLIC: StopRPCService
+ *
+ ***************************************************************************************/
+int CSvcUuinterface::StopRPCService()
+{
+ iComponentManager = NULL;
+ return ERR_NONE;
+}
+
+
+/****************************************************************************************
+ *
+ * PUBLIC: st_setdelay
+ *
+ ***************************************************************************************/
+TResult CSvcUuinterface::st_setdelay( TConfigValue aArgs )
+{
+ TResult rv;
+ int ret;
+
+ char commandLine[MAX_COMMANDLINE];
+ char finalSrc[TOTAL_MAX_ADDRESS_LEN];
+ char finalDst[TOTAL_MAX_ADDRESS_LEN];
+
+ // check the values in the config values structure
+ ret = CheckConfigValue( aArgs, finalSrc, finalDst );
+ if ( ret == ERR_INVALIDARG )
+ {
+ memset( &rv, 0, sizeof(rv) );
+ rv.iStandardResult = ERR_INVALIDARG;
+ return rv;
+ }
+
+ // construct the command line
+ snprintf( commandLine, MAX_COMMANDLINE, "./config_nistnet_add.pl -u -a %s %s --delay %d.%d %d.%d/%d.%d",
+ finalSrc,
+ finalDst,
+ aArgs.iValueIntegerPart,
+ aArgs.iValueFractionPart,
+ aArgs.iSigmaIntegerPart,
+ aArgs.iSigmaFractionPart,
+ aArgs.iCorrelationIntegerPart,
+ aArgs.iCorrelationFractionPart );
+
+ // execute the command and return the result
+ ret = execute(commandLine, &rv);
+ assert ( (ret == ERR_FAILEDTOEXECUTECOMMAND) || (ret == ERR_NONE) );
+
+ return rv;
+}
+
+
+/****************************************************************************************
+ *
+ * PUBLIC: st_setdroppercentage
+ *
+ ***************************************************************************************/
+TResult CSvcUuinterface::st_setdroppercentage( TConfigValue aArgs )
+{
+ TResult rv;
+ int ret;
+
+ char commandLine [MAX_COMMANDLINE];
+ char finalSrc[TOTAL_MAX_ADDRESS_LEN];
+ char finalDst[TOTAL_MAX_ADDRESS_LEN];
+
+ // check the values in the config values structure
+ ret = CheckConfigValue( aArgs, finalSrc, finalDst );
+ if ( ret == ERR_INVALIDARG )
+ {
+ memset( &rv, 0, sizeof(rv) );
+ rv.iStandardResult = ERR_INVALIDARG;
+ return rv;
+ }
+
+ ret = CheckPercentage( aArgs.iValueIntegerPart );
+ if ( ret == ERR_INVALIDARG )
+ {
+ memset( &rv, 0, sizeof(rv) );
+ rv.iStandardResult = ERR_INVALIDARG;
+ return rv;
+ }
+
+ // construct the command line
+ snprintf( commandLine, MAX_COMMANDLINE, "./config_nistnet_add.pl -u -a %s %s --drop %d.%d/%d.%d",
+ finalSrc,
+ finalDst,
+ aArgs.iValueIntegerPart,
+ aArgs.iValueFractionPart,
+ aArgs.iCorrelationIntegerPart,
+ aArgs.iCorrelationFractionPart );
+
+ // execute the command and return the result
+ ret = execute(commandLine, &rv);
+ assert ( (ret == ERR_FAILEDTOEXECUTECOMMAND) || (ret == ERR_NONE) );
+
+ return rv;
+}
+
+
+/****************************************************************************************
+ *
+ * PUBLIC: st_setduplicatepercentage
+ *
+ ***************************************************************************************/
+TResult CSvcUuinterface::st_setduplicatepercentage( TConfigValue aArgs )
+{
+ TResult rv;
+ int ret;
+
+ char commandLine [MAX_COMMANDLINE];
+ char finalSrc[TOTAL_MAX_ADDRESS_LEN];
+ char finalDst[TOTAL_MAX_ADDRESS_LEN];
+
+ // check the values in the config values structure
+ ret = CheckConfigValue( aArgs, finalSrc, finalDst );
+ if ( ret == ERR_INVALIDARG )
+ {
+ memset( &rv, 0, sizeof(rv) );
+ rv.iStandardResult = ERR_INVALIDARG;
+ return rv;
+ }
+
+ ret = CheckPercentage( aArgs.iValueIntegerPart );
+ if ( ret == ERR_INVALIDARG )
+ {
+ memset( &rv, 0, sizeof(rv) );
+ rv.iStandardResult = ERR_INVALIDARG;
+ return rv;
+ }
+
+ // construct the command line
+ snprintf( commandLine, MAX_COMMANDLINE, "./config_nistnet_add.pl -u -a %s %s --dup %d.%d/%d.%d",
+ finalSrc,
+ finalDst,
+ aArgs.iValueIntegerPart,
+ aArgs.iValueFractionPart,
+ aArgs.iCorrelationIntegerPart,
+ aArgs.iCorrelationFractionPart );
+
+ // execute the command and return the result
+ ret = execute(commandLine, &rv);
+ assert ( (ret == ERR_FAILEDTOEXECUTECOMMAND) || (ret == ERR_NONE) );
+
+ return rv;
+}
+
+
+/****************************************************************************************
+ *
+ * PUBLIC: st_setbandwidth
+ *
+ ***************************************************************************************/
+TResult CSvcUuinterface::st_setbandwidth( TConfigValue aArgs )
+{
+ TResult rv;
+ int ret;
+
+ char commandLine [MAX_COMMANDLINE];
+ char finalSrc[TOTAL_MAX_ADDRESS_LEN];
+ char finalDst[TOTAL_MAX_ADDRESS_LEN];
+
+ // check the values in the config values structure
+ ret = CheckConfigValue( aArgs, finalSrc, finalDst );
+ if ( ret == ERR_INVALIDARG )
+ {
+ memset( &rv, 0, sizeof(rv) );
+ rv.iStandardResult = ERR_INVALIDARG;
+ return rv;
+ }
+
+ // construct the command line
+ snprintf( commandLine, MAX_COMMANDLINE, "./config_nistnet_add.pl -u -a %s %s --bandwidth %d.%d",
+ finalSrc,
+ finalDst,
+ aArgs.iValueIntegerPart,
+ aArgs.iValueFractionPart );
+
+ // execute the command and return the result
+ ret = execute(commandLine, &rv);
+ assert ( (ret == ERR_FAILEDTOEXECUTECOMMAND) || (ret == ERR_NONE) );
+
+ return rv;
+}
+
+
+/**************************************************************************************** *
+ * PUBLIC: st_setdrd
+ *
+ ***************************************************************************************/
+TResult CSvcUuinterface::st_setdrd( TConfigValue aArgs )
+{
+ TResult rv;
+ int ret;
+
+ char commandLine [MAX_COMMANDLINE];
+ char finalSrc[TOTAL_MAX_ADDRESS_LEN];
+ char finalDst[TOTAL_MAX_ADDRESS_LEN];
+
+ // check the values in the config values structure
+ ret = CheckConfigValue( aArgs, finalSrc, finalDst );
+ if ( ret == ERR_INVALIDARG )
+ {
+ memset( &rv, 0, sizeof(rv) );
+ rv.iStandardResult = ERR_INVALIDARG;
+ return rv;
+ }
+
+ ret = CheckDRDs( aArgs.iValueIntegerPart, aArgs.iValueFractionPart,
+ aArgs.iMaximumValueIntegerPart, aArgs.iMaximumValueFractionPart,
+ aArgs.iCongestionIntegerPart, aArgs.iCongestionFractionPart );
+
+ if ( ret == ERR_INVALIDARG )
+ {
+ memset( &rv, 0, sizeof(rv) );
+ rv.iStandardResult = ERR_INVALIDARG;
+ return rv;
+ }
+
+ // construct the command line
+ snprintf( commandLine, MAX_COMMANDLINE, "./config_nistnet_add.pl -u -a %s %s --drd %d.%d %d.%d %d.%d",
+ finalSrc,
+ finalDst,
+ aArgs.iValueIntegerPart,
+ aArgs.iValueFractionPart,
+ aArgs.iMaximumValueIntegerPart,
+ aArgs.iMaximumValueFractionPart,
+ aArgs.iCongestionIntegerPart,
+ aArgs.iCongestionFractionPart );
+
+ // execute the command and return the result
+ ret = execute(commandLine, &rv);
+ assert ( (ret == ERR_FAILEDTOEXECUTECOMMAND) || (ret == ERR_NONE) );
+
+ return rv;
+}
+
+/****************************************************************************************
+ *
+ * PUBLIC: st_clearsettings
+ *
+ ***************************************************************************************/
+TResult CSvcUuinterface::st_clearsettings( TConfigValue aArgs )
+{
+ TResult rv;
+ int ret;
+
+ char commandLine [MAX_COMMANDLINE];
+ char finalSrc[TOTAL_MAX_ADDRESS_LEN];
+ char finalDst[TOTAL_MAX_ADDRESS_LEN];
+
+ // check the values in the config values structure
+ ret = CheckConfigValue( aArgs, finalSrc, finalDst );
+ if ( ret == ERR_INVALIDARG )
+ {
+ memset( &rv, 0, sizeof(rv) );
+ rv.iStandardResult = ERR_INVALIDARG;
+ return rv;
+ }
+
+ // construct the command line
+ snprintf( commandLine, MAX_COMMANDLINE, "./config_nistnet_add.pl -r %s %s",
+ finalSrc,
+ finalDst );
+
+ // execute the command and return the result
+ ret = execute(commandLine, &rv);
+ assert ( (ret == ERR_FAILEDTOEXECUTECOMMAND) || (ret == ERR_NONE) );
+
+ return rv;
+}
+
+
+/****************************************************************************************
+ *
+ * PUBLIC: st_stopservice
+ *
+ ***************************************************************************************/
+TResult CSvcUuinterface::st_stopservice( void )
+{
+ TResult rv;
+ int ret;
+ char commandLine [MAX_COMMANDLINE];
+
+ // construct the command line
+ snprintf( commandLine, MAX_COMMANDLINE, "./config_nistnet_add.pl -d" );
+
+ // execute the command and return the result
+ ret = execute(commandLine, &rv);
+ assert ( (ret == ERR_FAILEDTOEXECUTECOMMAND) || (ret == ERR_NONE) );
+
+ return rv;
+}
+
+
+/****************************************************************************************
+ *
+ * PUBLIC: st_reset
+ *
+ ***************************************************************************************/
+TResult CSvcUuinterface::st_reset( void )
+{
+ TResult rv;
+ int ret;
+ char commandLine [MAX_COMMANDLINE];
+
+ // construct the command line
+ snprintf( commandLine, MAX_COMMANDLINE, "./config_nistnet_reset.pl" );
+
+ // execute the command and return the result
+ ret = execute(commandLine, &rv);
+ assert ( (ret == ERR_FAILEDTOEXECUTECOMMAND) || (ret == ERR_NONE) );
+
+ return rv;
+}
+
+
+/****************************************************************************************
+ *
+ * PRIVATE: Executes the given command line
+ *
+ ***************************************************************************************/
+int CSvcUuinterface::execute(const char* aCommandLine, TResult* rv)
+{
+ int errcode;
+ CAProcess process;
+ TCAProcessError perr;
+ TProcessExitReason preason;
+
+ // Check params
+ assert ( aCommandLine != NULL );
+ assert ( rv != NULL );
+
+ // init the rv
+ memset( rv, 0, sizeof(*rv) );
+ rv->iStandardResult = ERR_NONE;
+
+ // execute the process - return any errors
+ perr = process.Execute( aCommandLine, &errcode );
+ if( perr != CAE_NONE ) {
+ rv->iStandardResult = ERR_PROCESSEXECUTEFAILED;
+ rv->iExtendedCode = (int)perr;
+ rv->iSystemError = errcode;
+ }
+
+ // if there was an error then return now
+ if( rv->iStandardResult != ERR_NONE ) {
+ return ERR_FAILEDTOEXECUTECOMMAND ;
+ }
+
+ // save the status, exitreason, etc
+ perr = process.GetExitReason( &preason );
+ assert( perr == CAE_NONE );
+ rv->iExtendedCode = (int)preason;
+
+ perr = process.GetExitCode( &errcode );
+ assert( perr == CAE_NONE );
+ rv->iSystemError = errcode;
+
+ return ERR_NONE;
+}
+
+/*******************************************************************************
+ *
+ * INTERNAL FUNCTION: CheckConfigVals
+ *
+ ******************************************************************************/
+int CSvcUuinterface::CheckConfigValue( TConfigValue aConfigValue, char* afinalSrc, char* afinalDst)
+{
+ int err;
+
+ assert ( afinalSrc != NULL );
+ assert ( afinalDst != NULL );
+
+ // construct valid NISTNET source/destination strings from the passed information
+ err = GetSrcDstStrings( aConfigValue.iSourceAddress, aConfigValue.iDestinationAddress,
+ aConfigValue.iProtocol,
+ aConfigValue.iSrcPort, aConfigValue.iDstPort,
+ afinalSrc, afinalDst );
+ if( err != ERR_NONE) {
+ return ERR_INVALIDARG;
+ }
+
+ // do semantic checking of the values
+ err = CheckCorrelation( aConfigValue.iCorrelationIntegerPart, aConfigValue.iCorrelationFractionPart );
+ if( err != ERR_NONE ) {
+ return ERR_INVALIDARG;
+ }
+
+ err = CheckPositive( aConfigValue.iSigmaIntegerPart, aConfigValue.iSigmaFractionPart );
+ if( err != ERR_NONE ) {
+ return ERR_INVALIDARG;
+ }
+
+ err = CheckPositive( aConfigValue.iValueIntegerPart, aConfigValue.iValueFractionPart );
+ if( err != ERR_NONE ) {
+ return ERR_INVALIDARG;
+ }
+
+ err = CheckPositive( aConfigValue.iMaximumValueIntegerPart, aConfigValue.iMaximumValueFractionPart );
+ if( err != ERR_NONE ) {
+ return ERR_INVALIDARG;
+ }
+
+ err = CheckPositive( aConfigValue.iCongestionIntegerPart, aConfigValue.iCongestionFractionPart );
+ if( err != ERR_NONE ) {
+ return ERR_INVALIDARG;
+ }
+
+ return ERR_NONE;
+}
+
+/*******************************************************************************
+ *
+ * INTERNAL FUNCTION: CheckPorts
+ *
+ ******************************************************************************/
+int CSvcUuinterface::CheckPorts( int aSrcPort, int aDestPort )
+{
+
+ if( !(( aSrcPort >= MIN_PORT_VAL ) && ( aSrcPort <= MAX_PORT_VAL )) ) {
+ return ERR_INVALIDARG;
+ }
+
+ if( !(( aDestPort >= MIN_PORT_VAL ) && ( aDestPort <= MAX_PORT_VAL )) ) {
+ return ERR_INVALIDARG;
+ }
+
+ return ERR_NONE;
+}
+
+/*******************************************************************************
+ *
+ * INTERNAL FUNCTION: CheckProts
+ *
+ ******************************************************************************/
+int CSvcUuinterface::CheckProt( int aProtocol )
+{
+ if ( aProtocol == X_UDP )
+ return ERR_NONE;
+
+ if ( aProtocol == X_TCP )
+ return ERR_NONE;
+
+ return ERR_INVALIDARG;
+}
+
+
+/*******************************************************************************
+ *
+ * INTERNAL FUNCTION: CheckPositive
+ *
+ ******************************************************************************/
+int CSvcUuinterface::CheckPositive( int aIntegerPart, int aFractionPart )
+{
+ if( aIntegerPart < 0 ) {
+ return ERR_INVALIDARG;
+ }
+ if( aFractionPart < 0 ) {
+ return ERR_INVALIDARG;
+ }
+ return ERR_NONE;
+}
+
+/*******************************************************************************
+ *
+ * INTERNAL FUNCTION: CheckCorrelation
+ *
+ ******************************************************************************/
+int CSvcUuinterface::CheckCorrelation( int aIntegerPart, int aFractionPart )
+{
+ if( (aIntegerPart > -1) && (aIntegerPart < 1) ) {
+ return ERR_NONE;
+ }
+ if( (aIntegerPart == -1) && (aFractionPart == 0) ) {
+ return ERR_NONE;
+ }
+ if( (aIntegerPart == 1) && (aFractionPart == 0) ) {
+ return ERR_NONE;
+ }
+ return ERR_INVALIDARG;
+}
+
+/*******************************************************************************
+ *
+ * INTERNAL FUNCTION: CheckDRDs
+ *
+ ******************************************************************************/
+int CSvcUuinterface::CheckDRDs( const int aDRDMinInt, const int aDRDMinFrac,
+ const int aDRDMaxInt, const int aDRDMaxFrac,
+ const int aDRDCongestInt, const int aDRDCongestFrac )
+{
+ //Condition for drd vals is 0<=drdmin (<= drdcongest) <=drdmax
+ if (!(aDRDMinInt>=0 && aDRDMinFrac>=0 && aDRDMaxInt >=0 && aDRDMaxFrac>=0 )) {
+ return ERR_INVALIDARG;
+ }
+ if ( aDRDMinInt > aDRDMaxInt ) {
+ return ERR_INVALIDARG;
+ }
+ if (aDRDCongestInt >= 0 && aDRDCongestFrac >=0) {
+ if ( !( (aDRDMinInt < aDRDCongestInt) && (aDRDMaxInt > aDRDCongestInt) ) ) {
+ return ERR_INVALIDARG;
+ }
+ } else {
+ return ERR_INVALIDARG;
+ }
+ return ERR_NONE;
+}
+
+/*******************************************************************************
+ *
+ * INTERNAL FUNCTION: CheckPercentage
+ *
+ ******************************************************************************/
+int CSvcUuinterface::CheckPercentage( const int aPercentage )
+{
+ if (aPercentage >= 0 && aPercentage < 100)
+ return ERR_NONE;
+ return ERR_INVALIDARG;
+}
+
+/*******************************************************************************
+ *
+ * GetSrcDstStrings
+ *
+ ******************************************************************************/
+int CSvcUuinterface::GetSrcDstStrings( char* aSrc, char* aDst,
+ int aProtocol,
+ int aSrcPort, int aDstPort,
+ char* finalSrc, char* finalDst )
+{
+ int err, len;
+
+ // validate params
+ assert(aSrc!=NULL);
+ assert(aDst!=NULL);
+ assert(finalSrc!=NULL);
+ assert(finalDst!=NULL);
+
+ // Validate the ports
+ err = CheckPorts( aSrcPort,aDstPort );
+ if( err != ERR_NONE ) {
+ return ERR_INVALIDARG;
+ }
+
+ // Validate the prots
+ err = CheckProt( aProtocol );
+ if( err != ERR_NONE ) {
+ return ERR_INVALIDARG;
+ }
+
+ // Formulate a complete source string <ip-address> + ':' + <port> + '.' + <protocol>
+ len = strlen(aSrc) + 1 + 1 + 1 + 1 + 1;
+ assert( len < TOTAL_MAX_ADDRESS_LEN );
+ snprintf( finalSrc, TOTAL_MAX_ADDRESS_LEN, "%s:%d.%d", aSrc, aSrcPort, aProtocol );
+
+ // Formulate a complete dest string <ip-address> + ':' + <port> + '.' + <protocol>
+ len = strlen(aDst) + 1 + 1 + 1 + 1 + 1;
+ assert( len < TOTAL_MAX_ADDRESS_LEN );
+ snprintf( finalDst, TOTAL_MAX_ADDRESS_LEN, "%s:%d.%d", aDst, aDstPort, aProtocol );
+
+ // done
+ return ERR_NONE;
+}
+
+
+
+
+
+
+
+
+
+