Добрый всем. Активно использую net-snmp в своем проекте (уравление сетью). Проект на c++, поэтому пришлось писать обертку для net-snmp на c++ (готовых не нашел). Кое какие наработки по враперу есть, синхронные get, walk, bulkwalk, set, на днях начал тестить асинхронный bulkwalk (результаты, для меня, поразительные по скорости опросов). Вопрос собсно в том, что хочется поделиться наработками. Хз нужна еще кому то эта функциональность или нет, если нет то по тихому продолжу сам. Может кто-то пишет что-то подобное, можно скооперироваться и т.д.
з.ы. шарить код пока нет желания, ибо стыдно)) сначала хочется получить рекомендации, исправить глупости и т.д.
как-то так)
примеры использования
bool Equipment_managed::getSysUpTime()
{
Snmp snmp(ip_address_, "public");
if (!snmp.get(".1.3.6.1.2.1.1.3.0", m_sysUpTime)){
m_log.back() += "ERROR";
return false;
}
return true;
}
bool DES_30xx::setVlan(const Vlan &vlan, bool)
{
m_log.push_back("Setting vlan... ");
Snmp snmp(ip_address_, "private");
Oid dot1qVlanStaticName = Oid(".1.3.6.1.2.1.17.7.1.4.3.1.1") + vlan.tag();
Oid dot1qVlanStaticEgressPorts = Oid(".1.3.6.1.2.1.17.7.1.4.3.1.2") + vlan.tag();
Oid dot1qVlanForbiddenEgressPorts = Oid(".1.3.6.1.2.1.17.7.1.4.3.1.3") + vlan.tag();
Oid dot1qVlanStaticUntaggedPorts = Oid(".1.3.6.1.2.1.17.7.1.4.3.1.4") + vlan.tag();
Oid dot1qVlanStaticRowStatus = Oid(".1.3.6.1.2.1.17.7.1.4.3.1.5") + vlan.tag();
if (vlans().exist(vlan.tag())){
// существует
Variables modifyVlan;
modifyVlan.add(dot1qVlanStaticName + vlan.tag(), vlan.name());
modifyVlan.add(dot1qVlanStaticEgressPorts, vlan.ports(portTagged));
modifyVlan.add(dot1qVlanStaticUntaggedPorts + tag;
modifyVlan.add(dot1qVlanStaticRowStatus + vlan.tag(), 4);
if (!snmp.set(modifyVlan)){
m_log.back() += "ERROR: cannot modify vlan";
return false;
}
} else {
// не существует
Variables createVlan;
createVlan.add(dot1qVlanStaticName, vlan.name());
createVlan.add(dot1qVlanStaticEgressPorts, vlan.portMask(portTagged, 32));
createVlan.add(dot1qVlanForbiddenEgressPorts;
createVlan.add(dot1qVlanStaticRowStatus, 4); // create
if (!snmp.set(createVlan)){
m_log.back() += "ERROR: cannot create vlan";
return false;
}
}
m_log.back() += "OK";
return true;
}
Здравствуйте, prog_nt, Вы писали:
_>Добрый всем. Активно использую net-snmp в своем проекте (уравление сетью). Проект на c++, поэтому пришлось писать обертку для net-snmp на c++ (готовых не нашел).
Разве
это не оно?