1 /*
2 * This C file has been generated by smidump 0.4.3.
3 * It is intended to be used with the NET-SNMP library.
4 *
5 * This C file is derived from the UPS-MIB module.
6 *
7 * $Id: rfc1628-mib-mgr.c,v 1.4 2005-11-05 21:10:47 adk0212 Exp $
8 */
9
10 #include "apc.h"
11 #include "snmp.h"
12
13 static oid upsIdentManufacturer[] = {1, 3, 6, 1, 2, 1, 33, 1, 1, 1};
14 static oid upsIdentModel[] = {1, 3, 6, 1, 2, 1, 33, 1, 1, 2};
15 static oid upsIdentUPSSoftwareVersion[] = {1, 3, 6, 1, 2, 1, 33, 1, 1, 3};
16 static oid upsIdentAgentSoftwareVersion[] = {1, 3, 6, 1, 2, 1, 33, 1, 1, 4};
17 static oid upsIdentName[] = {1, 3, 6, 1, 2, 1, 33, 1, 1, 5};
18 static oid upsIdentAttachedDevices[] = {1, 3, 6, 1, 2, 1, 33, 1, 1, 6};
19 static oid upsBatteryStatus[] = {1, 3, 6, 1, 2, 1, 33, 1, 2, 1};
20 static oid upsSecondsOnBattery[] = {1, 3, 6, 1, 2, 1, 33, 1, 2, 2};
21 static oid upsEstimatedMinutesRemaining[] = {1, 3, 6, 1, 2, 1, 33, 1, 2, 3};
22 static oid upsEstimatedChargeRemaining[] = {1, 3, 6, 1, 2, 1, 33, 1, 2, 4};
23 static oid upsBatteryVoltage[] = {1, 3, 6, 1, 2, 1, 33, 1, 2, 5};
24 static oid upsBatteryCurrent[] = {1, 3, 6, 1, 2, 1, 33, 1, 2, 6};
25 static oid upsBatteryTemperature[] = {1, 3, 6, 1, 2, 1, 33, 1, 2, 7};
26 static oid upsInputLineBads[] = {1, 3, 6, 1, 2, 1, 33, 1, 3, 1};
27 static oid upsInputNumLines[] = {1, 3, 6, 1, 2, 1, 33, 1, 3, 2};
28 /* static oid upsInputLineIndex[] = {1, 3, 6, 1, 2, 1, 33, 1, 3, 3, 1, 1}; */
29 static oid upsInputFrequency[] = {1, 3, 6, 1, 2, 1, 33, 1, 3, 3, 1, 2};
30 static oid upsInputVoltage[] = {1, 3, 6, 1, 2, 1, 33, 1, 3, 3, 1, 3};
31 static oid upsInputCurrent[] = {1, 3, 6, 1, 2, 1, 33, 1, 3, 3, 1, 4};
32 static oid upsInputTruePower[] = {1, 3, 6, 1, 2, 1, 33, 1, 3, 3, 1, 5};
33 static oid upsOutputSource[] = {1, 3, 6, 1, 2, 1, 33, 1, 4, 1};
34 static oid upsOutputFrequency[] = {1, 3, 6, 1, 2, 1, 33, 1, 4, 2};
35 static oid upsOutputNumLines[] = {1, 3, 6, 1, 2, 1, 33, 1, 4, 3};
36 /* static oid upsOutputLineIndex[] = {1, 3, 6, 1, 2, 1, 33, 1, 4, 4, 1, 1}; */
37 static oid upsOutputVoltage[] = {1, 3, 6, 1, 2, 1, 33, 1, 4, 4, 1, 2};
38 static oid upsOutputCurrent[] = {1, 3, 6, 1, 2, 1, 33, 1, 4, 4, 1, 3};
39 static oid upsOutputPower[] = {1, 3, 6, 1, 2, 1, 33, 1, 4, 4, 1, 4};
40 static oid upsOutputPercentLoad[] = {1, 3, 6, 1, 2, 1, 33, 1, 4, 4, 1, 5};
41 static oid upsBypassFrequency[] = {1, 3, 6, 1, 2, 1, 33, 1, 5, 1};
42 static oid upsBypassNumLines[] = {1, 3, 6, 1, 2, 1, 33, 1, 5, 2};
43 /* static oid upsBypassLineIndex[] = {1, 3, 6, 1, 2, 1, 33, 1, 5, 3, 1, 1}; */
44 static oid upsBypassVoltage[] = {1, 3, 6, 1, 2, 1, 33, 1, 5, 3, 1, 2};
45 static oid upsBypassCurrent[] = {1, 3, 6, 1, 2, 1, 33, 1, 5, 3, 1, 3};
46 static oid upsBypassPower[] = {1, 3, 6, 1, 2, 1, 33, 1, 5, 3, 1, 4};
47 static oid upsAlarmsPresent[] = {1, 3, 6, 1, 2, 1, 33, 1, 6, 1};
48 /* static oid upsAlarmId[] = {1, 3, 6, 1, 2, 1, 33, 1, 6, 2, 1, 1}; */
49 static oid upsAlarmDescr[] = {1, 3, 6, 1, 2, 1, 33, 1, 6, 2, 1, 2};
50 static oid upsAlarmTime[] = {1, 3, 6, 1, 2, 1, 33, 1, 6, 2, 1, 3};
51 static oid upsTestId[] = {1, 3, 6, 1, 2, 1, 33, 1, 7, 1};
52 static oid upsTestSpinLock[] = {1, 3, 6, 1, 2, 1, 33, 1, 7, 2};
53 static oid upsTestResultsSummary[] = {1, 3, 6, 1, 2, 1, 33, 1, 7, 3};
54 static oid upsTestResultsDetail[] = {1, 3, 6, 1, 2, 1, 33, 1, 7, 4};
55 static oid upsTestStartTime[] = {1, 3, 6, 1, 2, 1, 33, 1, 7, 5};
56 static oid upsTestElapsedTime[] = {1, 3, 6, 1, 2, 1, 33, 1, 7, 6};
57 static oid upsShutdownType[] = {1, 3, 6, 1, 2, 1, 33, 1, 8, 1};
58 static oid upsShutdownAfterDelay[] = {1, 3, 6, 1, 2, 1, 33, 1, 8, 2};
59 static oid upsStartupAfterDelay[] = {1, 3, 6, 1, 2, 1, 33, 1, 8, 3};
60 static oid upsRebootWithDuration[] = {1, 3, 6, 1, 2, 1, 33, 1, 8, 4};
61 static oid upsAutoRestart[] = {1, 3, 6, 1, 2, 1, 33, 1, 8, 5};
62 static oid upsConfigInputVoltage[] = {1, 3, 6, 1, 2, 1, 33, 1, 9, 1};
63 static oid upsConfigInputFreq[] = {1, 3, 6, 1, 2, 1, 33, 1, 9, 2};
64 static oid upsConfigOutputVoltage[] = {1, 3, 6, 1, 2, 1, 33, 1, 9, 3};
65 static oid upsConfigOutputFreq[] = {1, 3, 6, 1, 2, 1, 33, 1, 9, 4};
66 static oid upsConfigOutputVA[] = {1, 3, 6, 1, 2, 1, 33, 1, 9, 5};
67 static oid upsConfigOutputPower[] = {1, 3, 6, 1, 2, 1, 33, 1, 9, 6};
68 static oid upsConfigLowBattTime[] = {1, 3, 6, 1, 2, 1, 33, 1, 9, 7};
69 static oid upsConfigAudibleStatus[] = {1, 3, 6, 1, 2, 1, 33, 1, 9, 8};
70 static oid upsConfigLowVoltageTransferPoint[] = {1, 3, 6, 1, 2, 1, 33, 1, 9, 9};
71 static oid upsConfigHighVoltageTransferPoint[] = {1, 3, 6, 1, 2, 1, 33, 1, 9, 10};
72
ups_mib_mgr_get_upsIdent(struct snmp_session * s,upsIdent_t ** upsIdent)73 int ups_mib_mgr_get_upsIdent(struct snmp_session *s, upsIdent_t **upsIdent)
74 {
75 struct snmp_session *peer;
76 struct snmp_pdu *request, *response;
77 struct variable_list *vars;
78 int status;
79
80 request = snmp_pdu_create(SNMP_MSG_GETNEXT);
81 snmp_add_null_var(request, upsIdentManufacturer, sizeof(upsIdentManufacturer)/sizeof(oid));
82 snmp_add_null_var(request, upsIdentModel, sizeof(upsIdentModel)/sizeof(oid));
83 snmp_add_null_var(request, upsIdentUPSSoftwareVersion, sizeof(upsIdentUPSSoftwareVersion)/sizeof(oid));
84 snmp_add_null_var(request, upsIdentAgentSoftwareVersion, sizeof(upsIdentAgentSoftwareVersion)/sizeof(oid));
85 snmp_add_null_var(request, upsIdentName, sizeof(upsIdentName)/sizeof(oid));
86 snmp_add_null_var(request, upsIdentAttachedDevices, sizeof(upsIdentAttachedDevices)/sizeof(oid));
87
88 peer = snmp_open(s);
89 if (!peer) {
90 return -1;
91 }
92
93 status = snmp_synch_response(peer, request, &response);
94 if (status != STAT_SUCCESS) {
95 if (response) snmp_free_pdu(response);
96 snmp_close(peer);
97 return -2;
98 }
99
100 *upsIdent = (upsIdent_t *) malloc(sizeof(upsIdent_t));
101 if (! *upsIdent) {
102 if (response) snmp_free_pdu(response);
103 snmp_close(peer);
104 return -4;
105 }
106
107 for (vars = response->variables; vars; vars = vars->next_variable) {
108 if (vars->name_length > sizeof(upsIdentManufacturer)/sizeof(oid)
109 && memcmp(vars->name, upsIdentManufacturer, sizeof(upsIdentManufacturer)) == 0) {
110 memcpy((*upsIdent)->__upsIdentManufacturer, vars->val.string, vars->val_len);
111 (*upsIdent)->_upsIdentManufacturerLength = vars->val_len;
112 (*upsIdent)->upsIdentManufacturer = (*upsIdent)->__upsIdentManufacturer;
113 }
114 if (vars->name_length > sizeof(upsIdentModel)/sizeof(oid)
115 && memcmp(vars->name, upsIdentModel, sizeof(upsIdentModel)) == 0) {
116 memcpy((*upsIdent)->__upsIdentModel, vars->val.string, vars->val_len);
117 (*upsIdent)->_upsIdentModelLength = vars->val_len;
118 (*upsIdent)->upsIdentModel = (*upsIdent)->__upsIdentModel;
119 }
120 if (vars->name_length > sizeof(upsIdentUPSSoftwareVersion)/sizeof(oid)
121 && memcmp(vars->name, upsIdentUPSSoftwareVersion, sizeof(upsIdentUPSSoftwareVersion)) == 0) {
122 memcpy((*upsIdent)->__upsIdentUPSSoftwareVersion, vars->val.string, vars->val_len);
123 (*upsIdent)->_upsIdentUPSSoftwareVersionLength = vars->val_len;
124 (*upsIdent)->upsIdentUPSSoftwareVersion = (*upsIdent)->__upsIdentUPSSoftwareVersion;
125 }
126 if (vars->name_length > sizeof(upsIdentAgentSoftwareVersion)/sizeof(oid)
127 && memcmp(vars->name, upsIdentAgentSoftwareVersion, sizeof(upsIdentAgentSoftwareVersion)) == 0) {
128 memcpy((*upsIdent)->__upsIdentAgentSoftwareVersion, vars->val.string, vars->val_len);
129 (*upsIdent)->_upsIdentAgentSoftwareVersionLength = vars->val_len;
130 (*upsIdent)->upsIdentAgentSoftwareVersion = (*upsIdent)->__upsIdentAgentSoftwareVersion;
131 }
132 if (vars->name_length > sizeof(upsIdentName)/sizeof(oid)
133 && memcmp(vars->name, upsIdentName, sizeof(upsIdentName)) == 0) {
134 memcpy((*upsIdent)->__upsIdentName, vars->val.string, vars->val_len);
135 (*upsIdent)->_upsIdentNameLength = vars->val_len;
136 (*upsIdent)->upsIdentName = (*upsIdent)->__upsIdentName;
137 }
138 if (vars->name_length > sizeof(upsIdentAttachedDevices)/sizeof(oid)
139 && memcmp(vars->name, upsIdentAttachedDevices, sizeof(upsIdentAttachedDevices)) == 0) {
140 memcpy((*upsIdent)->__upsIdentAttachedDevices, vars->val.string, vars->val_len);
141 (*upsIdent)->_upsIdentAttachedDevicesLength = vars->val_len;
142 (*upsIdent)->upsIdentAttachedDevices = (*upsIdent)->__upsIdentAttachedDevices;
143 }
144 }
145
146 if (response) snmp_free_pdu(response);
147
148 if (snmp_close(peer) == 0) {
149 return -5;
150 }
151
152 return 0;
153 }
154
ups_mib_mgr_get_upsBattery(struct snmp_session * s,upsBattery_t ** upsBattery)155 int ups_mib_mgr_get_upsBattery(struct snmp_session *s, upsBattery_t **upsBattery)
156 {
157 struct snmp_session *peer;
158 struct snmp_pdu *request, *response;
159 struct variable_list *vars;
160 int status;
161
162 request = snmp_pdu_create(SNMP_MSG_GETNEXT);
163 snmp_add_null_var(request, upsBatteryStatus, sizeof(upsBatteryStatus)/sizeof(oid));
164 snmp_add_null_var(request, upsSecondsOnBattery, sizeof(upsSecondsOnBattery)/sizeof(oid));
165 snmp_add_null_var(request, upsEstimatedMinutesRemaining, sizeof(upsEstimatedMinutesRemaining)/sizeof(oid));
166 snmp_add_null_var(request, upsEstimatedChargeRemaining, sizeof(upsEstimatedChargeRemaining)/sizeof(oid));
167 snmp_add_null_var(request, upsBatteryVoltage, sizeof(upsBatteryVoltage)/sizeof(oid));
168 snmp_add_null_var(request, upsBatteryCurrent, sizeof(upsBatteryCurrent)/sizeof(oid));
169 snmp_add_null_var(request, upsBatteryTemperature, sizeof(upsBatteryTemperature)/sizeof(oid));
170
171 peer = snmp_open(s);
172 if (!peer) {
173 return -1;
174 }
175
176 status = snmp_synch_response(peer, request, &response);
177 if (status != STAT_SUCCESS) {
178 if (response) snmp_free_pdu(response);
179 snmp_close(peer);
180 return -2;
181 }
182
183 *upsBattery = (upsBattery_t *) malloc(sizeof(upsBattery_t));
184 if (! *upsBattery) {
185 if (response) snmp_free_pdu(response);
186 snmp_close(peer);
187 return -4;
188 }
189
190 for (vars = response->variables; vars; vars = vars->next_variable) {
191 if (vars->name_length > sizeof(upsBatteryStatus)/sizeof(oid)
192 && memcmp(vars->name, upsBatteryStatus, sizeof(upsBatteryStatus)) == 0) {
193 (*upsBattery)->__upsBatteryStatus = *vars->val.integer;
194 (*upsBattery)->upsBatteryStatus = &((*upsBattery)->__upsBatteryStatus);
195 }
196 if (vars->name_length > sizeof(upsSecondsOnBattery)/sizeof(oid)
197 && memcmp(vars->name, upsSecondsOnBattery, sizeof(upsSecondsOnBattery)) == 0) {
198 (*upsBattery)->__upsSecondsOnBattery = *vars->val.integer;
199 (*upsBattery)->upsSecondsOnBattery = &((*upsBattery)->__upsSecondsOnBattery);
200 }
201 if (vars->name_length > sizeof(upsEstimatedMinutesRemaining)/sizeof(oid)
202 && memcmp(vars->name, upsEstimatedMinutesRemaining, sizeof(upsEstimatedMinutesRemaining)) == 0) {
203 (*upsBattery)->__upsEstimatedMinutesRemaining = *vars->val.integer;
204 (*upsBattery)->upsEstimatedMinutesRemaining = &((*upsBattery)->__upsEstimatedMinutesRemaining);
205 }
206 if (vars->name_length > sizeof(upsEstimatedChargeRemaining)/sizeof(oid)
207 && memcmp(vars->name, upsEstimatedChargeRemaining, sizeof(upsEstimatedChargeRemaining)) == 0) {
208 (*upsBattery)->__upsEstimatedChargeRemaining = *vars->val.integer;
209 (*upsBattery)->upsEstimatedChargeRemaining = &((*upsBattery)->__upsEstimatedChargeRemaining);
210 }
211 if (vars->name_length > sizeof(upsBatteryVoltage)/sizeof(oid)
212 && memcmp(vars->name, upsBatteryVoltage, sizeof(upsBatteryVoltage)) == 0) {
213 (*upsBattery)->__upsBatteryVoltage = *vars->val.integer;
214 (*upsBattery)->upsBatteryVoltage = &((*upsBattery)->__upsBatteryVoltage);
215 }
216 if (vars->name_length > sizeof(upsBatteryCurrent)/sizeof(oid)
217 && memcmp(vars->name, upsBatteryCurrent, sizeof(upsBatteryCurrent)) == 0) {
218 (*upsBattery)->__upsBatteryCurrent = *vars->val.integer;
219 (*upsBattery)->upsBatteryCurrent = &((*upsBattery)->__upsBatteryCurrent);
220 }
221 if (vars->name_length > sizeof(upsBatteryTemperature)/sizeof(oid)
222 && memcmp(vars->name, upsBatteryTemperature, sizeof(upsBatteryTemperature)) == 0) {
223 (*upsBattery)->__upsBatteryTemperature = *vars->val.integer;
224 (*upsBattery)->upsBatteryTemperature = &((*upsBattery)->__upsBatteryTemperature);
225 }
226 }
227
228 if (response) snmp_free_pdu(response);
229
230 if (snmp_close(peer) == 0) {
231 return -5;
232 }
233
234 return 0;
235 }
236
ups_mib_mgr_get_upsInput(struct snmp_session * s,upsInput_t ** upsInput)237 int ups_mib_mgr_get_upsInput(struct snmp_session *s, upsInput_t **upsInput)
238 {
239 struct snmp_session *peer;
240 struct snmp_pdu *request, *response;
241 struct variable_list *vars;
242 int status;
243
244 request = snmp_pdu_create(SNMP_MSG_GETNEXT);
245 snmp_add_null_var(request, upsInputLineBads, sizeof(upsInputLineBads)/sizeof(oid));
246 snmp_add_null_var(request, upsInputNumLines, sizeof(upsInputNumLines)/sizeof(oid));
247
248 peer = snmp_open(s);
249 if (!peer) {
250 return -1;
251 }
252
253 status = snmp_synch_response(peer, request, &response);
254 if (status != STAT_SUCCESS) {
255 if (response) snmp_free_pdu(response);
256 snmp_close(peer);
257 return -2;
258 }
259
260 *upsInput = (upsInput_t *) malloc(sizeof(upsInput_t));
261 if (! *upsInput) {
262 if (response) snmp_free_pdu(response);
263 snmp_close(peer);
264 return -4;
265 }
266
267 for (vars = response->variables; vars; vars = vars->next_variable) {
268 if (vars->name_length > sizeof(upsInputLineBads)/sizeof(oid)
269 && memcmp(vars->name, upsInputLineBads, sizeof(upsInputLineBads)) == 0) {
270 (*upsInput)->__upsInputLineBads = *vars->val.integer;
271 (*upsInput)->upsInputLineBads = &((*upsInput)->__upsInputLineBads);
272 }
273 if (vars->name_length > sizeof(upsInputNumLines)/sizeof(oid)
274 && memcmp(vars->name, upsInputNumLines, sizeof(upsInputNumLines)) == 0) {
275 (*upsInput)->__upsInputNumLines = *vars->val.integer;
276 (*upsInput)->upsInputNumLines = &((*upsInput)->__upsInputNumLines);
277 }
278 }
279
280 if (response) snmp_free_pdu(response);
281
282 if (snmp_close(peer) == 0) {
283 return -5;
284 }
285
286 return 0;
287 }
288
ups_mib_mgr_get_upsInputEntry(struct snmp_session * s,upsInputEntry_t ** upsInputEntry)289 int ups_mib_mgr_get_upsInputEntry(struct snmp_session *s, upsInputEntry_t **upsInputEntry)
290 {
291 struct snmp_session *peer;
292 struct snmp_pdu *request, *response;
293 struct variable_list *vars;
294 int status;
295
296 request = snmp_pdu_create(SNMP_MSG_GETNEXT);
297 snmp_add_null_var(request, upsInputFrequency, sizeof(upsInputFrequency)/sizeof(oid));
298 snmp_add_null_var(request, upsInputVoltage, sizeof(upsInputVoltage)/sizeof(oid));
299 snmp_add_null_var(request, upsInputCurrent, sizeof(upsInputCurrent)/sizeof(oid));
300 snmp_add_null_var(request, upsInputTruePower, sizeof(upsInputTruePower)/sizeof(oid));
301
302 peer = snmp_open(s);
303 if (!peer) {
304 return -1;
305 }
306
307 status = snmp_synch_response(peer, request, &response);
308 if (status != STAT_SUCCESS) {
309 if (response) snmp_free_pdu(response);
310 snmp_close(peer);
311 return -2;
312 }
313
314 *upsInputEntry = (upsInputEntry_t *) malloc(sizeof(upsInputEntry_t));
315 if (! *upsInputEntry) {
316 if (response) snmp_free_pdu(response);
317 snmp_close(peer);
318 return -4;
319 }
320
321 for (vars = response->variables; vars; vars = vars->next_variable) {
322 if (vars->name_length > sizeof(upsInputFrequency)/sizeof(oid)
323 && memcmp(vars->name, upsInputFrequency, sizeof(upsInputFrequency)) == 0) {
324 (*upsInputEntry)->__upsInputFrequency = *vars->val.integer;
325 (*upsInputEntry)->upsInputFrequency = &((*upsInputEntry)->__upsInputFrequency);
326 }
327 if (vars->name_length > sizeof(upsInputVoltage)/sizeof(oid)
328 && memcmp(vars->name, upsInputVoltage, sizeof(upsInputVoltage)) == 0) {
329 (*upsInputEntry)->__upsInputVoltage = *vars->val.integer;
330 (*upsInputEntry)->upsInputVoltage = &((*upsInputEntry)->__upsInputVoltage);
331 }
332 if (vars->name_length > sizeof(upsInputCurrent)/sizeof(oid)
333 && memcmp(vars->name, upsInputCurrent, sizeof(upsInputCurrent)) == 0) {
334 (*upsInputEntry)->__upsInputCurrent = *vars->val.integer;
335 (*upsInputEntry)->upsInputCurrent = &((*upsInputEntry)->__upsInputCurrent);
336 }
337 if (vars->name_length > sizeof(upsInputTruePower)/sizeof(oid)
338 && memcmp(vars->name, upsInputTruePower, sizeof(upsInputTruePower)) == 0) {
339 (*upsInputEntry)->__upsInputTruePower = *vars->val.integer;
340 (*upsInputEntry)->upsInputTruePower = &((*upsInputEntry)->__upsInputTruePower);
341 }
342 }
343
344 if (response) snmp_free_pdu(response);
345
346 if (snmp_close(peer) == 0) {
347 return -5;
348 }
349
350 return 0;
351 }
352
ups_mib_mgr_get_upsOutput(struct snmp_session * s,upsOutput_t ** upsOutput)353 int ups_mib_mgr_get_upsOutput(struct snmp_session *s, upsOutput_t **upsOutput)
354 {
355 struct snmp_session *peer;
356 struct snmp_pdu *request, *response;
357 struct variable_list *vars;
358 int status;
359
360 request = snmp_pdu_create(SNMP_MSG_GETNEXT);
361 snmp_add_null_var(request, upsOutputSource, sizeof(upsOutputSource)/sizeof(oid));
362 snmp_add_null_var(request, upsOutputFrequency, sizeof(upsOutputFrequency)/sizeof(oid));
363 snmp_add_null_var(request, upsOutputNumLines, sizeof(upsOutputNumLines)/sizeof(oid));
364
365 peer = snmp_open(s);
366 if (!peer) {
367 return -1;
368 }
369
370 status = snmp_synch_response(peer, request, &response);
371 if (status != STAT_SUCCESS) {
372 if (response) snmp_free_pdu(response);
373 snmp_close(peer);
374 return -2;
375 }
376
377 *upsOutput = (upsOutput_t *) malloc(sizeof(upsOutput_t));
378 if (! *upsOutput) {
379 if (response) snmp_free_pdu(response);
380 snmp_close(peer);
381 return -4;
382 }
383
384 for (vars = response->variables; vars; vars = vars->next_variable) {
385 if (vars->name_length > sizeof(upsOutputSource)/sizeof(oid)
386 && memcmp(vars->name, upsOutputSource, sizeof(upsOutputSource)) == 0) {
387 (*upsOutput)->__upsOutputSource = *vars->val.integer;
388 (*upsOutput)->upsOutputSource = &((*upsOutput)->__upsOutputSource);
389 }
390 if (vars->name_length > sizeof(upsOutputFrequency)/sizeof(oid)
391 && memcmp(vars->name, upsOutputFrequency, sizeof(upsOutputFrequency)) == 0) {
392 (*upsOutput)->__upsOutputFrequency = *vars->val.integer;
393 (*upsOutput)->upsOutputFrequency = &((*upsOutput)->__upsOutputFrequency);
394 }
395 if (vars->name_length > sizeof(upsOutputNumLines)/sizeof(oid)
396 && memcmp(vars->name, upsOutputNumLines, sizeof(upsOutputNumLines)) == 0) {
397 (*upsOutput)->__upsOutputNumLines = *vars->val.integer;
398 (*upsOutput)->upsOutputNumLines = &((*upsOutput)->__upsOutputNumLines);
399 }
400 }
401
402 if (response) snmp_free_pdu(response);
403
404 if (snmp_close(peer) == 0) {
405 return -5;
406 }
407
408 return 0;
409 }
410
ups_mib_mgr_get_upsOutputEntry(struct snmp_session * s,upsOutputEntry_t ** upsOutputEntry)411 int ups_mib_mgr_get_upsOutputEntry(struct snmp_session *s, upsOutputEntry_t **upsOutputEntry)
412 {
413 struct snmp_session *peer;
414 struct snmp_pdu *request, *response;
415 struct variable_list *vars;
416 int status;
417
418 request = snmp_pdu_create(SNMP_MSG_GETNEXT);
419 snmp_add_null_var(request, upsOutputVoltage, sizeof(upsOutputVoltage)/sizeof(oid));
420 snmp_add_null_var(request, upsOutputCurrent, sizeof(upsOutputCurrent)/sizeof(oid));
421 snmp_add_null_var(request, upsOutputPower, sizeof(upsOutputPower)/sizeof(oid));
422 snmp_add_null_var(request, upsOutputPercentLoad, sizeof(upsOutputPercentLoad)/sizeof(oid));
423
424 peer = snmp_open(s);
425 if (!peer) {
426 return -1;
427 }
428
429 status = snmp_synch_response(peer, request, &response);
430 if (status != STAT_SUCCESS) {
431 if (response) snmp_free_pdu(response);
432 snmp_close(peer);
433 return -2;
434 }
435
436 *upsOutputEntry = (upsOutputEntry_t *) malloc(sizeof(upsOutputEntry_t));
437 if (! *upsOutputEntry) {
438 if (response) snmp_free_pdu(response);
439 snmp_close(peer);
440 return -4;
441 }
442
443 for (vars = response->variables; vars; vars = vars->next_variable) {
444 if (vars->name_length > sizeof(upsOutputVoltage)/sizeof(oid)
445 && memcmp(vars->name, upsOutputVoltage, sizeof(upsOutputVoltage)) == 0) {
446 (*upsOutputEntry)->__upsOutputVoltage = *vars->val.integer;
447 (*upsOutputEntry)->upsOutputVoltage = &((*upsOutputEntry)->__upsOutputVoltage);
448 }
449 if (vars->name_length > sizeof(upsOutputCurrent)/sizeof(oid)
450 && memcmp(vars->name, upsOutputCurrent, sizeof(upsOutputCurrent)) == 0) {
451 (*upsOutputEntry)->__upsOutputCurrent = *vars->val.integer;
452 (*upsOutputEntry)->upsOutputCurrent = &((*upsOutputEntry)->__upsOutputCurrent);
453 }
454 if (vars->name_length > sizeof(upsOutputPower)/sizeof(oid)
455 && memcmp(vars->name, upsOutputPower, sizeof(upsOutputPower)) == 0) {
456 (*upsOutputEntry)->__upsOutputPower = *vars->val.integer;
457 (*upsOutputEntry)->upsOutputPower = &((*upsOutputEntry)->__upsOutputPower);
458 }
459 if (vars->name_length > sizeof(upsOutputPercentLoad)/sizeof(oid)
460 && memcmp(vars->name, upsOutputPercentLoad, sizeof(upsOutputPercentLoad)) == 0) {
461 (*upsOutputEntry)->__upsOutputPercentLoad = *vars->val.integer;
462 (*upsOutputEntry)->upsOutputPercentLoad = &((*upsOutputEntry)->__upsOutputPercentLoad);
463 }
464 }
465
466 if (response) snmp_free_pdu(response);
467
468 if (snmp_close(peer) == 0) {
469 return -5;
470 }
471
472 return 0;
473 }
474
ups_mib_mgr_get_upsBypass(struct snmp_session * s,upsBypass_t ** upsBypass)475 int ups_mib_mgr_get_upsBypass(struct snmp_session *s, upsBypass_t **upsBypass)
476 {
477 struct snmp_session *peer;
478 struct snmp_pdu *request, *response;
479 struct variable_list *vars;
480 int status;
481
482 request = snmp_pdu_create(SNMP_MSG_GETNEXT);
483 snmp_add_null_var(request, upsBypassFrequency, sizeof(upsBypassFrequency)/sizeof(oid));
484 snmp_add_null_var(request, upsBypassNumLines, sizeof(upsBypassNumLines)/sizeof(oid));
485
486 peer = snmp_open(s);
487 if (!peer) {
488 return -1;
489 }
490
491 status = snmp_synch_response(peer, request, &response);
492 if (status != STAT_SUCCESS) {
493 if (response) snmp_free_pdu(response);
494 snmp_close(peer);
495 return -2;
496 }
497
498 *upsBypass = (upsBypass_t *) malloc(sizeof(upsBypass_t));
499 if (! *upsBypass) {
500 if (response) snmp_free_pdu(response);
501 snmp_close(peer);
502 return -4;
503 }
504
505 for (vars = response->variables; vars; vars = vars->next_variable) {
506 if (vars->name_length > sizeof(upsBypassFrequency)/sizeof(oid)
507 && memcmp(vars->name, upsBypassFrequency, sizeof(upsBypassFrequency)) == 0) {
508 (*upsBypass)->__upsBypassFrequency = *vars->val.integer;
509 (*upsBypass)->upsBypassFrequency = &((*upsBypass)->__upsBypassFrequency);
510 }
511 if (vars->name_length > sizeof(upsBypassNumLines)/sizeof(oid)
512 && memcmp(vars->name, upsBypassNumLines, sizeof(upsBypassNumLines)) == 0) {
513 (*upsBypass)->__upsBypassNumLines = *vars->val.integer;
514 (*upsBypass)->upsBypassNumLines = &((*upsBypass)->__upsBypassNumLines);
515 }
516 }
517
518 if (response) snmp_free_pdu(response);
519
520 if (snmp_close(peer) == 0) {
521 return -5;
522 }
523
524 return 0;
525 }
526
ups_mib_mgr_get_upsBypassEntry(struct snmp_session * s,upsBypassEntry_t ** upsBypassEntry)527 int ups_mib_mgr_get_upsBypassEntry(struct snmp_session *s, upsBypassEntry_t **upsBypassEntry)
528 {
529 struct snmp_session *peer;
530 struct snmp_pdu *request, *response;
531 struct variable_list *vars;
532 int status;
533
534 request = snmp_pdu_create(SNMP_MSG_GETNEXT);
535 snmp_add_null_var(request, upsBypassVoltage, sizeof(upsBypassVoltage)/sizeof(oid));
536 snmp_add_null_var(request, upsBypassCurrent, sizeof(upsBypassCurrent)/sizeof(oid));
537 snmp_add_null_var(request, upsBypassPower, sizeof(upsBypassPower)/sizeof(oid));
538
539 peer = snmp_open(s);
540 if (!peer) {
541 return -1;
542 }
543
544 status = snmp_synch_response(peer, request, &response);
545 if (status != STAT_SUCCESS) {
546 if (response) snmp_free_pdu(response);
547 snmp_close(peer);
548 return -2;
549 }
550
551 *upsBypassEntry = (upsBypassEntry_t *) malloc(sizeof(upsBypassEntry_t));
552 if (! *upsBypassEntry) {
553 if (response) snmp_free_pdu(response);
554 snmp_close(peer);
555 return -4;
556 }
557
558 for (vars = response->variables; vars; vars = vars->next_variable) {
559 if (vars->name_length > sizeof(upsBypassVoltage)/sizeof(oid)
560 && memcmp(vars->name, upsBypassVoltage, sizeof(upsBypassVoltage)) == 0) {
561 (*upsBypassEntry)->__upsBypassVoltage = *vars->val.integer;
562 (*upsBypassEntry)->upsBypassVoltage = &((*upsBypassEntry)->__upsBypassVoltage);
563 }
564 if (vars->name_length > sizeof(upsBypassCurrent)/sizeof(oid)
565 && memcmp(vars->name, upsBypassCurrent, sizeof(upsBypassCurrent)) == 0) {
566 (*upsBypassEntry)->__upsBypassCurrent = *vars->val.integer;
567 (*upsBypassEntry)->upsBypassCurrent = &((*upsBypassEntry)->__upsBypassCurrent);
568 }
569 if (vars->name_length > sizeof(upsBypassPower)/sizeof(oid)
570 && memcmp(vars->name, upsBypassPower, sizeof(upsBypassPower)) == 0) {
571 (*upsBypassEntry)->__upsBypassPower = *vars->val.integer;
572 (*upsBypassEntry)->upsBypassPower = &((*upsBypassEntry)->__upsBypassPower);
573 }
574 }
575
576 if (response) snmp_free_pdu(response);
577
578 if (snmp_close(peer) == 0) {
579 return -5;
580 }
581
582 return 0;
583 }
584
ups_mib_mgr_get_upsAlarm(struct snmp_session * s,upsAlarm_t ** upsAlarm)585 int ups_mib_mgr_get_upsAlarm(struct snmp_session *s, upsAlarm_t **upsAlarm)
586 {
587 struct snmp_session *peer;
588 struct snmp_pdu *request, *response;
589 struct variable_list *vars;
590 int status;
591
592 request = snmp_pdu_create(SNMP_MSG_GETNEXT);
593 snmp_add_null_var(request, upsAlarmsPresent, sizeof(upsAlarmsPresent)/sizeof(oid));
594
595 peer = snmp_open(s);
596 if (!peer) {
597 return -1;
598 }
599
600 status = snmp_synch_response(peer, request, &response);
601 if (status != STAT_SUCCESS) {
602 if (response) snmp_free_pdu(response);
603 snmp_close(peer);
604 return -2;
605 }
606
607 *upsAlarm = (upsAlarm_t *) malloc(sizeof(upsAlarm_t));
608 if (! *upsAlarm) {
609 if (response) snmp_free_pdu(response);
610 snmp_close(peer);
611 return -4;
612 }
613
614 for (vars = response->variables; vars; vars = vars->next_variable) {
615 if (vars->name_length > sizeof(upsAlarmsPresent)/sizeof(oid)
616 && memcmp(vars->name, upsAlarmsPresent, sizeof(upsAlarmsPresent)) == 0) {
617 (*upsAlarm)->__upsAlarmsPresent = *vars->val.integer;
618 (*upsAlarm)->upsAlarmsPresent = &((*upsAlarm)->__upsAlarmsPresent);
619 }
620 }
621
622 if (response) snmp_free_pdu(response);
623
624 if (snmp_close(peer) == 0) {
625 return -5;
626 }
627
628 return 0;
629 }
630
ups_mib_mgr_get_upsAlarmEntry(struct snmp_session * s,upsAlarmEntry_t ** upsAlarmEntry)631 int ups_mib_mgr_get_upsAlarmEntry(struct snmp_session *s, upsAlarmEntry_t **upsAlarmEntry)
632 {
633 struct snmp_session *peer;
634 struct snmp_pdu *request, *response;
635 struct variable_list *vars;
636 int status;
637
638 request = snmp_pdu_create(SNMP_MSG_GETNEXT);
639 snmp_add_null_var(request, upsAlarmDescr, sizeof(upsAlarmDescr)/sizeof(oid));
640 snmp_add_null_var(request, upsAlarmTime, sizeof(upsAlarmTime)/sizeof(oid));
641
642 peer = snmp_open(s);
643 if (!peer) {
644 return -1;
645 }
646
647 status = snmp_synch_response(peer, request, &response);
648 if (status != STAT_SUCCESS) {
649 if (response) snmp_free_pdu(response);
650 snmp_close(peer);
651 return -2;
652 }
653
654 *upsAlarmEntry = (upsAlarmEntry_t *) malloc(sizeof(upsAlarmEntry_t));
655 if (! *upsAlarmEntry) {
656 if (response) snmp_free_pdu(response);
657 snmp_close(peer);
658 return -4;
659 }
660
661 for (vars = response->variables; vars; vars = vars->next_variable) {
662 if (vars->name_length > sizeof(upsAlarmDescr)/sizeof(oid)
663 && memcmp(vars->name, upsAlarmDescr, sizeof(upsAlarmDescr)) == 0) {
664 }
665 if (vars->name_length > sizeof(upsAlarmTime)/sizeof(oid)
666 && memcmp(vars->name, upsAlarmTime, sizeof(upsAlarmTime)) == 0) {
667 (*upsAlarmEntry)->__upsAlarmTime = *vars->val.integer;
668 (*upsAlarmEntry)->upsAlarmTime = &((*upsAlarmEntry)->__upsAlarmTime);
669 }
670 }
671
672 if (response) snmp_free_pdu(response);
673
674 if (snmp_close(peer) == 0) {
675 return -5;
676 }
677
678 return 0;
679 }
680
ups_mib_mgr_get_upsTest(struct snmp_session * s,upsTest_t ** upsTest)681 int ups_mib_mgr_get_upsTest(struct snmp_session *s, upsTest_t **upsTest)
682 {
683 struct snmp_session *peer;
684 struct snmp_pdu *request, *response;
685 struct variable_list *vars;
686 int status;
687
688 request = snmp_pdu_create(SNMP_MSG_GETNEXT);
689 snmp_add_null_var(request, upsTestId, sizeof(upsTestId)/sizeof(oid));
690 snmp_add_null_var(request, upsTestSpinLock, sizeof(upsTestSpinLock)/sizeof(oid));
691 snmp_add_null_var(request, upsTestResultsSummary, sizeof(upsTestResultsSummary)/sizeof(oid));
692 snmp_add_null_var(request, upsTestResultsDetail, sizeof(upsTestResultsDetail)/sizeof(oid));
693 snmp_add_null_var(request, upsTestStartTime, sizeof(upsTestStartTime)/sizeof(oid));
694 snmp_add_null_var(request, upsTestElapsedTime, sizeof(upsTestElapsedTime)/sizeof(oid));
695
696 peer = snmp_open(s);
697 if (!peer) {
698 return -1;
699 }
700
701 status = snmp_synch_response(peer, request, &response);
702 if (status != STAT_SUCCESS) {
703 if (response) snmp_free_pdu(response);
704 snmp_close(peer);
705 return -2;
706 }
707
708 *upsTest = (upsTest_t *) malloc(sizeof(upsTest_t));
709 if (! *upsTest) {
710 if (response) snmp_free_pdu(response);
711 snmp_close(peer);
712 return -4;
713 }
714
715 for (vars = response->variables; vars; vars = vars->next_variable) {
716 if (vars->name_length > sizeof(upsTestId)/sizeof(oid)
717 && memcmp(vars->name, upsTestId, sizeof(upsTestId)) == 0) {
718 }
719 if (vars->name_length > sizeof(upsTestSpinLock)/sizeof(oid)
720 && memcmp(vars->name, upsTestSpinLock, sizeof(upsTestSpinLock)) == 0) {
721 (*upsTest)->__upsTestSpinLock = *vars->val.integer;
722 (*upsTest)->upsTestSpinLock = &((*upsTest)->__upsTestSpinLock);
723 }
724 if (vars->name_length > sizeof(upsTestResultsSummary)/sizeof(oid)
725 && memcmp(vars->name, upsTestResultsSummary, sizeof(upsTestResultsSummary)) == 0) {
726 (*upsTest)->__upsTestResultsSummary = *vars->val.integer;
727 (*upsTest)->upsTestResultsSummary = &((*upsTest)->__upsTestResultsSummary);
728 }
729 if (vars->name_length > sizeof(upsTestResultsDetail)/sizeof(oid)
730 && memcmp(vars->name, upsTestResultsDetail, sizeof(upsTestResultsDetail)) == 0) {
731 memcpy((*upsTest)->__upsTestResultsDetail, vars->val.string, vars->val_len);
732 (*upsTest)->_upsTestResultsDetailLength = vars->val_len;
733 (*upsTest)->upsTestResultsDetail = (*upsTest)->__upsTestResultsDetail;
734 }
735 if (vars->name_length > sizeof(upsTestStartTime)/sizeof(oid)
736 && memcmp(vars->name, upsTestStartTime, sizeof(upsTestStartTime)) == 0) {
737 (*upsTest)->__upsTestStartTime = *vars->val.integer;
738 (*upsTest)->upsTestStartTime = &((*upsTest)->__upsTestStartTime);
739 }
740 if (vars->name_length > sizeof(upsTestElapsedTime)/sizeof(oid)
741 && memcmp(vars->name, upsTestElapsedTime, sizeof(upsTestElapsedTime)) == 0) {
742 (*upsTest)->__upsTestElapsedTime = *vars->val.integer;
743 (*upsTest)->upsTestElapsedTime = &((*upsTest)->__upsTestElapsedTime);
744 }
745 }
746
747 if (response) snmp_free_pdu(response);
748
749 if (snmp_close(peer) == 0) {
750 return -5;
751 }
752
753 return 0;
754 }
755
ups_mib_mgr_get_upsControl(struct snmp_session * s,upsControl_t ** upsControl)756 int ups_mib_mgr_get_upsControl(struct snmp_session *s, upsControl_t **upsControl)
757 {
758 struct snmp_session *peer;
759 struct snmp_pdu *request, *response;
760 struct variable_list *vars;
761 int status;
762
763 request = snmp_pdu_create(SNMP_MSG_GETNEXT);
764 snmp_add_null_var(request, upsShutdownType, sizeof(upsShutdownType)/sizeof(oid));
765 snmp_add_null_var(request, upsShutdownAfterDelay, sizeof(upsShutdownAfterDelay)/sizeof(oid));
766 snmp_add_null_var(request, upsStartupAfterDelay, sizeof(upsStartupAfterDelay)/sizeof(oid));
767 snmp_add_null_var(request, upsRebootWithDuration, sizeof(upsRebootWithDuration)/sizeof(oid));
768 snmp_add_null_var(request, upsAutoRestart, sizeof(upsAutoRestart)/sizeof(oid));
769
770 peer = snmp_open(s);
771 if (!peer) {
772 return -1;
773 }
774
775 status = snmp_synch_response(peer, request, &response);
776 if (status != STAT_SUCCESS) {
777 if (response) snmp_free_pdu(response);
778 snmp_close(peer);
779 return -2;
780 }
781
782 *upsControl = (upsControl_t *) malloc(sizeof(upsControl_t));
783 if (! *upsControl) {
784 if (response) snmp_free_pdu(response);
785 snmp_close(peer);
786 return -4;
787 }
788
789 for (vars = response->variables; vars; vars = vars->next_variable) {
790 if (vars->name_length > sizeof(upsShutdownType)/sizeof(oid)
791 && memcmp(vars->name, upsShutdownType, sizeof(upsShutdownType)) == 0) {
792 (*upsControl)->__upsShutdownType = *vars->val.integer;
793 (*upsControl)->upsShutdownType = &((*upsControl)->__upsShutdownType);
794 }
795 if (vars->name_length > sizeof(upsShutdownAfterDelay)/sizeof(oid)
796 && memcmp(vars->name, upsShutdownAfterDelay, sizeof(upsShutdownAfterDelay)) == 0) {
797 (*upsControl)->__upsShutdownAfterDelay = *vars->val.integer;
798 (*upsControl)->upsShutdownAfterDelay = &((*upsControl)->__upsShutdownAfterDelay);
799 }
800 if (vars->name_length > sizeof(upsStartupAfterDelay)/sizeof(oid)
801 && memcmp(vars->name, upsStartupAfterDelay, sizeof(upsStartupAfterDelay)) == 0) {
802 (*upsControl)->__upsStartupAfterDelay = *vars->val.integer;
803 (*upsControl)->upsStartupAfterDelay = &((*upsControl)->__upsStartupAfterDelay);
804 }
805 if (vars->name_length > sizeof(upsRebootWithDuration)/sizeof(oid)
806 && memcmp(vars->name, upsRebootWithDuration, sizeof(upsRebootWithDuration)) == 0) {
807 (*upsControl)->__upsRebootWithDuration = *vars->val.integer;
808 (*upsControl)->upsRebootWithDuration = &((*upsControl)->__upsRebootWithDuration);
809 }
810 if (vars->name_length > sizeof(upsAutoRestart)/sizeof(oid)
811 && memcmp(vars->name, upsAutoRestart, sizeof(upsAutoRestart)) == 0) {
812 (*upsControl)->__upsAutoRestart = *vars->val.integer;
813 (*upsControl)->upsAutoRestart = &((*upsControl)->__upsAutoRestart);
814 }
815 }
816
817 if (response) snmp_free_pdu(response);
818
819 if (snmp_close(peer) == 0) {
820 return -5;
821 }
822
823 return 0;
824 }
825
ups_mib_mgr_get_upsConfig(struct snmp_session * s,upsConfig_t ** upsConfig)826 int ups_mib_mgr_get_upsConfig(struct snmp_session *s, upsConfig_t **upsConfig)
827 {
828 struct snmp_session *peer;
829 struct snmp_pdu *request, *response;
830 struct variable_list *vars;
831 int status;
832
833 request = snmp_pdu_create(SNMP_MSG_GETNEXT);
834 snmp_add_null_var(request, upsConfigInputVoltage, sizeof(upsConfigInputVoltage)/sizeof(oid));
835 snmp_add_null_var(request, upsConfigInputFreq, sizeof(upsConfigInputFreq)/sizeof(oid));
836 snmp_add_null_var(request, upsConfigOutputVoltage, sizeof(upsConfigOutputVoltage)/sizeof(oid));
837 snmp_add_null_var(request, upsConfigOutputFreq, sizeof(upsConfigOutputFreq)/sizeof(oid));
838 snmp_add_null_var(request, upsConfigOutputVA, sizeof(upsConfigOutputVA)/sizeof(oid));
839 snmp_add_null_var(request, upsConfigOutputPower, sizeof(upsConfigOutputPower)/sizeof(oid));
840 snmp_add_null_var(request, upsConfigLowBattTime, sizeof(upsConfigLowBattTime)/sizeof(oid));
841 snmp_add_null_var(request, upsConfigAudibleStatus, sizeof(upsConfigAudibleStatus)/sizeof(oid));
842 snmp_add_null_var(request, upsConfigLowVoltageTransferPoint, sizeof(upsConfigLowVoltageTransferPoint)/sizeof(oid));
843 snmp_add_null_var(request, upsConfigHighVoltageTransferPoint, sizeof(upsConfigHighVoltageTransferPoint)/sizeof(oid));
844
845 peer = snmp_open(s);
846 if (!peer) {
847 return -1;
848 }
849
850 status = snmp_synch_response(peer, request, &response);
851 if (status != STAT_SUCCESS) {
852 if (response) snmp_free_pdu(response);
853 snmp_close(peer);
854 return -2;
855 }
856
857 *upsConfig = (upsConfig_t *) malloc(sizeof(upsConfig_t));
858 if (! *upsConfig) {
859 if (response) snmp_free_pdu(response);
860 snmp_close(peer);
861 return -4;
862 }
863
864 for (vars = response->variables; vars; vars = vars->next_variable) {
865 if (vars->name_length > sizeof(upsConfigInputVoltage)/sizeof(oid)
866 && memcmp(vars->name, upsConfigInputVoltage, sizeof(upsConfigInputVoltage)) == 0) {
867 (*upsConfig)->__upsConfigInputVoltage = *vars->val.integer;
868 (*upsConfig)->upsConfigInputVoltage = &((*upsConfig)->__upsConfigInputVoltage);
869 }
870 if (vars->name_length > sizeof(upsConfigInputFreq)/sizeof(oid)
871 && memcmp(vars->name, upsConfigInputFreq, sizeof(upsConfigInputFreq)) == 0) {
872 (*upsConfig)->__upsConfigInputFreq = *vars->val.integer;
873 (*upsConfig)->upsConfigInputFreq = &((*upsConfig)->__upsConfigInputFreq);
874 }
875 if (vars->name_length > sizeof(upsConfigOutputVoltage)/sizeof(oid)
876 && memcmp(vars->name, upsConfigOutputVoltage, sizeof(upsConfigOutputVoltage)) == 0) {
877 (*upsConfig)->__upsConfigOutputVoltage = *vars->val.integer;
878 (*upsConfig)->upsConfigOutputVoltage = &((*upsConfig)->__upsConfigOutputVoltage);
879 }
880 if (vars->name_length > sizeof(upsConfigOutputFreq)/sizeof(oid)
881 && memcmp(vars->name, upsConfigOutputFreq, sizeof(upsConfigOutputFreq)) == 0) {
882 (*upsConfig)->__upsConfigOutputFreq = *vars->val.integer;
883 (*upsConfig)->upsConfigOutputFreq = &((*upsConfig)->__upsConfigOutputFreq);
884 }
885 if (vars->name_length > sizeof(upsConfigOutputVA)/sizeof(oid)
886 && memcmp(vars->name, upsConfigOutputVA, sizeof(upsConfigOutputVA)) == 0) {
887 (*upsConfig)->__upsConfigOutputVA = *vars->val.integer;
888 (*upsConfig)->upsConfigOutputVA = &((*upsConfig)->__upsConfigOutputVA);
889 }
890 if (vars->name_length > sizeof(upsConfigOutputPower)/sizeof(oid)
891 && memcmp(vars->name, upsConfigOutputPower, sizeof(upsConfigOutputPower)) == 0) {
892 (*upsConfig)->__upsConfigOutputPower = *vars->val.integer;
893 (*upsConfig)->upsConfigOutputPower = &((*upsConfig)->__upsConfigOutputPower);
894 }
895 if (vars->name_length > sizeof(upsConfigLowBattTime)/sizeof(oid)
896 && memcmp(vars->name, upsConfigLowBattTime, sizeof(upsConfigLowBattTime)) == 0) {
897 (*upsConfig)->__upsConfigLowBattTime = *vars->val.integer;
898 (*upsConfig)->upsConfigLowBattTime = &((*upsConfig)->__upsConfigLowBattTime);
899 }
900 if (vars->name_length > sizeof(upsConfigAudibleStatus)/sizeof(oid)
901 && memcmp(vars->name, upsConfigAudibleStatus, sizeof(upsConfigAudibleStatus)) == 0) {
902 (*upsConfig)->__upsConfigAudibleStatus = *vars->val.integer;
903 (*upsConfig)->upsConfigAudibleStatus = &((*upsConfig)->__upsConfigAudibleStatus);
904 }
905 if (vars->name_length > sizeof(upsConfigLowVoltageTransferPoint)/sizeof(oid)
906 && memcmp(vars->name, upsConfigLowVoltageTransferPoint, sizeof(upsConfigLowVoltageTransferPoint)) == 0) {
907 (*upsConfig)->__upsConfigLowVoltageTransferPoint = *vars->val.integer;
908 (*upsConfig)->upsConfigLowVoltageTransferPoint = &((*upsConfig)->__upsConfigLowVoltageTransferPoint);
909 }
910 if (vars->name_length > sizeof(upsConfigHighVoltageTransferPoint)/sizeof(oid)
911 && memcmp(vars->name, upsConfigHighVoltageTransferPoint, sizeof(upsConfigHighVoltageTransferPoint)) == 0) {
912 (*upsConfig)->__upsConfigHighVoltageTransferPoint = *vars->val.integer;
913 (*upsConfig)->upsConfigHighVoltageTransferPoint = &((*upsConfig)->__upsConfigHighVoltageTransferPoint);
914 }
915 }
916
917 if (response) snmp_free_pdu(response);
918
919 if (snmp_close(peer) == 0) {
920 return -5;
921 }
922
923 return 0;
924 }
925
926
927