本文整理汇总了C++中Pdu::set_notify_id方法的典型用法代码示例。如果您正苦于以下问题:C++ Pdu::set_notify_id方法的具体用法?C++ Pdu::set_notify_id怎么用?C++ Pdu::set_notify_id使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Pdu
的用法示例。
在下文中一共展示了Pdu::set_notify_id方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: unload
// unload the data into SNMP++ objects
int SnmpMessage::unload(Pdu &pdu, // Pdu object
OctetStr &community, // community object
snmp_version &version, // SNMP version #
OctetStr *engine_id, // optional v3
OctetStr *security_name, // optional v3
long int *security_model,
UdpAddress *from_addr,
Snmp *snmp_session)
{
pdu.clear();
if (!valid_flag)
return SNMP_CLASS_INVALID;
snmp_pdu *raw_pdu;
raw_pdu = snmp_pdu_create(0); // do a "snmp_free_pdu( raw_pdu)" before return
int status;
#ifdef _SNMPv3
OctetStr context_engine_id;
OctetStr context_name;
long int security_level = SNMP_SECURITY_LEVEL_NOAUTH_NOPRIV;
if ((security_model) && (security_name) && (engine_id) && (snmp_session)) {
status = v3MP::I->snmp_parse(snmp_session, raw_pdu,
databuff, (int)bufflen, *engine_id,
*security_name, context_engine_id, context_name,
security_level, *security_model, version, *from_addr);
if (status != SNMPv3_MP_OK) {
pdu.set_request_id( raw_pdu->reqid);
pdu.set_type( raw_pdu->command);
snmp_free_pdu( raw_pdu);
return status;
}
pdu.set_context_engine_id(context_engine_id);
pdu.set_context_name(context_name);
pdu.set_security_level(security_level);
pdu.set_message_id(raw_pdu->msgid);
pdu.set_maxsize_scopedpdu(raw_pdu->maxsize_scopedpdu);
}
else {
#endif
unsigned char community_name[MAX_LEN_COMMUNITY + 1];
int community_len = MAX_LEN_COMMUNITY + 1;
status = snmp_parse(raw_pdu, databuff, (int) bufflen,
community_name, community_len, version);
if (status != SNMP_CLASS_SUCCESS) {
snmp_free_pdu(raw_pdu);
return status;
}
community.set_data( community_name, community_len);
#ifdef _SNMPv3
}
#endif
// load up the SNMP++ variables
pdu.set_request_id(raw_pdu->reqid);
pdu.set_error_status((int) raw_pdu->errstat);
pdu.set_error_index((int) raw_pdu->errindex);
pdu.set_type( raw_pdu->command);
// deal with traps a little different
if ( raw_pdu->command == sNMP_PDU_V1TRAP) {
// timestamp
TimeTicks timestamp;
timestamp = raw_pdu->time;
pdu.set_notify_timestamp( timestamp);
// set the agent address
IpAddress agent_addr(inet_ntoa(raw_pdu->agent_addr.sin_addr));
if (agent_addr != "0.0.0.0")
{
pdu.set_v1_trap_address(agent_addr);
LOG_BEGIN(DEBUG_LOG | 4);
LOG("SNMPMessage: Trap address of received v1 trap");
LOG(agent_addr.get_printable());
LOG_END;
}
// set enterprise, notifyid
Oid enterprise;
if (raw_pdu->enterprise_length >0) {
for (int i=0; i< raw_pdu->enterprise_length; i++) {
enterprise += (int) (raw_pdu->enterprise[i]);
}
pdu.set_notify_enterprise(enterprise);
}
switch (raw_pdu->trap_type) {
case 0:
pdu.set_notify_id(coldStart);
break;
case 1:
pdu.set_notify_id(warmStart);
break;
//.........这里部分代码省略.........
示例2: main
//.........这里部分代码省略.........
cout << "Invalid target" << endl;
return(1);
}
Pdu pdu;
Vb vb;
if ( strcmp(req_str, "get") == 0 ) {
Vb vbl[NUM_SYS_VBS];
vbl[0].set_oid(sysDescr);
vbl[1].set_oid(sysObjectID);
vbl[2].set_oid(sysUpTime);
vbl[3].set_oid(sysContact);
vbl[4].set_oid(sysName);
vbl[5].set_oid(sysLocation);
// vbl[6].set_oid(sysServices);
cout << "Send a GET-REQUEST to: " << ipAddr.get_printable() << endl;
if ( ! oid_str ) {
if ( strcmp(genAddrStr,"localhost" ) == 0 ||
strcmp(genAddrStr, "127.0.0.1") == 0 ) {
pdu.set_vblist(vbl, NUM_SYS_VBS);
} else {
for (int i=0; i<NUM_SYS_VBS; i++)
pdu += vbl[i];
}
}
else {
Oid req_oid(oid_str);
if ( ! req_oid.valid() ) {
cout << "Request oid constructor failed for:" << oid_str << endl;
return(1);
}
vb.set_oid(req_oid);
pdu += vb;
}
status = snmp.get(pdu, target);
if (status) {
cout << "Failed to issue SNMP Get: (" << status << ") "
<< snmp.error_msg(status) << endl;
return(1);
}
else {
cout << "Issued get successfully" << endl;
int vbcount = pdu.get_vb_count();
if ( vbcount == NUM_SYS_VBS ) {
pdu.get_vblist(vbl, vbcount);
for ( int i=0; i<vbcount ; i++ ) {
cout << vbl[i].get_printable_oid() << " : " <<
vbl[i].get_printable_value() << endl;
}
} else {
for ( int i=0; i<vbcount ; i++ ) {
pdu.get_vb(vb, i);
cout << vb.get_printable_oid() << " : " <<
vb.get_printable_value() << endl;
}
}
}
}
else if ( strcmp(req_str, "trap") == 0 ) {
cout << "Send a TRAP to: " << ipAddr.get_printable() << endl;
if ( ! oid_str )
oid_str = dflt_trp_oid;
Oid notify_oid(oid_str);
if ( ! notify_oid.valid() ) {
cout << "Notify oid constructor failed for:" << oid_str << endl;
return(1);
}
pdu.set_notify_id(notify_oid);
// Use a simple payload
vb.set_oid(sysLocation);
vb.set_value("This is a test");
pdu += vb;
status = snmp.trap(pdu, target);
if (status) {
cout << "Failed to issue SNMP Trap: (" << status << ") "
<< snmp.error_msg(status) << endl;
return(1);
} else {
cout << "Success" << endl;
}
}
else {
cout << "Invalid SNMP operation: " << req_str << endl ;
cout << "Usage: " << argv[0] << " hostname [get | trap]" << endl;
return(1);
}
Snmp::socket_cleanup(); // Shut down socket subsystem
return(0);
}