]> git.pld-linux.org Git - packages/net-snmp.git/blob - net-snmp-loadave-writable.patch
- patch to make UCD-SNMP-MIB::laConfig writable, not permanently stored yet.
[packages/net-snmp.git] / net-snmp-loadave-writable.patch
1 --- net-snmp-5.4.2.1/agent/mibgroup/ucd-snmp/loadave.c~ 2009-12-21 21:00:10.094254079 +0200
2 +++ net-snmp-5.4.2.1/agent/mibgroup/ucd-snmp/loadave.c  2009-12-21 22:02:45.398903148 +0200
3 @@ -152,7 +152,7 @@
4           {ERRORNAME}},
5          {LOADAVE, ASN_OCTET_STR, RONLY, var_extensible_loadave, 1,
6           {LOADAVE}},
7 -        {LOADMAXVAL, ASN_OCTET_STR, RONLY, var_extensible_loadave, 1,
8 +        {LOADMAXVAL, ASN_OCTET_STR, RWRITE, var_extensible_loadave, 1,
9           {LOADMAXVAL}},
10          {LOADAVEINT, ASN_INTEGER, RONLY, var_extensible_loadave, 1,
11           {LOADAVEINT}},
12 @@ -309,6 +309,40 @@
13      return 0;
14  }
15  
16 +static int
17 +write_laConfig(int action,
18 +                          u_char * var_val,
19 +                          u_char var_val_type,
20 +                          size_t var_val_len,
21 +                          u_char * statP, oid * name, size_t name_len)
22 +{
23 +    if (var_val_type != ASN_OCTET_STR) {
24 +        DEBUGMSGTL(("ucd-snmp/loadave",
25 +                    "write to laConfig not ASN_OCTET_STR\n"));
26 +        return SNMP_ERR_WRONGTYPE;
27 +    }
28 +       /* allow max value of 65536.00 */
29 +    if (var_val_len > 8) {
30 +        DEBUGMSGTL(("ucd-snmp/loadave",
31 +                    "write to laConfig: bad length\n"));
32 +        return SNMP_ERR_WRONGLENGTH;
33 +    }
34 +    if (action == COMMIT) {
35 +        if (var_val_len != 0) {
36 +                       double val;
37 +                       if (sscanf(var_val, "%7lf", &val) == 1) {
38 +                               int idx = name[name_len - 1] - 1;
39 +                               maxload[idx] = val;
40 +                       } else {
41 +                               DEBUGMSGTL(("ucd-snmp/loadave",
42 +                                                       "write to laConfig: invalid value\n"));
43 +                               return SNMP_ERR_WRONGVALUE;
44 +                       }
45 +               }
46 +    }
47 +    return SNMP_ERR_NOERROR;
48 +}
49 +
50  u_char         *
51  var_extensible_loadave(struct variable * vp,
52                         oid * name,
53 @@ -328,6 +362,10 @@
54      case MIBINDEX:
55          long_ret = name[*length - 1];
56          return ((u_char *) (&long_ret));
57 +    case LOADMAXVAL:
58 +               /* setup write method, but don't return yet */
59 +               *write_method = write_laConfig;
60 +               break;
61      case ERRORNAME:
62          sprintf(errmsg, "Load-%d", ((name[*length - 1] == 1) ? 1 :
63                                      ((name[*length - 1] == 2) ? 5 : 15)));
This page took 0.050407 seconds and 4 git commands to generate.