Repeated SET requests failing

"Ward Witt" <[email protected]>
Newsgroups gmane.network.net-snmp.user
Message-ID <C914E193B22E9F4CB8186AEC29E8C9C07A296B@mail-server.filmworkers.local>
Oops, I mistakenly posted this on the coders list the other day, trying the proper list now.


I'm working on a Mac OSX program that controls a video processing card. After opening a session reading from the card works flawlessly, and the very first set command I send always works, but subsequent set commands will work or fail depending on which ones I send.
One command that sets aspect ratio (an integer 1 through 7) works perfectly, yet another that turns on or off a text overlay will only work once.

I've enabled the snmp debug messages with a ~/.snmp.conf entry and can see that the working packets are 50 bytes long while that ones that fail are only 30 bytes.

I've tried using net-snmp 5.4 and get the same behavior as Tiger's default  5.2.1

I'm currently opening a session and just chattering away, do I maybe need to close and reopen with each set request?

Objective-C code:

-(id) initWithHost:(NSString*) host
				 community:(NSString*) community
{
	if (nil == host || nil == community) return nil;
	self = [super init];
	if (nil == self) return nil;
	
	init_snmp("SNMP-Test-Cocoa");
	struct snmp_session s;
	snmp_sess_init(&s);
	s.version = SNMP_VERSION_2c;
	s.community = (u_char*)strdup([community UTF8String]);
	s.community_len = strlen((char*)s.community);
	s.peername = strdup([host UTF8String]);
	session = snmp_open(&s);
	if (NULL == session) {
		[self release];
		return nil;
	}
	return self;
}


-(void) setOidIntValue:(NSString *)objectIdString value:(int)intVal
{
	if (NULL == session) exit;
	size_t length = MAX_OID_LEN;
	oid objectid[MAX_OID_LEN];
	read_objid([objectIdString UTF8String], objectid, &length);
	
	struct snmp_pdu *pdu = snmp_pdu_create(SNMP_MSG_SET);
	char value = intVal + 0x30;
	snmp_add_var(pdu, objectid, length, 'i', &intVal);
	struct snmp_pdu *response = NULL;

	int status = snmp_synch_response(session, pdu, &response);
    if (status == STAT_SUCCESS)
		if (response->errstat != SNMP_ERR_NOERROR)
			NSLog(@"Error in SNMP Packet");
	if (response)
	{
		snmp_free_pdu(response);
	}
}


Ward Witt
The Filmworkers Club

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/

_______________________________________________
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.