problem with get/set scalar

"taner memet ali" <[email protected]>
Newsgroups gmane.network.net-snmp.user
Message-ID <001801c5d4d3$dfc9a7d0$6402a8c0@psilaptop>
Hi,

i made some template code using mib2c filled the blanks and modified 
NET-SNMP-EXAMPLES-MIB like this:

netSnmpExampleString OBJECT-TYPE
    SYNTAX      OCTET STRING
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
 "This is a simple object which merely houses a writable
  String.  It's only purposes is to hold the value of a single
  String.  Writing to it will simply change the value for
  subsequent GET/GETNEXT/GETBULK retrievals.
"
    DEFVAL { hallo }
    ::= { netSnmpExampleScalars 1 }


this is my sample code netSnmpExampleString.c

/*

* Note: this file originally auto-generated by mib2c using

* : mib2c.scalar.conf,v 1.8 2004/10/14 12:57:34 dts12 Exp $

*/

#include <net-snmp/net-snmp-config.h>

#include <net-snmp/net-snmp-includes.h>

#include <net-snmp/agent/net-snmp-agent-includes.h>

#include "netSnmpExampleString.h"

#define BUF_LEN 51

/** Initializes the netSnmpExampleString module */

static char netSnmpExampleString[BUF_LEN];

char *tmp_ptr;

void init_control_vars(void)

{

strcpy(netSnmpExampleString, "hallo");


}

void

init_netSnmpExampleString(void)

{

static oid netSnmpExampleString_oid[] = { 1,3,6,1,4,1,8072,2,1,1 };

DEBUGMSGTL(("netSnmpExampleString", "Initializing\n"));


init_control_vars();

netsnmp_register_scalar(

netsnmp_create_handler_registration("netSnmpExampleString", 
handle_netSnmpExampleString,

netSnmpExampleString_oid, OID_LENGTH(netSnmpExampleString_oid),

HANDLER_CAN_RWRITE

));

}

int

handle_netSnmpExampleString(netsnmp_mib_handler *handler,

netsnmp_handler_registration *reginfo,

netsnmp_agent_request_info *reqinfo,

netsnmp_request_info *requests)

{

/* 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_OCTET_STR,

(u_char *)netSnmpExampleString,strlen(netSnmpExampleString));

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:

tmp_ptr = NULL;

if (requests->requestvb->type != ASN_INTEGER ) {

netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_WRONGTYPE);

return SNMP_ERR_WRONGTYPE;

if (requests->requestvb->val.integer < 0 ) {

netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_WRONGVALUE);

return SNMP_ERR_WRONGVALUE;


}

break;

case MODE_SET_RESERVE2:

tmp_ptr = (char *)malloc(requests->requestvb->val_len + 1);

if (tmp_ptr == NULL)

{

printf("SNMP_ERR_RESOURCEUNAVAILABLE!\n");

netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_RESOURCEUNAVAILABLE);

return (SNMP_ERR_RESOURCEUNAVAILABLE);

}

printf("memory alloced!\n");

break;

case MODE_SET_FREE:

if (tmp_ptr)

{

free(tmp_ptr);

printf("memory freed!\n");

}

break;

case MODE_SET_ACTION:

if (tmp_ptr == NULL)

{

printf("SNMP_ERR_RESOURCEUNAVAILABLE!\n");

netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_RESOURCEUNAVAILABLE);

return (SNMP_ERR_RESOURCEUNAVAILABLE);

}

memset(tmp_ptr, 0, BUF_LEN);

strncpy(tmp_ptr, (char *)requests->requestvb->val.integer, (BUF_LEN-1));

break;

case MODE_SET_COMMIT:

if (sizeof(tmp_ptr) >= BUF_LEN)

{

printf("SNMP_ERR_COMMITFAILED!\n");

netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_COMMITFAILED);

return (SNMP_ERR_COMMITFAILED);

}

strcpy(netSnmpExampleString, tmp_ptr);

free(tmp_ptr);

printf("memory freed in commit!\n");

break;

case MODE_SET_UNDO:

free(tmp_ptr);

printf("memory freed in undo!\n");

break;

default:

/* we should never get here, so this is a really bad error */

snmp_log(LOG_ERR, "unknown mode (%d) in handle_netSnmpExampleString\n", 
reqinfo->mode );

return SNMP_ERR_GENERR;

}

return SNMP_ERR_NOERROR;

}

}

i compile this code (it is in agent/mibgoup/examples)  into the agent and 
get always packet error messages.

snmpget -v 1 -c psi 127.0.0.1 netSnmpExampleString.0

Error in packet
Reason:(noSuchName) There is no such variable name in this MIB
Failed object: NET-SNMP-EXAMPLES-MIB::netSnmpExampleString.0


i use net-snmp 5.2.1.2 and the win32sdk.dsw in the win32 folder to compile
the package. On the VS.NET Environment screen it looks like this

-win32sdk (Projectmap)
  |-+ encode_keychange (the project folders)
  |-+ libagent
  |-+ libhelpers
  |-+ libnetsnmptrapd
  |-+ libsnmp
  |-+ netsnmpmibssdk   (the code is in the examples folder of this project)
  |-+ snmpbulkget
  |-+ snmpbulkwalk
  |-+ snmpdelta
  |-+ snmpdf
  |-+ snmpdsdk
  |-+ snmpget
  |-+ snmpgetnext
  |-+ snmpnetstat
  |-+ snmpset
  |-+ snmptranslate
  |-+ snmptrap
  |-+ snmptrapd
  |-+ snmpusm
  |-+ snmpvacm
  |-+ snmpwalk


i follow always follow the instructions in the win32 README to install the 
compiled package

Is something wrong with the code or do i compile the code in a wrong 
projectfolder?

with best regards





-------------------------------------------------------
This SF.Net email is sponsored by:
Power Architecture Resource Center: Free content, downloads, discussions,
and more. http://solutions.newsforge.com/ibmarch.tmpl
_______________________________________________
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.