Good morning!
I have one question regarding the spin lock concept.
In all examples i saw, the use of a spin lock object is only by scalar
objects.
I have a situation where I need to use this concept, but applied to a table.
In this situation, i would have a table column that is a spinlock
(testAndIncr object).
My first question is : Is this possible ?
I tried to implement this approach, but I'm having some problems with it. As
i said, i dont know if this is possible, so i may be trying to implement a
thing that isnt supported .
Am I doing anything wrong in my code? Thank you for your help.
switch (reqinfo->mode)
{
case MODE_SET_RESERVE1:
for (request=requests; request; request=request->next)
{
if (requests->processed != 0) continue;
table_info = netsnmp_extract_table_info(request);
switch (table_info->colnum)
{
case COLUMN_SPINLOCK:
/*if (!cache_entry)
{
netsnmp_set_request_error(reqinfo, request, SNMP_ERR_NOCREATION);
return SNMP_ERR_NOCREATION;
}*/
if ( request->requestvb->type !=
ASN_INTEGER ) {
netsnmp_set_request_error(reqinfo, request, SNMP_ERR_WRONGTYPE);
return SNMP_ERR_WRONGTYPE;
}
rowData =
netsnmp_extract_table_row_data(request);
data =
netsnmp_table_data_set_find_column(rowData,COLUMN_SPINLOCK);
if(data != NULL)
setspinLock = *((int *)
data->data.voidp);
else
setspinLock = 0;
if (*request->requestvb->val.integer
!= setspinLock)
{
netsnmp_set_request_error(reqinfo, requests,SNMP_ERR_WRONGVALUE);
}
}
}
break;
switch (reqinfo->mode)
{
case MODE_SET_RESERVE1:
for (request=requests; request; request=request->next)
{
if (requests->processed != 0) continue;
table_info = netsnmp_extract_table_info(request);
switch (table_info->colnum)
{
case COLUMN_SPINLOCK:
if ( request->requestvb->type !=
ASN_INTEGER ) {
netsnmp_set_request_error(reqinfo, request, SNMP_ERR_WRONGTYPE);
return SNMP_ERR_WRONGTYPE;
}
rowData =
netsnmp_extract_table_row_data(request);
data =
netsnmp_table_data_set_find_column(rowData,COLUMN_SPINLOCK);
if(data != NULL)
setspinLock = *((int *)
data->data.voidp);
else
setspinLock = 0;
if (*request->requestvb->val.integer
!= setspinLock)
{
netsnmp_set_request_error(reqinfo, requests,SNMP_ERR_WRONGVALUE);
}
}
}
break;
case MODE_SET_ACTION:
for (request=requests; request; request=request->next)
{
if (requests->processed != 0) continue;
table_info = netsnmp_extract_table_info(request);
switch (table_info->colnum)
{
case COLUMN_SPINLOCK:
rowData =
netsnmp_extract_table_row_data(request);
data =
netsnmp_table_data_set_find_column(rowData,COLUMN_SPINLOCK);
if(data != NULL)
data->data.voidp ++;
else
data->data.voidp = 0;
break;
}
}
break;
}
Robalo !!!
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
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