Imported Upstream version 0.4.8
[platform/upstream/libsmi.git] / test / dumps / netsnmp / if-mib-mgr-stub.c
1 /*
2  * This C file has been generated by smidump 0.4.5.
3  * It is intended to be used with the NET-SNMP library.
4  *
5  * This C file is derived from the IF-MIB module.
6  *
7  * $Id: if-mib-mgr-stub.c 7690 2008-02-05 15:31:35Z schoenw $
8  */
9
10 #include <stdlib.h>
11
12 #include <ucd-snmp/asn1.h>
13 #include <ucd-snmp/snmp.h>
14 #include <ucd-snmp/snmp_api.h>
15 #include <ucd-snmp/snmp_client.h>
16
17 #include "if-mib.h"
18
19 static oid ifNumber[] = {1, 3, 6, 1, 2, 1, 2, 1};
20 static oid ifIndex[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 1};
21 static oid ifDescr[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 2};
22 static oid ifType[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 3};
23 static oid ifMtu[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 4};
24 static oid ifSpeed[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 5};
25 static oid ifPhysAddress[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 6};
26 static oid ifAdminStatus[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 7};
27 static oid ifOperStatus[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 8};
28 static oid ifLastChange[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 9};
29 static oid ifInOctets[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 10};
30 static oid ifInUcastPkts[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 11};
31 static oid ifInNUcastPkts[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 12};
32 static oid ifInDiscards[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 13};
33 static oid ifInErrors[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 14};
34 static oid ifInUnknownProtos[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 15};
35 static oid ifOutOctets[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 16};
36 static oid ifOutUcastPkts[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 17};
37 static oid ifOutNUcastPkts[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 18};
38 static oid ifOutDiscards[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 19};
39 static oid ifOutErrors[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 20};
40 static oid ifOutQLen[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 21};
41 static oid ifSpecific[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 22};
42 static oid ifName[] = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 1};
43 static oid ifInMulticastPkts[] = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 2};
44 static oid ifInBroadcastPkts[] = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 3};
45 static oid ifOutMulticastPkts[] = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 4};
46 static oid ifOutBroadcastPkts[] = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 5};
47 static oid ifHCInOctets[] = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 6};
48 static oid ifHCInUcastPkts[] = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 7};
49 static oid ifHCInMulticastPkts[] = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 8};
50 static oid ifHCInBroadcastPkts[] = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 9};
51 static oid ifHCOutOctets[] = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 10};
52 static oid ifHCOutUcastPkts[] = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 11};
53 static oid ifHCOutMulticastPkts[] = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 12};
54 static oid ifHCOutBroadcastPkts[] = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 13};
55 static oid ifLinkUpDownTrapEnable[] = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 14};
56 static oid ifHighSpeed[] = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 15};
57 static oid ifPromiscuousMode[] = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 16};
58 static oid ifConnectorPresent[] = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 17};
59 static oid ifAlias[] = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 18};
60 static oid ifCounterDiscontinuityTime[] = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 19};
61 static oid ifStackHigherLayer[] = {1, 3, 6, 1, 2, 1, 31, 1, 2, 1, 1};
62 static oid ifStackLowerLayer[] = {1, 3, 6, 1, 2, 1, 31, 1, 2, 1, 2};
63 static oid ifStackStatus[] = {1, 3, 6, 1, 2, 1, 31, 1, 2, 1, 3};
64 static oid ifTestId[] = {1, 3, 6, 1, 2, 1, 31, 1, 3, 1, 1};
65 static oid ifTestStatus[] = {1, 3, 6, 1, 2, 1, 31, 1, 3, 1, 2};
66 static oid ifTestType[] = {1, 3, 6, 1, 2, 1, 31, 1, 3, 1, 3};
67 static oid ifTestResult[] = {1, 3, 6, 1, 2, 1, 31, 1, 3, 1, 4};
68 static oid ifTestCode[] = {1, 3, 6, 1, 2, 1, 31, 1, 3, 1, 5};
69 static oid ifTestOwner[] = {1, 3, 6, 1, 2, 1, 31, 1, 3, 1, 6};
70 static oid ifRcvAddressAddress[] = {1, 3, 6, 1, 2, 1, 31, 1, 4, 1, 1};
71 static oid ifRcvAddressStatus[] = {1, 3, 6, 1, 2, 1, 31, 1, 4, 1, 2};
72 static oid ifRcvAddressType[] = {1, 3, 6, 1, 2, 1, 31, 1, 4, 1, 3};
73 static oid ifTableLastChange[] = {1, 3, 6, 1, 2, 1, 31, 1, 5};
74 static oid ifStackLastChange[] = {1, 3, 6, 1, 2, 1, 31, 1, 6};
75
76 int if_mib_mgr_get_interfaces(struct snmp_session *s, interfaces_t **interfaces)
77 {
78     struct snmp_session *peer;
79     struct snmp_pdu *request, *response;
80     struct variable_list *vars;
81     int status;
82
83     request = snmp_pdu_create(SNMP_MSG_GETNEXT);
84     snmp_add_null_var(request, ifNumber, sizeof(ifNumber)/sizeof(oid));
85
86     peer = snmp_open(s);
87     if (!peer) {
88         snmp_free_pdu(request);
89         return -1;
90     }
91
92     status = snmp_synch_response(peer, request, &response);
93     if (status != STAT_SUCCESS) {
94         if (response) snmp_free_pdu(response);
95         snmp_close(peer);
96         return -2;
97     }
98
99     *interfaces = (interfaces_t *) malloc(sizeof(interfaces_t));
100     if (! *interfaces) {
101         if (response) snmp_free_pdu(response);
102         snmp_close(peer);
103         return -4;
104     }
105
106     for (vars = response->variables; vars; vars = vars->next_variable) {
107         if (vars->name_length > sizeof(ifNumber)/sizeof(oid)
108             && memcmp(vars->name, ifNumber, sizeof(ifNumber)) == 0) {
109             (*interfaces)->__ifNumber = *vars->val.integer;
110             (*interfaces)->ifNumber = &((*interfaces)->__ifNumber);
111         }
112     }
113
114     if (response) snmp_free_pdu(response);
115
116     if (snmp_close(peer) == 0) {
117         return -5;
118     }
119
120     return 0;
121 }
122
123 int if_mib_mgr_get_ifEntry(struct snmp_session *s, ifEntry_t **ifEntry)
124 {
125     struct snmp_session *peer;
126     struct snmp_pdu *request, *response;
127     struct variable_list *vars;
128     int status;
129
130     request = snmp_pdu_create(SNMP_MSG_GETNEXT);
131     snmp_add_null_var(request, ifIndex, sizeof(ifIndex)/sizeof(oid));
132     snmp_add_null_var(request, ifDescr, sizeof(ifDescr)/sizeof(oid));
133     snmp_add_null_var(request, ifType, sizeof(ifType)/sizeof(oid));
134     snmp_add_null_var(request, ifMtu, sizeof(ifMtu)/sizeof(oid));
135     snmp_add_null_var(request, ifSpeed, sizeof(ifSpeed)/sizeof(oid));
136     snmp_add_null_var(request, ifPhysAddress, sizeof(ifPhysAddress)/sizeof(oid));
137     snmp_add_null_var(request, ifAdminStatus, sizeof(ifAdminStatus)/sizeof(oid));
138     snmp_add_null_var(request, ifOperStatus, sizeof(ifOperStatus)/sizeof(oid));
139     snmp_add_null_var(request, ifLastChange, sizeof(ifLastChange)/sizeof(oid));
140     snmp_add_null_var(request, ifInOctets, sizeof(ifInOctets)/sizeof(oid));
141     snmp_add_null_var(request, ifInUcastPkts, sizeof(ifInUcastPkts)/sizeof(oid));
142     snmp_add_null_var(request, ifInNUcastPkts, sizeof(ifInNUcastPkts)/sizeof(oid));
143     snmp_add_null_var(request, ifInDiscards, sizeof(ifInDiscards)/sizeof(oid));
144     snmp_add_null_var(request, ifInErrors, sizeof(ifInErrors)/sizeof(oid));
145     snmp_add_null_var(request, ifInUnknownProtos, sizeof(ifInUnknownProtos)/sizeof(oid));
146     snmp_add_null_var(request, ifOutOctets, sizeof(ifOutOctets)/sizeof(oid));
147     snmp_add_null_var(request, ifOutUcastPkts, sizeof(ifOutUcastPkts)/sizeof(oid));
148     snmp_add_null_var(request, ifOutNUcastPkts, sizeof(ifOutNUcastPkts)/sizeof(oid));
149     snmp_add_null_var(request, ifOutDiscards, sizeof(ifOutDiscards)/sizeof(oid));
150     snmp_add_null_var(request, ifOutErrors, sizeof(ifOutErrors)/sizeof(oid));
151     snmp_add_null_var(request, ifOutQLen, sizeof(ifOutQLen)/sizeof(oid));
152     snmp_add_null_var(request, ifSpecific, sizeof(ifSpecific)/sizeof(oid));
153
154     peer = snmp_open(s);
155     if (!peer) {
156         snmp_free_pdu(request);
157         return -1;
158     }
159
160     status = snmp_synch_response(peer, request, &response);
161     if (status != STAT_SUCCESS) {
162         if (response) snmp_free_pdu(response);
163         snmp_close(peer);
164         return -2;
165     }
166
167     *ifEntry = (ifEntry_t *) malloc(sizeof(ifEntry_t));
168     if (! *ifEntry) {
169         if (response) snmp_free_pdu(response);
170         snmp_close(peer);
171         return -4;
172     }
173
174     for (vars = response->variables; vars; vars = vars->next_variable) {
175         if (vars->name_length > sizeof(ifIndex)/sizeof(oid)
176             && memcmp(vars->name, ifIndex, sizeof(ifIndex)) == 0) {
177             (*ifEntry)->__ifIndex = *vars->val.integer;
178             (*ifEntry)->ifIndex = &((*ifEntry)->__ifIndex);
179         }
180         if (vars->name_length > sizeof(ifDescr)/sizeof(oid)
181             && memcmp(vars->name, ifDescr, sizeof(ifDescr)) == 0) {
182             memcpy((*ifEntry)->__ifDescr, vars->val.string, vars->val_len);
183             (*ifEntry)->_ifDescrLength = vars->val_len;
184             (*ifEntry)->ifDescr = (*ifEntry)->__ifDescr;
185         }
186         if (vars->name_length > sizeof(ifType)/sizeof(oid)
187             && memcmp(vars->name, ifType, sizeof(ifType)) == 0) {
188             (*ifEntry)->__ifType = *vars->val.integer;
189             (*ifEntry)->ifType = &((*ifEntry)->__ifType);
190         }
191         if (vars->name_length > sizeof(ifMtu)/sizeof(oid)
192             && memcmp(vars->name, ifMtu, sizeof(ifMtu)) == 0) {
193             (*ifEntry)->__ifMtu = *vars->val.integer;
194             (*ifEntry)->ifMtu = &((*ifEntry)->__ifMtu);
195         }
196         if (vars->name_length > sizeof(ifSpeed)/sizeof(oid)
197             && memcmp(vars->name, ifSpeed, sizeof(ifSpeed)) == 0) {
198             (*ifEntry)->__ifSpeed = *vars->val.integer;
199             (*ifEntry)->ifSpeed = &((*ifEntry)->__ifSpeed);
200         }
201         if (vars->name_length > sizeof(ifPhysAddress)/sizeof(oid)
202             && memcmp(vars->name, ifPhysAddress, sizeof(ifPhysAddress)) == 0) {
203             memcpy((*ifEntry)->__ifPhysAddress, vars->val.string, vars->val_len);
204             (*ifEntry)->_ifPhysAddressLength = vars->val_len;
205             (*ifEntry)->ifPhysAddress = (*ifEntry)->__ifPhysAddress;
206         }
207         if (vars->name_length > sizeof(ifAdminStatus)/sizeof(oid)
208             && memcmp(vars->name, ifAdminStatus, sizeof(ifAdminStatus)) == 0) {
209             (*ifEntry)->__ifAdminStatus = *vars->val.integer;
210             (*ifEntry)->ifAdminStatus = &((*ifEntry)->__ifAdminStatus);
211         }
212         if (vars->name_length > sizeof(ifOperStatus)/sizeof(oid)
213             && memcmp(vars->name, ifOperStatus, sizeof(ifOperStatus)) == 0) {
214             (*ifEntry)->__ifOperStatus = *vars->val.integer;
215             (*ifEntry)->ifOperStatus = &((*ifEntry)->__ifOperStatus);
216         }
217         if (vars->name_length > sizeof(ifLastChange)/sizeof(oid)
218             && memcmp(vars->name, ifLastChange, sizeof(ifLastChange)) == 0) {
219             (*ifEntry)->__ifLastChange = *vars->val.integer;
220             (*ifEntry)->ifLastChange = &((*ifEntry)->__ifLastChange);
221         }
222         if (vars->name_length > sizeof(ifInOctets)/sizeof(oid)
223             && memcmp(vars->name, ifInOctets, sizeof(ifInOctets)) == 0) {
224             (*ifEntry)->__ifInOctets = *vars->val.integer;
225             (*ifEntry)->ifInOctets = &((*ifEntry)->__ifInOctets);
226         }
227         if (vars->name_length > sizeof(ifInUcastPkts)/sizeof(oid)
228             && memcmp(vars->name, ifInUcastPkts, sizeof(ifInUcastPkts)) == 0) {
229             (*ifEntry)->__ifInUcastPkts = *vars->val.integer;
230             (*ifEntry)->ifInUcastPkts = &((*ifEntry)->__ifInUcastPkts);
231         }
232         if (vars->name_length > sizeof(ifInNUcastPkts)/sizeof(oid)
233             && memcmp(vars->name, ifInNUcastPkts, sizeof(ifInNUcastPkts)) == 0) {
234             (*ifEntry)->__ifInNUcastPkts = *vars->val.integer;
235             (*ifEntry)->ifInNUcastPkts = &((*ifEntry)->__ifInNUcastPkts);
236         }
237         if (vars->name_length > sizeof(ifInDiscards)/sizeof(oid)
238             && memcmp(vars->name, ifInDiscards, sizeof(ifInDiscards)) == 0) {
239             (*ifEntry)->__ifInDiscards = *vars->val.integer;
240             (*ifEntry)->ifInDiscards = &((*ifEntry)->__ifInDiscards);
241         }
242         if (vars->name_length > sizeof(ifInErrors)/sizeof(oid)
243             && memcmp(vars->name, ifInErrors, sizeof(ifInErrors)) == 0) {
244             (*ifEntry)->__ifInErrors = *vars->val.integer;
245             (*ifEntry)->ifInErrors = &((*ifEntry)->__ifInErrors);
246         }
247         if (vars->name_length > sizeof(ifInUnknownProtos)/sizeof(oid)
248             && memcmp(vars->name, ifInUnknownProtos, sizeof(ifInUnknownProtos)) == 0) {
249             (*ifEntry)->__ifInUnknownProtos = *vars->val.integer;
250             (*ifEntry)->ifInUnknownProtos = &((*ifEntry)->__ifInUnknownProtos);
251         }
252         if (vars->name_length > sizeof(ifOutOctets)/sizeof(oid)
253             && memcmp(vars->name, ifOutOctets, sizeof(ifOutOctets)) == 0) {
254             (*ifEntry)->__ifOutOctets = *vars->val.integer;
255             (*ifEntry)->ifOutOctets = &((*ifEntry)->__ifOutOctets);
256         }
257         if (vars->name_length > sizeof(ifOutUcastPkts)/sizeof(oid)
258             && memcmp(vars->name, ifOutUcastPkts, sizeof(ifOutUcastPkts)) == 0) {
259             (*ifEntry)->__ifOutUcastPkts = *vars->val.integer;
260             (*ifEntry)->ifOutUcastPkts = &((*ifEntry)->__ifOutUcastPkts);
261         }
262         if (vars->name_length > sizeof(ifOutNUcastPkts)/sizeof(oid)
263             && memcmp(vars->name, ifOutNUcastPkts, sizeof(ifOutNUcastPkts)) == 0) {
264             (*ifEntry)->__ifOutNUcastPkts = *vars->val.integer;
265             (*ifEntry)->ifOutNUcastPkts = &((*ifEntry)->__ifOutNUcastPkts);
266         }
267         if (vars->name_length > sizeof(ifOutDiscards)/sizeof(oid)
268             && memcmp(vars->name, ifOutDiscards, sizeof(ifOutDiscards)) == 0) {
269             (*ifEntry)->__ifOutDiscards = *vars->val.integer;
270             (*ifEntry)->ifOutDiscards = &((*ifEntry)->__ifOutDiscards);
271         }
272         if (vars->name_length > sizeof(ifOutErrors)/sizeof(oid)
273             && memcmp(vars->name, ifOutErrors, sizeof(ifOutErrors)) == 0) {
274             (*ifEntry)->__ifOutErrors = *vars->val.integer;
275             (*ifEntry)->ifOutErrors = &((*ifEntry)->__ifOutErrors);
276         }
277         if (vars->name_length > sizeof(ifOutQLen)/sizeof(oid)
278             && memcmp(vars->name, ifOutQLen, sizeof(ifOutQLen)) == 0) {
279             (*ifEntry)->__ifOutQLen = *vars->val.integer;
280             (*ifEntry)->ifOutQLen = &((*ifEntry)->__ifOutQLen);
281         }
282         if (vars->name_length > sizeof(ifSpecific)/sizeof(oid)
283             && memcmp(vars->name, ifSpecific, sizeof(ifSpecific)) == 0) {
284         }
285     }
286
287     if (response) snmp_free_pdu(response);
288
289     if (snmp_close(peer) == 0) {
290         return -5;
291     }
292
293     return 0;
294 }
295
296 int if_mib_mgr_get_ifMIBObjects(struct snmp_session *s, ifMIBObjects_t **ifMIBObjects)
297 {
298     struct snmp_session *peer;
299     struct snmp_pdu *request, *response;
300     struct variable_list *vars;
301     int status;
302
303     request = snmp_pdu_create(SNMP_MSG_GETNEXT);
304     snmp_add_null_var(request, ifTableLastChange, sizeof(ifTableLastChange)/sizeof(oid));
305     snmp_add_null_var(request, ifStackLastChange, sizeof(ifStackLastChange)/sizeof(oid));
306
307     peer = snmp_open(s);
308     if (!peer) {
309         snmp_free_pdu(request);
310         return -1;
311     }
312
313     status = snmp_synch_response(peer, request, &response);
314     if (status != STAT_SUCCESS) {
315         if (response) snmp_free_pdu(response);
316         snmp_close(peer);
317         return -2;
318     }
319
320     *ifMIBObjects = (ifMIBObjects_t *) malloc(sizeof(ifMIBObjects_t));
321     if (! *ifMIBObjects) {
322         if (response) snmp_free_pdu(response);
323         snmp_close(peer);
324         return -4;
325     }
326
327     for (vars = response->variables; vars; vars = vars->next_variable) {
328         if (vars->name_length > sizeof(ifTableLastChange)/sizeof(oid)
329             && memcmp(vars->name, ifTableLastChange, sizeof(ifTableLastChange)) == 0) {
330             (*ifMIBObjects)->__ifTableLastChange = *vars->val.integer;
331             (*ifMIBObjects)->ifTableLastChange = &((*ifMIBObjects)->__ifTableLastChange);
332         }
333         if (vars->name_length > sizeof(ifStackLastChange)/sizeof(oid)
334             && memcmp(vars->name, ifStackLastChange, sizeof(ifStackLastChange)) == 0) {
335             (*ifMIBObjects)->__ifStackLastChange = *vars->val.integer;
336             (*ifMIBObjects)->ifStackLastChange = &((*ifMIBObjects)->__ifStackLastChange);
337         }
338     }
339
340     if (response) snmp_free_pdu(response);
341
342     if (snmp_close(peer) == 0) {
343         return -5;
344     }
345
346     return 0;
347 }
348
349 int if_mib_mgr_get_ifXEntry(struct snmp_session *s, ifXEntry_t **ifXEntry)
350 {
351     struct snmp_session *peer;
352     struct snmp_pdu *request, *response;
353     struct variable_list *vars;
354     int status;
355
356     request = snmp_pdu_create(SNMP_MSG_GETNEXT);
357     snmp_add_null_var(request, ifName, sizeof(ifName)/sizeof(oid));
358     snmp_add_null_var(request, ifInMulticastPkts, sizeof(ifInMulticastPkts)/sizeof(oid));
359     snmp_add_null_var(request, ifInBroadcastPkts, sizeof(ifInBroadcastPkts)/sizeof(oid));
360     snmp_add_null_var(request, ifOutMulticastPkts, sizeof(ifOutMulticastPkts)/sizeof(oid));
361     snmp_add_null_var(request, ifOutBroadcastPkts, sizeof(ifOutBroadcastPkts)/sizeof(oid));
362     snmp_add_null_var(request, ifHCInOctets, sizeof(ifHCInOctets)/sizeof(oid));
363     snmp_add_null_var(request, ifHCInUcastPkts, sizeof(ifHCInUcastPkts)/sizeof(oid));
364     snmp_add_null_var(request, ifHCInMulticastPkts, sizeof(ifHCInMulticastPkts)/sizeof(oid));
365     snmp_add_null_var(request, ifHCInBroadcastPkts, sizeof(ifHCInBroadcastPkts)/sizeof(oid));
366     snmp_add_null_var(request, ifHCOutOctets, sizeof(ifHCOutOctets)/sizeof(oid));
367     snmp_add_null_var(request, ifHCOutUcastPkts, sizeof(ifHCOutUcastPkts)/sizeof(oid));
368     snmp_add_null_var(request, ifHCOutMulticastPkts, sizeof(ifHCOutMulticastPkts)/sizeof(oid));
369     snmp_add_null_var(request, ifHCOutBroadcastPkts, sizeof(ifHCOutBroadcastPkts)/sizeof(oid));
370     snmp_add_null_var(request, ifLinkUpDownTrapEnable, sizeof(ifLinkUpDownTrapEnable)/sizeof(oid));
371     snmp_add_null_var(request, ifHighSpeed, sizeof(ifHighSpeed)/sizeof(oid));
372     snmp_add_null_var(request, ifPromiscuousMode, sizeof(ifPromiscuousMode)/sizeof(oid));
373     snmp_add_null_var(request, ifConnectorPresent, sizeof(ifConnectorPresent)/sizeof(oid));
374     snmp_add_null_var(request, ifAlias, sizeof(ifAlias)/sizeof(oid));
375     snmp_add_null_var(request, ifCounterDiscontinuityTime, sizeof(ifCounterDiscontinuityTime)/sizeof(oid));
376
377     peer = snmp_open(s);
378     if (!peer) {
379         snmp_free_pdu(request);
380         return -1;
381     }
382
383     status = snmp_synch_response(peer, request, &response);
384     if (status != STAT_SUCCESS) {
385         if (response) snmp_free_pdu(response);
386         snmp_close(peer);
387         return -2;
388     }
389
390     *ifXEntry = (ifXEntry_t *) malloc(sizeof(ifXEntry_t));
391     if (! *ifXEntry) {
392         if (response) snmp_free_pdu(response);
393         snmp_close(peer);
394         return -4;
395     }
396
397     for (vars = response->variables; vars; vars = vars->next_variable) {
398         if (vars->name_length > sizeof(ifName)/sizeof(oid)
399             && memcmp(vars->name, ifName, sizeof(ifName)) == 0) {
400             memcpy((*ifXEntry)->__ifName, vars->val.string, vars->val_len);
401             (*ifXEntry)->_ifNameLength = vars->val_len;
402             (*ifXEntry)->ifName = (*ifXEntry)->__ifName;
403         }
404         if (vars->name_length > sizeof(ifInMulticastPkts)/sizeof(oid)
405             && memcmp(vars->name, ifInMulticastPkts, sizeof(ifInMulticastPkts)) == 0) {
406             (*ifXEntry)->__ifInMulticastPkts = *vars->val.integer;
407             (*ifXEntry)->ifInMulticastPkts = &((*ifXEntry)->__ifInMulticastPkts);
408         }
409         if (vars->name_length > sizeof(ifInBroadcastPkts)/sizeof(oid)
410             && memcmp(vars->name, ifInBroadcastPkts, sizeof(ifInBroadcastPkts)) == 0) {
411             (*ifXEntry)->__ifInBroadcastPkts = *vars->val.integer;
412             (*ifXEntry)->ifInBroadcastPkts = &((*ifXEntry)->__ifInBroadcastPkts);
413         }
414         if (vars->name_length > sizeof(ifOutMulticastPkts)/sizeof(oid)
415             && memcmp(vars->name, ifOutMulticastPkts, sizeof(ifOutMulticastPkts)) == 0) {
416             (*ifXEntry)->__ifOutMulticastPkts = *vars->val.integer;
417             (*ifXEntry)->ifOutMulticastPkts = &((*ifXEntry)->__ifOutMulticastPkts);
418         }
419         if (vars->name_length > sizeof(ifOutBroadcastPkts)/sizeof(oid)
420             && memcmp(vars->name, ifOutBroadcastPkts, sizeof(ifOutBroadcastPkts)) == 0) {
421             (*ifXEntry)->__ifOutBroadcastPkts = *vars->val.integer;
422             (*ifXEntry)->ifOutBroadcastPkts = &((*ifXEntry)->__ifOutBroadcastPkts);
423         }
424         if (vars->name_length > sizeof(ifHCInOctets)/sizeof(oid)
425             && memcmp(vars->name, ifHCInOctets, sizeof(ifHCInOctets)) == 0) {
426         }
427         if (vars->name_length > sizeof(ifHCInUcastPkts)/sizeof(oid)
428             && memcmp(vars->name, ifHCInUcastPkts, sizeof(ifHCInUcastPkts)) == 0) {
429         }
430         if (vars->name_length > sizeof(ifHCInMulticastPkts)/sizeof(oid)
431             && memcmp(vars->name, ifHCInMulticastPkts, sizeof(ifHCInMulticastPkts)) == 0) {
432         }
433         if (vars->name_length > sizeof(ifHCInBroadcastPkts)/sizeof(oid)
434             && memcmp(vars->name, ifHCInBroadcastPkts, sizeof(ifHCInBroadcastPkts)) == 0) {
435         }
436         if (vars->name_length > sizeof(ifHCOutOctets)/sizeof(oid)
437             && memcmp(vars->name, ifHCOutOctets, sizeof(ifHCOutOctets)) == 0) {
438         }
439         if (vars->name_length > sizeof(ifHCOutUcastPkts)/sizeof(oid)
440             && memcmp(vars->name, ifHCOutUcastPkts, sizeof(ifHCOutUcastPkts)) == 0) {
441         }
442         if (vars->name_length > sizeof(ifHCOutMulticastPkts)/sizeof(oid)
443             && memcmp(vars->name, ifHCOutMulticastPkts, sizeof(ifHCOutMulticastPkts)) == 0) {
444         }
445         if (vars->name_length > sizeof(ifHCOutBroadcastPkts)/sizeof(oid)
446             && memcmp(vars->name, ifHCOutBroadcastPkts, sizeof(ifHCOutBroadcastPkts)) == 0) {
447         }
448         if (vars->name_length > sizeof(ifLinkUpDownTrapEnable)/sizeof(oid)
449             && memcmp(vars->name, ifLinkUpDownTrapEnable, sizeof(ifLinkUpDownTrapEnable)) == 0) {
450             (*ifXEntry)->__ifLinkUpDownTrapEnable = *vars->val.integer;
451             (*ifXEntry)->ifLinkUpDownTrapEnable = &((*ifXEntry)->__ifLinkUpDownTrapEnable);
452         }
453         if (vars->name_length > sizeof(ifHighSpeed)/sizeof(oid)
454             && memcmp(vars->name, ifHighSpeed, sizeof(ifHighSpeed)) == 0) {
455             (*ifXEntry)->__ifHighSpeed = *vars->val.integer;
456             (*ifXEntry)->ifHighSpeed = &((*ifXEntry)->__ifHighSpeed);
457         }
458         if (vars->name_length > sizeof(ifPromiscuousMode)/sizeof(oid)
459             && memcmp(vars->name, ifPromiscuousMode, sizeof(ifPromiscuousMode)) == 0) {
460             (*ifXEntry)->__ifPromiscuousMode = *vars->val.integer;
461             (*ifXEntry)->ifPromiscuousMode = &((*ifXEntry)->__ifPromiscuousMode);
462         }
463         if (vars->name_length > sizeof(ifConnectorPresent)/sizeof(oid)
464             && memcmp(vars->name, ifConnectorPresent, sizeof(ifConnectorPresent)) == 0) {
465             (*ifXEntry)->__ifConnectorPresent = *vars->val.integer;
466             (*ifXEntry)->ifConnectorPresent = &((*ifXEntry)->__ifConnectorPresent);
467         }
468         if (vars->name_length > sizeof(ifAlias)/sizeof(oid)
469             && memcmp(vars->name, ifAlias, sizeof(ifAlias)) == 0) {
470             memcpy((*ifXEntry)->__ifAlias, vars->val.string, vars->val_len);
471             (*ifXEntry)->_ifAliasLength = vars->val_len;
472             (*ifXEntry)->ifAlias = (*ifXEntry)->__ifAlias;
473         }
474         if (vars->name_length > sizeof(ifCounterDiscontinuityTime)/sizeof(oid)
475             && memcmp(vars->name, ifCounterDiscontinuityTime, sizeof(ifCounterDiscontinuityTime)) == 0) {
476             (*ifXEntry)->__ifCounterDiscontinuityTime = *vars->val.integer;
477             (*ifXEntry)->ifCounterDiscontinuityTime = &((*ifXEntry)->__ifCounterDiscontinuityTime);
478         }
479     }
480
481     if (response) snmp_free_pdu(response);
482
483     if (snmp_close(peer) == 0) {
484         return -5;
485     }
486
487     return 0;
488 }
489
490 int if_mib_mgr_get_ifStackEntry(struct snmp_session *s, ifStackEntry_t **ifStackEntry)
491 {
492     struct snmp_session *peer;
493     struct snmp_pdu *request, *response;
494     struct variable_list *vars;
495     int status;
496
497     request = snmp_pdu_create(SNMP_MSG_GETNEXT);
498     snmp_add_null_var(request, ifStackStatus, sizeof(ifStackStatus)/sizeof(oid));
499
500     peer = snmp_open(s);
501     if (!peer) {
502         snmp_free_pdu(request);
503         return -1;
504     }
505
506     status = snmp_synch_response(peer, request, &response);
507     if (status != STAT_SUCCESS) {
508         if (response) snmp_free_pdu(response);
509         snmp_close(peer);
510         return -2;
511     }
512
513     *ifStackEntry = (ifStackEntry_t *) malloc(sizeof(ifStackEntry_t));
514     if (! *ifStackEntry) {
515         if (response) snmp_free_pdu(response);
516         snmp_close(peer);
517         return -4;
518     }
519
520     for (vars = response->variables; vars; vars = vars->next_variable) {
521         if (vars->name_length > sizeof(ifStackStatus)/sizeof(oid)
522             && memcmp(vars->name, ifStackStatus, sizeof(ifStackStatus)) == 0) {
523             (*ifStackEntry)->__ifStackStatus = *vars->val.integer;
524             (*ifStackEntry)->ifStackStatus = &((*ifStackEntry)->__ifStackStatus);
525         }
526     }
527
528     if (response) snmp_free_pdu(response);
529
530     if (snmp_close(peer) == 0) {
531         return -5;
532     }
533
534     return 0;
535 }
536
537 int if_mib_mgr_get_ifTestEntry(struct snmp_session *s, ifTestEntry_t **ifTestEntry)
538 {
539     struct snmp_session *peer;
540     struct snmp_pdu *request, *response;
541     struct variable_list *vars;
542     int status;
543
544     request = snmp_pdu_create(SNMP_MSG_GETNEXT);
545     snmp_add_null_var(request, ifTestId, sizeof(ifTestId)/sizeof(oid));
546     snmp_add_null_var(request, ifTestStatus, sizeof(ifTestStatus)/sizeof(oid));
547     snmp_add_null_var(request, ifTestType, sizeof(ifTestType)/sizeof(oid));
548     snmp_add_null_var(request, ifTestResult, sizeof(ifTestResult)/sizeof(oid));
549     snmp_add_null_var(request, ifTestCode, sizeof(ifTestCode)/sizeof(oid));
550     snmp_add_null_var(request, ifTestOwner, sizeof(ifTestOwner)/sizeof(oid));
551
552     peer = snmp_open(s);
553     if (!peer) {
554         snmp_free_pdu(request);
555         return -1;
556     }
557
558     status = snmp_synch_response(peer, request, &response);
559     if (status != STAT_SUCCESS) {
560         if (response) snmp_free_pdu(response);
561         snmp_close(peer);
562         return -2;
563     }
564
565     *ifTestEntry = (ifTestEntry_t *) malloc(sizeof(ifTestEntry_t));
566     if (! *ifTestEntry) {
567         if (response) snmp_free_pdu(response);
568         snmp_close(peer);
569         return -4;
570     }
571
572     for (vars = response->variables; vars; vars = vars->next_variable) {
573         if (vars->name_length > sizeof(ifTestId)/sizeof(oid)
574             && memcmp(vars->name, ifTestId, sizeof(ifTestId)) == 0) {
575             (*ifTestEntry)->__ifTestId = *vars->val.integer;
576             (*ifTestEntry)->ifTestId = &((*ifTestEntry)->__ifTestId);
577         }
578         if (vars->name_length > sizeof(ifTestStatus)/sizeof(oid)
579             && memcmp(vars->name, ifTestStatus, sizeof(ifTestStatus)) == 0) {
580             (*ifTestEntry)->__ifTestStatus = *vars->val.integer;
581             (*ifTestEntry)->ifTestStatus = &((*ifTestEntry)->__ifTestStatus);
582         }
583         if (vars->name_length > sizeof(ifTestType)/sizeof(oid)
584             && memcmp(vars->name, ifTestType, sizeof(ifTestType)) == 0) {
585         }
586         if (vars->name_length > sizeof(ifTestResult)/sizeof(oid)
587             && memcmp(vars->name, ifTestResult, sizeof(ifTestResult)) == 0) {
588             (*ifTestEntry)->__ifTestResult = *vars->val.integer;
589             (*ifTestEntry)->ifTestResult = &((*ifTestEntry)->__ifTestResult);
590         }
591         if (vars->name_length > sizeof(ifTestCode)/sizeof(oid)
592             && memcmp(vars->name, ifTestCode, sizeof(ifTestCode)) == 0) {
593         }
594         if (vars->name_length > sizeof(ifTestOwner)/sizeof(oid)
595             && memcmp(vars->name, ifTestOwner, sizeof(ifTestOwner)) == 0) {
596             memcpy((*ifTestEntry)->__ifTestOwner, vars->val.string, vars->val_len);
597             (*ifTestEntry)->_ifTestOwnerLength = vars->val_len;
598             (*ifTestEntry)->ifTestOwner = (*ifTestEntry)->__ifTestOwner;
599         }
600     }
601
602     if (response) snmp_free_pdu(response);
603
604     if (snmp_close(peer) == 0) {
605         return -5;
606     }
607
608     return 0;
609 }
610
611 int if_mib_mgr_get_ifRcvAddressEntry(struct snmp_session *s, ifRcvAddressEntry_t **ifRcvAddressEntry)
612 {
613     struct snmp_session *peer;
614     struct snmp_pdu *request, *response;
615     struct variable_list *vars;
616     int status;
617
618     request = snmp_pdu_create(SNMP_MSG_GETNEXT);
619     snmp_add_null_var(request, ifRcvAddressStatus, sizeof(ifRcvAddressStatus)/sizeof(oid));
620     snmp_add_null_var(request, ifRcvAddressType, sizeof(ifRcvAddressType)/sizeof(oid));
621
622     peer = snmp_open(s);
623     if (!peer) {
624         snmp_free_pdu(request);
625         return -1;
626     }
627
628     status = snmp_synch_response(peer, request, &response);
629     if (status != STAT_SUCCESS) {
630         if (response) snmp_free_pdu(response);
631         snmp_close(peer);
632         return -2;
633     }
634
635     *ifRcvAddressEntry = (ifRcvAddressEntry_t *) malloc(sizeof(ifRcvAddressEntry_t));
636     if (! *ifRcvAddressEntry) {
637         if (response) snmp_free_pdu(response);
638         snmp_close(peer);
639         return -4;
640     }
641
642     for (vars = response->variables; vars; vars = vars->next_variable) {
643         if (vars->name_length > sizeof(ifRcvAddressStatus)/sizeof(oid)
644             && memcmp(vars->name, ifRcvAddressStatus, sizeof(ifRcvAddressStatus)) == 0) {
645             (*ifRcvAddressEntry)->__ifRcvAddressStatus = *vars->val.integer;
646             (*ifRcvAddressEntry)->ifRcvAddressStatus = &((*ifRcvAddressEntry)->__ifRcvAddressStatus);
647         }
648         if (vars->name_length > sizeof(ifRcvAddressType)/sizeof(oid)
649             && memcmp(vars->name, ifRcvAddressType, sizeof(ifRcvAddressType)) == 0) {
650             (*ifRcvAddressEntry)->__ifRcvAddressType = *vars->val.integer;
651             (*ifRcvAddressEntry)->ifRcvAddressType = &((*ifRcvAddressEntry)->__ifRcvAddressType);
652         }
653     }
654
655     if (response) snmp_free_pdu(response);
656
657     if (snmp_close(peer) == 0) {
658         return -5;
659     }
660
661     return 0;
662 }
663
664