diff -r abbed5a4b42a -r 8d540f55e491 networksecurity/ipsec/ipsecpol/src/ipsecpolmanutil.cpp --- a/networksecurity/ipsec/ipsecpol/src/ipsecpolmanutil.cpp Tue Aug 31 16:45:15 2010 +0300 +++ b/networksecurity/ipsec/ipsecpol/src/ipsecpolmanutil.cpp Wed Sep 01 12:33:58 2010 +0100 @@ -265,6 +265,15 @@ // Inbound, protocol UDP, local_port 68 stringBuf.Append(_L8(" inbound protocol 17 local_port 68 = { }\n")); + if(iIPSecGANSupported) + { + // Outbound, protocol UDP, remote_port 67 + stringBuf.Append(_L8(" outbound protocol 17 remote_port 68 = { }\n")); + // Inbound, protocol UDP, local_port 68 + stringBuf.Append(_L8(" inbound protocol 17 local_port 67 = { }\n")); + } + + // Write the string to file err = TPolicyParser::BufferAppend(aPolBfr, stringBuf); return err; @@ -428,8 +437,29 @@ compWord |= 0x00400000; } - // Each selector has at least this bit set on - compWord |= 0x00000001; + //UMA support Req417-40027 + if(iIPSecGANSupported && policySelector->iSequenceNumber==0 && policySelector->iRemote.IsUnspecified() && policySelector->iRemoteMask.IsUnspecified()) + { + LOG(Log::Printf(_L("::Buildcomparision, building comparison words for any to any selector\n"))); + + //building lowest comparision word for any to any selector. Any to any selector should fall at the end of + //all selector list (except bypass selectors. If not then selector falling after this selector will have + //no significance. + compWord = 0x000000001; + policySelector->iCompWord = compWord; + continue; + } + + // Each selector has at least this bit set on. + if(iIPSecGANSupported) + { + //Change to accomodate any to any selector. + compWord |= 0x00000010; + } + else + { + compWord |= 0x00000001; + } // Store comparison word to the selector policySelector->iCompWord = compWord; @@ -590,9 +620,38 @@ } } + +// +// UMAExceptionTrafficSelector = {UMAException %d } +// This occurs only if the current policies are exception policy. +// The network ID is supplied in braces any matching scope traffic will be honoured. +/////////////////////////////////////////////////////////////////// // +TInt +CIPSecPolicyManagerHandler::AddExceptionSelectors() + { + LOG(Log::Printf(_L("Add Exception selectors\n"))); + TInt err(KErrNone); + if(iIPSecGANSupported) + { + TBuf8<128> stringBuf; + stringBuf.Format(_L8(" UMAExceptionTrafficSelector = {UMAException %d }\n"),iVPNNetId); + err = TPolicyParser::BufferAppend(iPolBfr, stringBuf); + return err; + } + else + { + LOG(Log::Printf(_L("UMA/GAN support is not enabled and CIPSecPolicyManagerHandler::AddExceptionSelectors not supported"))); + return KErrNotSupported; + } + } + + + +/////////////////////////////////////////////////////////////////// // This function adds the following selectors to the end of the // string format policy file: +// inbound = { }%d // inbound = { } // outbound = { } // @@ -606,10 +665,12 @@ { TBuf8<128> stringBuf; TInt err(KErrNone); + LOG(Log::Printf(_L("CIPSecPolicyManagerHandler::AddInboundOutboundSelectorPair()\n"))); // If drop mode, return immediately if (iBypassOrDropMode == KDropMode) { + LOG(Log::Printf(_L("CIPSecPolicyManagerHandler::AddInboundOutboundSelectorPair(), not adding selectors combined mode is drop\n"))); return err; }