Thanks a lot for your explanation, now I can se the light :-)

Best Regards,

Jordan Janeiro
Telemídia - PUC-Rio

---------- Original Message -----------
From: Dave Shield <[EMAIL PROTECTED]>
To: Jordan Janeiro Lopes da Silva <[EMAIL PROTECTED]>
Cc: net-snmp-coders@lists.sourceforge.net
Sent: Tue, 18 Oct 2005 13:10:08 +0100
Subject: Re: Problems with tables in the same agent

> On Tue, 2005-10-18 at 08:30 -0300, Jordan Janeiro Lopes da Silva wrote:
> >  why the agent calls the get_{first,next} of the result table if the
> > command snmptable was explicity for the control table?
> 
> Remember that there's no such low-level SNMP request as "snmptable".
> Fundamentally, the only requests are GET and GETNEXT.  Remember too
> that the "snmptable" command doesn't know what row indexes are valid
> in the table.
>   So all it can do is issue a "GETNEXT" request on the table objects,
> to retrieve the first row of the table.
> 
> Now look at things from the agent's point of view - it's received a
> GETNEXT request for "the next value following this OID" (which
> happens to be one of the column objects).
>    Not "the next value in the same table" you'll notice - it is
> expected to return "the next value" (regardless of where this
> occurs).
> 
> So the agent starts with the OID it received, and calls the
> control table handler - as being the most likely source of a
> suitable value.  When that returns nothing, it moves on to the
> next registered handler (presumably the result table handler).
> If that returns nothing, it will move on to the *next* registered
> handler, and so on and so on - until it either gets a value it
> can use, or runs out of handler to ask ('endOfMibView').
> 
> Note that exactly the same thing happens at the end of a non-empty
> control table.  "snmptable" will receive what happens to be the last
> row of this table, but won't realise this.  So it will issue another
> GETNEXT request, to retrieve "the next row".
>    The agent will call the control table handler, which will return
> nothing (since there are no more rows left).  So the agent will
> again move on to the next registered handler - the results table.
> Assuming that there *are* now some results, this handler will return
> a suitable value, which will be passed back by the agent.
>    "snmptable" will receive this value, notice that it's not part of
> the control table, and hence know that it's finished.  So it can
> simply discard this value, display any remaining results, and exit.
> 
> But snmptable doesn't know when it should stop until it's gone
> too far.  The agent doesn't know that it should stop either - it
> just provides what it's asked for, the "next value".
> 
> Does that make sense?
> 
> Dave
------- End of Original Message -------



-------------------------------------------------------
This SF.Net email is sponsored by:
Power Architecture Resource Center: Free content, downloads, discussions,
and more. http://solutions.newsforge.com/ibmarch.tmpl
_______________________________________________
Net-snmp-coders mailing list
Net-snmp-coders@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/net-snmp-coders

Reply via email to