Dear:

      I have a problem about snmpset,when I set only one variable,all the

values of variables are changed .

 

      I want to change the value of only one variable,what can I do to

solve the problem?

 

     For example,when I use:

"snmpste -v2c -c private localhost upFlow.0 i 3"

to set the value of  upFlow.  It's OK.

 

But the values of other  variables  are changed to 3:

"snmpget  -v2c -c private localhost downFlow.0 ",

it returns:

"SGCC-MIB::downFlow.0 = INTRGER  3"

 

What  should I do?

 

Here is parts of my program,"example_int"is a global variable:
  
 case DOWNSNDPACK:
        long_ret = example_int;
        *write_method = write_exampleint;
        return (u_char *) & long_ret;
    
  case DOWNRCVPACK:
        long_ret = example_int;
        *write_method = write_exampleint;
        return (u_char *) & long_ret;
       
    case DOWNFLOW:
        long_ret = example_int;
        *write_method = write_exampleint;
        return (u_char *) & long_ret;
 
    case CPURATE:
        strcpy(string, example_str);
        *var_len = strlen(string);
 *write_method = write_examplestr;
        return (u_char *) string;
       
 int  write_exampleint(int action,
                 u_char * var_val,
                 u_char var_val_type,
                 size_t var_val_len,
                 u_char * statP, oid * name, size_t name_len)
{
    #define MAX_EXAMPLE_INT 100
    static long     intval;
    static long     old_intval;
   
    switch (action) {
    case RESERVE1:
        if (var_val_type != ASN_INTEGER) {
            DEBUGMSGTL(("example", "%x not integer type",

var_val_type));
            return SNMP_ERR_WRONGTYPE;
        }
        if (var_val_len > sizeof(long)) {
            DEBUGMSGTL(("example", "wrong length %x", var_val_len));
            return SNMP_ERR_WRONGLENGTH;
        }

        intval = *((long *) var_val);
        if (intval > MAX_EXAMPLE_INT) {
            DEBUGMSGTL(("example", "wrong value %x", intval));
            return SNMP_ERR_WRONGVALUE;
        }
        break;

    case RESERVE2:
        break;

    case FREE:
        break;

    case ACTION:
        old_intval = example_int;
        example_int = intval;
        break;

    case UNDO:
        example_int = old_intval;
        break;

    case COMMIT:
        break;

    }
    return SNMP_ERR_NOERROR;
}

------------------------------------------------------------------------------
Forrester Wave Report - Recovery time is now measured in hours and minutes
not days. Key insights are discussed in the 2010 Forrester Wave Report as
part of an in-depth evaluation of disaster recovery service providers.
Forrester found the best-in-class provider in terms of services and vision.
Read this report now!  http://p.sf.net/sfu/ibm-webcastpromo
_______________________________________________
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

Reply via email to