finding whether or not a row exists in a table

Mark Gardinier <[email protected]>
Newsgroups gmane.network.net-snmp.user
Organization Advanced Technologies, Incorporated
Message-ID <[email protected]>
I'm trying to find if a row exists in a table.
If it doesn't exist, I will create it. If it does exist, I need to
modify a field in it. The netsnmp examples I have followed show that
when a row is created, all the fields (columns) are filled in before
the add row call using netsnmp_set_row_column. However, my application
sets fields one at a time. For example, if I have a table T1 with
integer fields x,y,and z, my application will repeatedly call an agent
function "set(table,index,field,value)" for every field. This is the
code snippet I use:

row =
netsnmp_create_table_data_row();

netsnmp_table_row_add_index(row,
ASN_INTEGER,&index,sizeof(index));

netsnmp_set_row_column(row, field,
ASN_INTEGER,(char*)&value,sizeof(value));

// add the row to the table

pthread_mutex_lock(&snmp_objects_lock); // might
want to move this mutex to top of routine.

// table parameter indexes into object_char to get
table. Used to find the table to modify.

netsnmp_table_dataset_add_row(snmp_objects[atoi(object_char)].the_table,
row);

netsnmp_register_auto_data_table(snmp_objects[atoi(object_char)].the_table,NULL);

pthread_mutex_unlock(&snmp_objects_lock);

When the application calls this the first time, everything will work
fine. But, if a new field is being set for the same row (index), of
course it fails because the row already exists.

What I want to do is check if the row exists in the table. If so, I'll
just read it, modify it (set field value), and replace it. If it
doesn't exist, then I will add it. I tried to loop through the table
getting a row at a time using
netsnmp_table_data_set_get_first_row(the_table) and
netsnmp_table_data_set_get_next_row(the_table,row). But, in the row
returned I can't find the index for the life of me. OID_Index always
returns 1.

Any help or suggestions are greatly appreciated.

Thanks,

Mark

------------------------------------------------------------------------------
Don't let slow site performance ruin your business. Deploy New Relic APM
Deploy New Relic app performance management and know exactly
what is happening inside your Ruby, Python, PHP, Java, and .NET app
Try New Relic at no cost today and get our sweet Data Nerd shirt too!
http://p.sf.net/sfu/newrelic-dev2dev

_______________________________________________
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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.