[Agentx] How can I get the variable passed by the set command?
林志平 <solyn123@gmail.com> Wed, 27 January 2010 04:28 UTC
Return-Path: <solyn123@gmail.com>
X-Original-To: agentx@core3.amsl.com
Delivered-To: agentx@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 1E0893A6881 for <agentx@core3.amsl.com>; Tue, 26 Jan 2010 20:28:22 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 2.991
X-Spam-Level: **
X-Spam-Status: No, score=2.991 tagged_above=-999 required=5 tests=[BAYES_05=-1.11, CHARSET_FARAWAY_HEADER=3.2, HTML_MESSAGE=0.001, J_CHICKENPOX_83=0.6, MIME_8BIT_HEADER=0.3]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id FV-yNsz5ltyB for <agentx@core3.amsl.com>; Tue, 26 Jan 2010 20:28:20 -0800 (PST)
Received: from mail-pz0-f178.google.com (mail-pz0-f178.google.com [209.85.222.178]) by core3.amsl.com (Postfix) with ESMTP id C3CC23A659B for <agentx@ietf.org>; Tue, 26 Jan 2010 20:28:20 -0800 (PST)
Received: by pzk8 with SMTP id 8so2184428pzk.29 for <agentx@ietf.org>; Tue, 26 Jan 2010 20:28:33 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:date:message-id:subject :from:to:content-type; bh=K/LRzG90x9s8SDDwYjiJozf7VqBQdycAFnraZ3o1Bok=; b=wWG/CZiCueIsC3ikX4Ee2eEMhOVJQI0GD2BCDtXms1a1Uaz0zt2iLvnup5fK49c7qK r9i610b3VET6pjdbLoG276SO6SJD6CMqivdkPsGtbYqZcwob7cpiq/aSrLRFHlOxGqM/ 0S+JjekUjRGzVcI1/tqsdu9qfni1V6kloXGyU=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; b=k6wt995xPkhYYfaJ/rxLghxBodg+eBx91xZbvm1wD8D6WkTslvnOQC4fM4Sfun4pgs s/KYR6YfnwnSFIxqiC7IZso9rl0qhvbAwPqI9unAtIp14cZqo5HQaLR9+vt5QUtUxX0/ fFSod7bO6HC9nWuwgthVSAm9RpuOnIlsdjCBg=
MIME-Version: 1.0
Received: by 10.142.61.33 with SMTP id j33mr1606692wfa.61.1264566513399; Tue, 26 Jan 2010 20:28:33 -0800 (PST)
Date: Wed, 27 Jan 2010 12:28:33 +0800
Message-ID: <8148211e1001262028p6d46e1a3p23eddb7e2a4288f7@mail.gmail.com>
From: 林志平 <solyn123@gmail.com>
To: agentx@ietf.org, linzhiping_zhiqi@126.com
Content-Type: multipart/alternative; boundary="001636e1f93dd379ec047e1dd510"
Subject: [Agentx] How can I get the variable passed by the set command?
X-BeenThere: agentx@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: SNMP Agent Extensibility <agentx.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/agentx>, <mailto:agentx-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/agentx>
List-Post: <mailto:agentx@ietf.org>
List-Help: <mailto:agentx-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/agentx>, <mailto:agentx-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 27 Jan 2010 04:28:22 -0000
Hi,all
I am using netsnmp5.5, and I get a MIB file ,using the mib2c tool I got some
.c and .h files.
Now, I want to set the variable,but I donot how netsnmp passes it.
Does the variable setted passed in reqinfo or reginfo structure?
thanks
Part of the code:
*int
handle_mySysResetNo(netsnmp_mib_handler *handler,
netsnmp_handler_registration *reginfo,
netsnmp_agent_request_info *reqinfo,
netsnmp_request_info *requests)
{
int ret;
int ResetNo=16;
/* We are never called for a GETNEXT if it's registered as a
"instance", as it's "magically" handled for us. */
/* a instance handler also only hands us one request at a time, so
we don't need to loop over a list of requests; we'll only get one. */
switch(reqinfo->mode) {
case MODE_GET:
snmp_set_var_typed_value(requests->requestvb, ASN_INTEGER,
(u_char *)&ResetNo /* XXX: a pointer to
the scalar's data */,
strlen(&ResetNo)/* XXX: the length of
the data in bytes */);
break;
/*
* SET REQUEST
*
* multiple states in the transaction. See:
*
http://www.net-snmp.org/tutorial-5/toolkit/mib_module/set-actions.jpg
*/
case MODE_SET_RESERVE1:
/* or you could use netsnmp_check_vb_type_and_size instead
*/
ret = netsnmp_check_vb_type(requests->requestvb, ASN_INTEGER);
if ( ret != SNMP_ERR_NOERROR ) {
netsnmp_set_request_error(reqinfo, requests, ret );
}
break;
case MODE_SET_RESERVE2:
/* XXX malloc "undo" storage buffer */
if (0/* XXX if malloc, or whatever, failed: */) {
netsnmp_set_request_error(reqinfo, requests,
SNMP_ERR_RESOURCEUNAVAILABLE);
}
break;
case MODE_SET_FREE:
/* XXX: free resources allocated in RESERVE1 and/or
RESERVE2. Something failed somewhere, and the states
below won't be called. */
break;
case MODE_SET_ACTION:
/* XXX: perform the value change here */
if (0/* XXX: error? */) {
netsnmp_set_request_error(reqinfo, requests, 0/* some error
*/);
}
break;
case MODE_SET_COMMIT:
/* XXX: delete temporary storage */
if (/* XXX: error? */0) {
/* try _really_really_ hard to never get to this point */
netsnmp_set_request_error(reqinfo, requests,
SNMP_ERR_COMMITFAILED);
}
break;
case MODE_SET_UNDO:
/* XXX: UNDO and return to previous value for the object */
if (/* XXX: error? */0) {
/* try _really_really_ hard to never get to this point */
netsnmp_set_request_error(reqinfo, requests,
SNMP_ERR_UNDOFAILED);
}
break;
default:
/* we should never get here, so this is a really bad error */
snmp_log(LOG_ERR, "unknown mode (%d) in handle_mySysResetNo\n",
reqinfo->mode );
return SNMP_ERR_GENERR;
}
return SNMP_ERR_NOERROR;
}*