-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Tuesday 03 June 2003 14:15, mostafa ibrahim wrote: > ARJ:ip:port|"NUM"dialeddigits|........ normal > ARJ:ip:port|e164:"NUM"partynumber|..... current > is there any work around from the gatekeeper to solve this problem? > is there any suggested solution ? I've been playing with this Siemens product a year ago. As I remember it, you can change the numbering scheme on the RG2500. Something about the fields. Can't remember exactly. If you can't figure out how to change the above, I've attached a patch I used when connecting to a surpass switch. It rewrites e164 partynumber to dialeddigits. It's not a pretty patch but it worked againts a Siemens Surpass switch. - -- Regards, Tais M. Hansen ComX -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.2 (GNU/Linux) iD8DBQE+3JrI2TEAILET3McRAgB0AJ4vGblsRPapnmc2NsVe5uW3WmnlMgCeNxLm 9OLGdvCai3s784VIHwNZiic= =aP+I -----END PGP SIGNATURE-----
Index: GkClient.cxx =================================================================== RCS file: /cvsroot/openh323gk/openh323gk/GkClient.cxx,v retrieving revision 1.11.4.43 diff -u -4 -p -r1.11.4.43 GkClient.cxx --- GkClient.cxx 11 Mar 2003 01:57:29 -0000 1.11.4.43 +++ GkClient.cxx 3 Jun 2003 12:52:49 -0000 @@ -304,9 +304,9 @@ void GkClient::BuildFullRRQ(H225_Registr rrq.m_callSignalAddress.SetSize(1); rrq.m_callSignalAddress[0] = *m_callAddr; - rrq.m_terminalType.IncludeOptionalField(H225_EndpointType::e_gatekeeper); + //rrq.m_terminalType.IncludeOptionalField(H225_EndpointType::e_gatekeeper); PINDEX as, p; PString t(GkConfig()->GetString(EndpointSection, "Type", "gateway").ToLower()); if (t[0] == 't') { Index: ProxyChannel.cxx =================================================================== RCS file: /cvsroot/openh323gk/openh323gk/ProxyChannel.cxx,v retrieving revision 1.39.2.91 diff -u -4 -p -r1.39.2.91 ProxyChannel.cxx --- ProxyChannel.cxx 14 May 2003 02:27:28 -0000 1.39.2.91 +++ ProxyChannel.cxx 3 Jun 2003 12:52:49 -0000 @@ -867,8 +867,28 @@ bool CallSignalSocket::OnSetup(H225_Setu // TODO: check the Setup_UUIE by gkauth modules PString sourceString(Setup.HasOptionalField(H225_Setup_UUIE::e_sourceAddress) ? AsString(Setup.m_sourceAddress) : PString()); + if( sourceString.Left( 5 ) == "E164:" + && sourceString.Right( 12 ) == ":partyNumber" ) + { + PTRACE( 3, "CXNET\tSiemens Surpass partyNumber format detected; rewriting sourceString." ); + PString cxnet_srcStringReformed; + cxnet_srcStringReformed = sourceString.Mid( 5, 8 ) + ":dialedDigits"; + sourceString = cxnet_srcStringReformed; + PTRACE( 3, "CXNET\tsourceString: '" << sourceString << "'" ); + } + + if( destinationString.Left( 5 ) == "E164:" + && destinationString.Right( 12 ) == ":partyNumber" ) + { + PTRACE( 3, "CXNET\tSiemens Surpass partyNumber format detected; rewriting destinationString." ); + PString cxnet_dstStringReformed; + cxnet_dstStringReformed = destinationString.Mid( 5, 8 ) + ":dialedDigits"; + destinationString = cxnet_dstStringReformed; + PTRACE( 3, "CXNET\tdestinationString: '" << destinationString << "'" ); + } + // if I'm behind NAT and the call is from parent, always use H.245 routed bool h245Routed = RasThread->IsGKRoutedH245() || (fromParent && RasThread->GetGkClient()->IsNATed()); // workaround for bandwidth, as OpenH323 library :p CallRec *call = new CallRec(Setup.m_callIdentifier, Setup.m_conferenceID, destinationString, sourceString, 100000, h245Routed); Index: RasTbl.cxx =================================================================== RCS file: /cvsroot/openh323gk/openh323gk/RasTbl.cxx,v retrieving revision 1.50.2.56 diff -u -4 -p -r1.50.2.56 RasTbl.cxx --- RasTbl.cxx 21 Mar 2003 11:08:39 -0000 1.50.2.56 +++ RasTbl.cxx 3 Jun 2003 12:52:49 -0000 @@ -247,11 +247,46 @@ void EndpointRec::Update(const H225_RasM // due to strange bug of gcc, I have to pass pointer instead of reference bool EndpointRec::CompareAlias(const H225_ArrayOf_AliasAddress *a) const { for (PINDEX i = 0; i < a->GetSize(); i++) + { for (PINDEX j = 0; j < m_terminalAliases.GetSize(); j++) + { + PTRACE( 3, "CXNET\ta[i] = '" << (*a)[i] << "'" ); + PTRACE( 3, "CXNET\tm_terminalAliases[j] = '" << m_terminalAliases[j] << "'" ); if ((*a)[i] == m_terminalAliases[j]) + { + PTRACE( 3, "CXNET\tMatch found." ); return true; + } + else + { + PTRACE( 3, "CXNET\tNo match - Testing for Siemens Surpass partyNumber format." ); + PString cxnet_CalledAlias, cxnet_TerminalAlias; + cxnet_CalledAlias = AsString((*a)[i]); + cxnet_TerminalAlias = AsString(m_terminalAliases[j]); + PTRACE( 3, "CXNET\tcxnet_CalledAlias = '" << cxnet_CalledAlias << "'" ); + PTRACE( 3, "CXNET\tcxnet_TerminalAlias = '" << cxnet_TerminalAlias << "'" ); + + if( cxnet_CalledAlias.Left( 5 ) == "E164:" + && cxnet_CalledAlias.Right( 12 ) == ":partyNumber" ) + { + PTRACE( 3, "CXNET\tSiemens Surpass partyNumber format detected in cxnet_CalledAlias." ); + + PString cxnet_ReformedAlias; + cxnet_ReformedAlias = cxnet_CalledAlias.Mid( 5, 8 ) + ":dialedDigits"; + PTRACE( 3, "CXNET\tcxnet_ReformedAlias: '" << cxnet_ReformedAlias << "'" ); + + if( cxnet_ReformedAlias == cxnet_TerminalAlias ) + { + PTRACE( 3, "CXNET\tMatch found." ); + return true; + } + } + } + } + } + PTRACE( 3, "CXNET\tNo match." ); return false; } EndpointRec *EndpointRec::Unregister()