Ich schreibe eine getBulkRequest-Funktion, die es mir ermöglichen soll, eine Liste von Informationen auf einmal anzufordern.Schreiben einer getBulkRequest-Funktion mit SNMPv2 und C++
Für jetzt möchte ich etwas Einfaches tun, mit dem GetBulkRequest sequentiell getNextRequest nur durch Setzen der "Non-Repetition" auf "0" in getBulkRequest.
- Ich schreibe das Format richtig?
- Für die OID, muss ich nur ONE Oid (das erste Element der Bulk) eingeben?
- Wenn ich eine Bulk-Anfrage ab dem angegebenen Oid und die folgenden 4 Items nach dem ersten bekommen möchte, setze ich einfach die "Max-Repetition" auf 5?
Dies ist das Format, das ich verwende, könnte mir jemand raten, ob ich es richtig oder nicht tue:
switch(pdyType) {
case PdyType::GET_BULK_REQUEST:
for (QStringList::ConstIterator iter = oids.begin(); iter != oids.end(); ++iter)
{
QByteArray keyHolder;
//value
keyHolder.push_front(QByteArray(1, 0x00));
keyHolder.push_front(QByteArray(1, DataType::DATA_NULL));
//object identifier
QByteArray temp = encodeoid(*iter);
keyHolder.push_front(temp);
keyHolder.push_front(encodeLengthField(temp.size()));
keyHolder.push_front(QByteArray(1, DataType::OBJECT_ID));
//varbind
keyHolder.push_front(encodeLengthField(keyHolder.size()));
keyHolder.push_front(QByteArray(1, DataType::SEQUENCE));
datagram.push_front(keyHolder);
}
//max-repetitions
datagram.push_front(QByteArray(1, 5);
datagram.push_front(QByteArray(1, 1);
datagram.push_front(QByteArray(1, DataType::INTEGER);
//varbind list
datagram.push_front(QByteArray(encodeLengthField(datagram.size());
datagram.push_front(QByteArray(1, DataType::SEQUENCE);
//non-repeaters
datagram.push_front(QByteArray(1, 0);
datagram.push_front(QByteArray(1, 1);
datagram.push_front(QByteArray(1, DataType::INTEGER);
//requestId
datagram.push_front(QByteArray(1, requestId));
datagram.push_front(QByteArray(1, 1);
datagram.push_front(QByteArray(1, DataType::INTEGER);
//pdu
datagram.push_front(QByteArray(encodeLengthField(datagram.size()));
datagram.push_front(QByteArray(1, (unsigned char)pduType);
//community string
datagram.push_front(QByteArray(community.toLocal8Bit()));
datagram.push_front(QByteArray(encodeLengthField(community.size());
datagram.push_front(QByteArray(1, DataType::OCTET_STRING);
//version
datagram.push_front(QByteArray(1, 0));
datagram.push_front(QByteArray(1, 1);
datagram.push_front(QByteArray(1, DataType::INTEGER);
//message type
datagram.push_front(QByteArray(encodeLengthField(datagram.size()));
datagram.push_front(QByteArray(1, DataType::SEQUENCE);
break;
default:
break;
}
return datagram;
Ist das Format korrekt für GetBulkRequest über QUdpSocket angegeben werden: : writeDatagram?
Ich hoffe, ich bin in der Lage, mein Problem klar zu formulieren. Da ich mir nicht sicher bin, was gerade los ist und versuche mehr zu lesen.
Irgendwelche Ratschläge/Vorschläge? Hilfe benötigt. – Cherple