[AGENT++] Need help with certain design
Reetesh Ranjan
reeteshr at gmail.com
Wed Aug 18 10:08:00 CEST 2010
Frank,
I derived and implemented pure virtual functions of MibComplextEntry.
I constructed it with OID x.y.z.1.
SET Works!
I am able to get the flow into the derived commit_set_request (I don't
know which other function to use to handle SET once we derive a class
for MibComplexEntry). I did a SET for x.y.z.1.100 and x.y.z.1.101.
Both work fine (enter my derived function).
GETNEXT does not work!
What I need to do is to have a class that I construct for x.y.z.1
which should serve me getnext request for x.y.z.1.100 to x.y.z.1.<max
uint32>.
However, I am not able to get the flow for getnext into my class at all.
I am trying to construct the upperBound [max_key()] in different ways
and I get to a different issue with each of them:
upperBound = x.y.z.1.100. GETNEXT on x.y.z.1.100. I get this error on
client side: No more variables left in this MIB View (It is past the
end of the MIB tree)
upperBound = x.y.z.1.101. GETNEXT on x.y.z.1.100. I get a timeout on
client side, and my get_next_request() function never gets called.
upperBound = x.y.z.1.101.0. GETNEXT on x.y.z.1.100. Same as above
(timeout on client)
upperBound = x.y.z.1.100.0. GETNEXT on x.y.z.1.100. Same as above
(timeout on client)
upperBound = x.y.z.1. GETNEXT on x.y.z.1.100. Same as above (timeout on client).
I have a doubt / lack of understanding on how to implement the
max_key()/find_succ() function for this case, and I am suspecting the
issue to be there.
Could you please help me with this issue?
This is my derived class:
class SDCFsMibHandler : public MibComplexEntry
{
public:
// constructor
SDCFsMibHandler();
// destructor
virtual
~SDCFsMibHandler() { }
// Needed to implement pure virtual functions
virtual MibEntry * clone() { return NULL; }
virtual Oidx find_succ(const Oidx & a, Request * req=NULL) { return Oidx(); }
virtual void get_request(Request *, int) { /* no-op */ }
virtual int commit_set_request(Request*, int);
virtual int prepare_set_request(Request*, int&) { return SNMP_ERROR_SUCCESS; }
virtual int undo_set_request(Request*, int&) { return SNMP_ERROR_SUCCESS; }
virtual void cleanup_set_request(Request*, int&) { }
// get handler
virtual void
get_next_request(Request*, int);
virtual OidxPtr max_key(void) { return (&max); }
private:
Oidx max;
};
SDCFsMibHandler::SDCFsMibHandler()
: MibComplexEntry("1.3.6.1.4.1.108.1.200.1", READWRITE),
max("1.3.6.1.4.1.108.1.200.1.100.0")
{
}
void SDCFsMibHandler::get_next_request(Request * request, int ind)
{
// for now just print a message
}
int SDCFsMibHandler::commit_set_request(Request * request, int ind)
{
// for now just print a message and return 0
}
Thanks,
Reetesh
On Wed, Aug 18, 2010 at 2:32 AM, Frank Fock <fock at agentpp.com> wrote:
> Hi Reetesh,
>
> You can use MibComplexEntry for that.
>
> Best regards,
> Frank
>
> On 17.08.2010 22:17, Reetesh Ranjan wrote:
>> - I need to register for a subtree OID e.g. x.y.1 such that I can
>> receive and process SET and GETNEXT request for OIDs like x.y.1.100,
>> x.y.1.135 etc.
>> - I need to modify the OID in the GETNEXT response e.g. if GETNEXT
>> REQ had a VB for x.y.1.135, I want to change the VB in the GETNEXT REP
>> to x.y.1.136.
>>
>> I am not able to achieve above with MibLeaf and MibTable. I used
>> examples/search on forum emails; but can't seem to get the direct
>> answer. I don't want to go AgentX or any solution that involves
>> multiple processes. Could you please help me with this?
>>
>> I have done a working example earlier for SET and GET with a scalar
>> OID x.y.1 earlier, so that SET/GET with the OID x.y.1.0 work fine.
>> This was using a derivation of MibLeaf and standard loop in a thread
>> to listen and process SNMP requests following the agent++ examples to
>> do the same.
>>
>> Thanks,
>> Reetesh
>> _______________________________________________
>> AGENTPP mailing list
>> AGENTPP at agentpp.org
>> http://lists.agentpp.org/mailman/listinfo/agentpp
>
> --
> AGENT++
> http://www.agentpp.com
> http://www.snmp4j.com
> http://www.mibexplorer.com
> http://www.mibdesigner.com
>
> _______________________________________________
> AGENTPP mailing list
> AGENTPP at agentpp.org
> http://lists.agentpp.org/mailman/listinfo/agentpp
>
More information about the AGENTPP
mailing list