]>
Commit | Line | Data |
---|---|---|
e9b6787d ER |
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 | + } | |
00b0aba0 | 28 | + /* allow max value of 65536.00 */ |
e9b6787d ER |
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) { | |
00b0aba0 ER |
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 | + } | |
e9b6787d ER |
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: | |
00b0aba0 ER |
58 | + /* setup write method, but don't return yet */ |
59 | + *write_method = write_laConfig; | |
60 | + break; | |
e9b6787d ER |
61 | case ERRORNAME: |
62 | sprintf(errmsg, "Load-%d", ((name[*length - 1] == 1) ? 1 : | |
63 | ((name[*length - 1] == 2) ? 5 : 15))); |