linklayercontrol/networkinterfacemgr/src/cnifagentbase.cpp
changeset 0 af10295192d8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/linklayercontrol/networkinterfacemgr/src/cnifagentbase.cpp	Tue Jan 26 15:23:49 2010 +0200
@@ -0,0 +1,407 @@
+// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+/**
+ @file
+*/
+
+#include "IF_DEF.H"
+#include "NI_STD.H"
+#include "Ni_Log.h"
+#include "NIFPRVAR.H"
+#include <in_sock.h>
+#include <es_prot.h>
+#include <agenterrors.h>
+#include "NIFConfigurationControl.h"
+#include <comms-infras/es_config.h>
+#include <es_panic.h>
+
+#ifdef _DEBUG
+#include <in_iface.h>
+#endif
+
+using namespace ESock;
+#include <comms-infras/ss_subconnprov.h>
+#include <ss_glob.h>
+#include <comms-infras/ss_protflow.h>
+#include <comms-infras/ss_subconnflow.h>
+
+#ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
+#include <networking/cfbearers.h>
+#endif //SYMBIAN_ADAPTIVE_TCP_WINDOW_RECEIVE
+
+
+// Security policies
+_LIT_SECURITY_POLICY_C1(NifAgentPolicyNetworkControl, ECapabilityNetworkControl);
+
+// Diagnostic string identifying this module when calling security policy checking methods
+
+const char * const NifAgentPolicyDiagnostic = "CNifAgentBase";
+
+/**
+Constructor
+*/
+EXPORT_C CNifAgentBase::CNifAgentBase()
+	{
+	}
+
+
+/**
+This version of the Control() function is now deprecated.
+Use the version of CNifAgentBase::Control() that takes four parameters
+*/
+EXPORT_C TInt CNifAgentBase::Control(TUint, TUint, TDes8&)
+	{
+	return KErrNotSupported;
+	}
+
+/**
+Control() with capability checking
+*/
+EXPORT_C TInt CNifAgentBase::Control(TUint aOptionLevel, TUint aOptionName, TDes8& aOption, const RProcess& aProcess)
+	{
+	TBool result( CheckControlPolicy(aOptionLevel, aOptionName, aProcess) );
+	
+	//if we got Permission (ETrue i.e. TRUE i.e. 1) then return call to Control(), else return KErrPermissionDenied
+	return ( result? Control(aOptionLevel, aOptionName, aOption) : KErrPermissionDenied );
+	}
+
+
+/**
+Read an integer
+@param aField   The field name
+@param aValue   Returned value
+@param aMessage For capability checking
+@return One of the system-wide error codes
+*/
+EXPORT_C TInt CNifAgentBase::ReadInt(const TDesC& aField, TUint32& aValue,const RMessagePtr2* aMessage)
+	{
+	return DoReadInt( aField, aValue, aMessage );
+	}
+
+
+/**
+Read an integer
+@param aField   The field name
+@param aValue   Returned value
+@return One of the system-wide error codes
+*/
+EXPORT_C TInt CNifAgentBase::ReadInt(const TDesC& aField, TUint32& aValue )
+	{
+	return ReadInt( aField, aValue, NULL );
+	}
+
+
+/**
+Write an integer
+@param aField   The field name
+@param aValue   The value
+@param aMessage For capability checking
+@return One of the system-wide error codes
+*/
+EXPORT_C TInt CNifAgentBase::WriteInt(const TDesC& aField, TUint32 aValue,const RMessagePtr2* aMessage)
+	{
+	return DoWriteInt( aField, aValue, aMessage );
+	}
+
+
+/**
+Write an integer
+@param aField   The field name
+@param aValue   The value
+@return One of the system-wide error codes
+*/
+EXPORT_C TInt CNifAgentBase::WriteInt(const TDesC& aField, TUint32 aValue )
+	{
+	return WriteInt( aField, aValue, NULL );
+	}
+
+
+/**
+Read a descriptor
+@param aField   The field name
+@param aValue   Returned value
+@param aMessage For capability checking
+@return One of the system-wide error codes
+*/
+EXPORT_C TInt CNifAgentBase::ReadDes(const TDesC& aField, TDes8& aValue,const RMessagePtr2* aMessage)
+	{
+	return DoReadDes( aField, aValue, aMessage );
+	}
+
+
+/**
+Read a descriptor
+@param aField   The field name
+@param aValue   Returned value
+@param aMessage For capability checking
+@return One of the system-wide error codes
+*/
+EXPORT_C TInt CNifAgentBase::ReadDes(const TDesC& aField, TDes8& aValue )
+	{
+	return ReadDes( aField, aValue, NULL );
+	}
+
+
+/**
+Write a descriptor
+@param aField   The field name
+@param aValue   value to write
+@param aMessage For capability checking
+@return One of the system-wide error codes
+*/
+EXPORT_C TInt CNifAgentBase::WriteDes(const TDesC& aField, const TDesC8& aValue,const RMessagePtr2* aMessage)
+	{
+	return DoWriteDes( aField, aValue, aMessage );
+	}
+
+
+/**
+Write a descriptor
+@param aField   The field name
+@param aValue   value to write
+@return One of the system-wide error codes
+*/
+EXPORT_C TInt CNifAgentBase::WriteDes(const TDesC& aField, const TDesC8& aValue )
+	{
+	return WriteDes( aField, aValue, NULL );
+	}
+
+
+/**
+Read a descriptor
+@param aField   The field name
+@param aValue   Returned value
+@param aMessage For capability checking
+@return One of the system-wide error codes
+*/
+EXPORT_C TInt CNifAgentBase::ReadDes(const TDesC& aField, TDes16& aValue,const RMessagePtr2* aMessage)
+	{
+	return DoReadDes( aField, aValue, aMessage );
+	}
+
+
+/**
+Read a descriptor
+@param aField   The field name
+@param aValue   Returned value
+@return One of the system-wide error codes
+*/
+EXPORT_C TInt CNifAgentBase::ReadDes(const TDesC& aField, TDes16& aValue )
+	{
+	return ReadDes( aField, aValue, NULL );
+	}
+
+
+/**
+Write a descriptor
+@param aField   The field name
+@param aValue   value to write
+@param aMessage For capability checking
+@return One of the system-wide error codes
+*/
+EXPORT_C TInt CNifAgentBase::WriteDes(const TDesC& aField, const TDesC16& aValue,const RMessagePtr2* aMessage)
+	{
+	return DoWriteDes( aField, aValue, aMessage );
+	}
+
+
+/**
+Write a descriptor
+@param aField   The field name
+@param aValue   value to write
+@return One of the system-wide error codes
+*/
+EXPORT_C TInt CNifAgentBase::WriteDes(const TDesC& aField, const TDesC16& aValue )
+	{
+	return WriteDes( aField, aValue, NULL );
+	}
+
+
+/**
+Read a boolean value
+@param aField Field name
+@param aValue Returned value
+@param aMessage For capability checking
+@return one of the system-wide error codes
+*/
+EXPORT_C TInt CNifAgentBase::ReadBool(const TDesC& aField, TBool& aValue,const RMessagePtr2* aMessage)
+	{
+	return DoReadBool( aField, aValue, aMessage );
+	}
+
+
+/**
+Read a boolean value
+@param aField Field name
+@param aValue Returned value
+@return one of the system-wide error codes
+*/
+EXPORT_C TInt CNifAgentBase::ReadBool(const TDesC& aField, TBool& aValue )
+	{
+	return ReadBool( aField, aValue, NULL );
+	}
+
+
+/**
+Write a boolean value
+@param aField Field name
+@param aValue Value to write
+@param aMessage for capability checking
+@return one of the system-wide error codes
+*/
+EXPORT_C TInt CNifAgentBase::WriteBool(const TDesC& aField, TBool aValue,const RMessagePtr2* aMessage)
+	{
+	return DoWriteBool( aField, aValue, aMessage );
+	}
+
+
+/**
+Write a boolean value
+@param aField Field name
+@param aValue Value to write
+@return one of the system-wide error codes
+*/
+EXPORT_C TInt CNifAgentBase::WriteBool(const TDesC& aField, TBool aValue )
+	{
+	return WriteBool( aField, aValue, NULL );
+	}
+
+
+/**
+Read a long descriptor value
+@param aField Field name
+@param aMessage For capability checking
+@return HBufC containing value
+*/
+EXPORT_C HBufC* CNifAgentBase::ReadLongDesLC(const TDesC& aField,const RMessagePtr2* aMessage)
+	{
+	return DoReadLongDesLC( aField, aMessage );
+	}
+
+
+/**
+Read a long descriptor value
+@param aField Field name
+@return HBufC containing value
+*/
+EXPORT_C HBufC* CNifAgentBase::ReadLongDesLC(const TDesC& aField )
+	{
+	return ReadLongDesLC( aField, NULL );
+	}
+
+
+/**
+Ensure that a client has the required capabilites to read a field
+@param aField  Field Name
+@param aMessage Contains client capabilites to validate
+@return One of the system-wide error codes
+*/
+EXPORT_C TInt CNifAgentBase::CheckReadCapability( const TDesC& aField, const RMessagePtr2* aMessage )
+	{
+	if( aMessage )
+		{
+		return DoCheckReadCapability( aField, aMessage );
+		}
+	else
+		{
+		return KErrNone;
+		}
+	}
+
+
+/**
+Ensure that a client has the required capabilites to write a field
+@param aField  Field Name
+@param aMessage Contains client capabilites to validate
+@return One of the system-wide error codes
+*/
+EXPORT_C TInt CNifAgentBase::CheckWriteCapability( const TDesC& aField, const RMessagePtr2* aMessage )
+	{
+	if( aMessage )
+		{
+		return DoCheckWriteCapability( aField, aMessage );
+		}
+	else
+		{
+		return KErrNone;
+		}
+	}
+
+
+/**
+Ensure that a client has the required capabilites to read a field
+@param aField  Field Name
+@param aMessage Contains client capabilites to validate
+@return One of the system-wide error codes
+*/
+EXPORT_C TInt CNifAgentBase::DoCheckReadCapability( const TDesC& /*aField*/, const RMessagePtr2* /*aMessage*/ )
+	{
+	return KErrNone;
+	}
+
+
+/**
+Ensure that a client has the required capabilites to write a field
+@param aField  Field Name
+@param aMessage Contains client capabilites to validate
+@return One of the system-wide error codes
+*/
+EXPORT_C TInt CNifAgentBase::DoCheckWriteCapability( const TDesC& /*aField*/, const RMessagePtr2* /*aMessage*/ )
+	{
+	return KErrNone;
+	}
+
+	
+/**
+Check that a client has the required capabilties
+@param aOptionLevel 
+@param aOptionName 
+@param aOption
+@param aMessage 
+@returns KErrNone, if the client has the required capabilites, otherwise one of the standard Symbian OS error codes
+*/
+TBool CNifAgentBase::CheckControlPolicy(TUint aLevel, TUint /*aOption*/, const RProcess& aProcess)
+	{
+	TBool result;
+	
+	switch (aLevel)
+		{
+	case KCOLAgent:
+		result = NifAgentPolicyNetworkControl.CheckPolicy(aProcess, NifAgentPolicyDiagnostic);
+		break;
+		
+	default:
+		result = EFalse;
+		break;
+		}
+	
+	return result;
+	}
+
+#ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
+/*
+Retrieve the default bearer information to the Agent CPR
+@return default bearer information to the Agent CPR.
+*/
+EXPORT_C TUint32 CNifAgentBase::GetBearerInfo() const
+	{
+	//Return the default value, if the agent
+	//has not overridden this function
+	return  KDefaultBearer;
+	}
+#endif //SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
+
+