SNMP TRAP

今天写了一个关于snmp发trap命令的简单代码,仅供参考 

#include <stdlib.h>
#include <stdio.h>
#include <net-snmp/net-snmp-config.h>
#include <net-snmp/types.h>
#include <net-snmp/net-snmp-includes.h>
#include <net-snmp/agent/agent_trap.h>
#include <net-snmp/agent/snmp_agent.h>
#include <net-snmp/agent/agent_callbacks.h>
#include <string.h>

#include"snmptrap.h"

int snmptrap(trap_msg_s *p_data)
{
 oid      id_oid[MAX_OID_LEN];
 size_t      id_len = MAX_OID_LEN;


 struct snmp_session session;
 snmp_sess_init(&session);

 session.version   = SNMP_VERSION_2c;
 session.peername   = p_data->ip_address;
 session.community   = (unsigned char*)"dcpublic";
 session.community_len  = strlen((char*)session.community);
 session.retries   = p_data->retries;
 session.timeout   = p_data->timeout;
 session.sessid   = p_data->sessid;

  struct snmp_session *ss;
  ss = snmp_open(&session);
  if (ss == NULL)
  {
   return -1;
  }

  struct snmp_pdu *pdu;
  pdu = snmp_pdu_create(SNMP_MSG_TRAP2);

 if(!snmp_parse_oid(p_data->point_oid, id_oid, &id_len))
 {
  snmp_log(LOG_ERR, "snmp_parse_oid error!\n");
  return -1;
 }

 int status = snmp_add_var(pdu, id_oid,id_len,p_data->types,p_data->values);
 printf("status = %d\n",status);
 status = snmp_send(ss,pdu);
 printf("status = %d\n",status);
 snmp_close(ss);
 return 0;
}

 

 

 

你可能感兴趣的:(struct,session,null)