Re[2]: Neighboring question[SOLVED-bugfix]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Unfortunately I don't have access to ITU specs so I can't check what
is the suggested policy for hopCount.
Is hopCount a used field  in LRQs? In my example GK1 was also a GnuGk
gatekeeper. What do I have to set up for it to include hopCount field
in LRQ requests? [ForwardHopCount=2] Why it is not sent always?
Do somebody know that other gatekeepers (like Cisco) fill/set this
field in LRQs or not?
If it is not strictly defined [in standard] we could run into some
pain situation, when  the sending gatekeeper does not have hopCount
field and it's not possible set it up.
(I found hopcount setting in Cisco gatekeeper:
"Examples

The following example shows a maximum of 10 hops through which an address resolution can be forwarded.

Router(config)# call-router h323-annexg be20
Router(config-annexg)# hopcount 10"
Should it  be this the right setting?)

Thanks in advance,
        Thomas


Saturday, March 20, 2004, 4:54:33 PM, Zygmuntowicz wrote:
ZM> I think if the hopCount field is missing, the LRQ should not be forwarded,
ZM> so the original code is working well in this case. Any other opinions?

ZM> ----- Original Message ----- 
ZM> From: "Thomas" <thomasj@xxxxxxxxx>
ZM> Sent: Saturday, March 20, 2004 1:21 AM


>> The bug description was sent to the users list, however after looking
>> for the source codes I found that this is not a configuration issue
>> but a bug in code (most probably).
>> 
>> Short description:
>> The ForwardHopCount option was not used in routing decision.
>> 
>> Longer description:
>> 
>> bool NeighborPolicy::OnRequest(LocationRequest & lrq_obj)
>> {
>>         RasMsg *ras = lrq_obj.GetWrapper();
>>         List::iterator iter = find_if(m_neighbors.begin(),
>> m_neighbors.end(), bind2nd(mem_fun(&Neighbor::IsAcceptable), ras));
>>         Neighbor *requester = (iter != m_neighbors.end()) ? *iter : 0;
>>         int hopCount = 0;
>>         if (requester)
>>                 if (requester->ForwardLRQ() < 0)
>>                         return false;
>>                 else if (requester->ForwardLRQ() > 0)
>>                         hopCount = 1;
>> 
>>         H225_LocationRequest & lrq = (*ras)->m_recvRAS;
>>         if
>> (lrq.HasOptionalField(H225_LocationRequest::e_hopCount)) {
>>                 hopCount = lrq.m_hopCount - 1;
>>                 if (hopCount)
>>                         lrq.m_hopCount = hopCount;
>>         }
>>         if (!hopCount)
>>                 return false;
>> 
>> If I set ForwardLRQ=always, I had a  good workaround. The default
>> ForwardLRQ's values is depends, which is not handled in previouse
>> code. So hopCount=0.
>> The LRQ request had no hopCount field, so the hopCount variable
>> remained 0, thus the OnRequest function returned with false.
>> 
>> Here is a simple bugfix (I'm not sure if it is 100% correct) agains
>> anon. CVS (2_2):
>>  cvs diff -u Neighbor.cxx
>> Index: Neighbor.cxx
>> ===================================================================
>> RCS file: /cvsroot/openh323gk/openh323gk/Neighbor.cxx,v
>> retrieving revision 1.19
>> diff -u -r1.19 Neighbor.cxx
>> --- Neighbor.cxx        9 Mar 2004 11:36:42 -0000       1.19
>> +++ Neighbor.cxx        19 Mar 2004 23:57:54 -0000
>> @@ -853,6 +853,11 @@
>>                         return false;
>>                 else if (requester->ForwardLRQ() > 0)
>>                         hopCount = 1;
>> +               else {
>> +                       hopCount =
>> requester->GetDefaultHopCount() - 1;
>> +                       if (hopCount < 0)
>> +                               hopCount = 0;
>> +               }
>> 
>>         H225_LocationRequest & lrq = (*ras)->m_recvRAS;
>>         if
>> (lrq.HasOptionalField(H225_LocationRequest::e_hopCount)) {
>> 
>> Kind regards,
>>         Thomas
>> 
>> Friday, March 19, 2004, 8:57:25 PM, Thomas wrote:
>> T> Hello,
>> 
>> T> I have 3 GKs interconnected theirselves with neighboring.
>> T> GK1-GK2-GK3
>> T> I would like to forward LRQs on GK2 coming from GK1 to GK3. I set up
>> T> routing but somehow it doesn't  work.
>> T> 2004/03/19 20:17:27.289 5                job.cxx(186)   JOB    
>> T> Starting Job LRQ at Worker thread 9223
>> T> 2004/03/19 20:17:27.289 1             RasSrv.cxx(306)   RAS  LRQ Received
>> T> 2004/03/19 20:17:27.289 2            Toolkit.cxx(291)
>> T> RewritePString: 111111 to 1212#1111
>> T> 2004/03/19 20:17:27.289 4               gkauth.h(113)   GkAuth  default check ok
>> T> 2004/03/19 20:17:27.289 5              Routing.h(117)   ROUTING
>> T> Checking policy Internal for the request LRQ 59
>> T> 2004/03/19 20:17:27.289 5              Routing.h(117)   ROUTING
>> T> Checking policy Neighbor for the request LRQ 59
>> T> 2004/03/19 20:17:27.289 2             RasSrv.cxx(351)
>> T> LRJ|<gk1ip>|1212#111:dialedDigits|<gk1id>|requestDenied
>> 
>> T> Call from an endpoint registered under GK2 goes normally to GK3
>> T> through LRQ, so I don't think it's the problem. Also, I can call from
>> T> an endpoint registered to GK1 an endpoint registered under GK2.
>> 
>> T> Configuration on GK2:
>> T> [RasSrv::LRQFeatures]
>> T> NeighborTimeout=2
>> T> IncludeDestinationInfoInLCF=1
>> T> CiscoGKCompatible=1
>> T> ForwardHopCount=2
>> T> AcceptForwardedLRQ=1
>> T> ForwardResponse=1
>> 
>> T> [Neighbor::GK3]
>> T> Host=<gk3ip>
>> T> Dynamic=0
>> T> SendPrefixes=1212#
>> T> AcceptForwardedLRQ=1
>> 
>> T> [Neighbor::GK1]
>> T> Host=<gk1ip>
>> T> Dynamic=0
>> T> AcceptPrefixes=1212#
>> T> AcceptForwardedLRQ=1
>> T> ForwardHopCount=2
>> 
>> T> [RoutingPolicy]
>> T> Default=internal,neighbor,parent
>> 
>> T> Thanks in advance,
>> T>         Thomas




-------------------------------------------------------
This SF.Net email is sponsored by: IBM Linux Tutorials
Free Linux tutorial presented by Daniel Robbins, President and CEO of
GenToo technologies. Learn everything from fundamentals to system
administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click
_______________________________________________
List: Openh323gk-users@xxxxxxxxxxxxxxxxxxxxx
Archive: http://sourceforge.net/mailarchive/forum.php?forum_id=8549
Homepage: http://www.gnugk.org/

[Index of Archives]     [SIP]     [Open H.323]     [Gnu Gatekeeper]     [Asterisk PBX]     [ISDN Cause Codes]     [Yosemite News]

  Powered by Linux