Bonjour,
Je développe pour le moment une petite application C qui permet de lire des informations contenues dans la Mib via SNMP.
J'ai pour le moment un code qui est sensé le faire, mais j'ai un problème pour la récupération des résultats.
Tout d'abord voici ma fonction qui retourne les résultats à afficher :
Je n'ai que le " case ASN_OCTETSTRING" dans l'exemple car c'est celui que j'essaie de fairefonctionner pour le moment.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 char *SnmpUtilPrintAsnAny2(AsnAny *any) { char *buffer = new char[300]; unsigned int i; sscanf(buffer, "(%p)\n", any); switch (any->asnType) { case ASN_OCTETSTRING: { sscanf(buffer, "String "); for (i = 1; i < any->asnValue.string.length; i++) sscanf(buffer, "%c", any->asnValue.string.stream[i]); sscanf(buffer, "\n"); return buffer; } default: { sscanf(buffer, "Invalid type %d\n", any->asnType); return buffer; } } }
Au cas ou, voila toujours le code avant l'appel de ma fonction si ca peut aider a y voir plus clair.
Donc, mon problème est que la fonction "SnmpUtilPrintAsnAny2" qui doit retourner le buffer avec les résultats, ben ne retourne rien. Et j'arrive pas a voir pourquoi :s
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 LPSNMP_MGR_SESSION session = SnmpMgrOpen("127.0.0.1", "public", 3000, 10); if (session == NULL) Label1->Caption="Erreur"; else Label1->Caption="Valides"; AsnObjectIdentifier OID; LPSTR oidstring = NULL; oidstring=".1.3.6.1.2.1.1.1"; //SnmpMgrStrToOid Converti le string en OID SnmpMgrStrToOid(oidstring, &OID) ; RFC1157VarBindList variableBindingList; variableBindingList.len = 1; //allocation de mémoire pour la demande sur la MIB variableBindingList.list =(RFC1157VarBind*)(SnmpUtilMemAlloc(sizeof(RFC1157VarBind))) ; variableBindingList.list[0].name = OID; AsnInteger errorStatus=0; AsnInteger errorIndex=0; variableBindingList.list[0].value.asnType = ASN_NULL; if (SnmpMgrRequest(session, ASN_RFC1157_GETNEXTREQUEST, &variableBindingList, &errorStatus, &errorIndex)==0) Label1->Caption="Erreur"; else Label1->Caption="Valide"; Label1->Caption = SnmpUtilPrintAsnAny2(&variableBindingList.list[0].value);
Si quelqu'un avait une idée, je suis preneur.
Merci d'avance.
Edit: désolé pour le double post, j'ai du crée en pensant prévisualiser
Partager