Thanks.
Before seeing you answer, I was doing:
// Get index
instance = -1;
if(table_entry!=NULL) instance = table_entry->xxxx_Index;
// Validate instance
if(instance >= SNMP_CFG_NOTIFIED_NMS_MAX || instance < 0)
{
continue;
}
The problem is to avoid crashing the agent upon a set on wrong instance
(row).
In the case MODE_SET_ACTION: and case MODE_SET_RESERVE1: what should I do
when the instance is wrong?
if(instance >= SNMP_CFG_NOTIFIED_NMS_MAX || instance < 0)
{
continue;
}
OR
if(instance >= SNMP_CFG_NOTIFIED_NMS_MAX || instance < 0)
{
netsnmp_set_request_error(reqinfo, request,
SNMP_NOSUCHOBJECT);
return SNMP_ERR_NOERROR;
}
Thanks,
S
On Tue, Mar 20, 2012 at 5:43 AM, Dave Shield <[email protected]>wrote:
> On 16 March 2012 19:39, Simon Chamlian <[email protected]> wrote:
> > In the request handler function:
>
> > How can we get the instance of the request
> > (i.e., the row number of the table) ?
>
> The clean way:
>
> for (request=requests; request; request=request->next) {
> table_info = netsnmp_extract_table_info(request);
> /** table_info->colnum contains the column number requested */
> /** table_info->indexes contains a linked list of snmp variable
> bindings for the indexes of the table. Values in the list
> have been set corresponding to the indexes of the request */
> :
> }
>
>
> The dirty way (relies on the OID being valid and complete,
> and the table being indexed by a single integer)
>
> for (request=requests; request; request=request->next) {
> vb = request->requestvb;
> idx = vb->name[ vb->name_length -1 ];
> :
> }
>
>
> Dave
>
------------------------------------------------------------------------------
This SF email is sponsosred by:
Try Windows Azure free for 90 days Click Here
http://p.sf.net/sfu/sfd2d-msazure
_______________________________________________
Net-snmp-users mailing list
[email protected]
Please see the following page to unsubscribe or change other options:
https://lists.sourceforge.net/lists/listinfo/net-snmp-users