当前位置导航:炫浪网>>网络学院>>编程开发>>C++教程>>C++进阶与实例

使用net-snmp API编程

     在一个项目中使用了Redback SMS10000 的接入服务器,作为附加要求,需要做一个snmp的接口程序,目的是起发送一个subscriber reauth 的 snmp 包给接入服务器;

      由于snmp的例程相对较少,所以在此截选程序中的snmp 相关部分以后,做一个注脚,记录下来。

      程序使用了net-snmp 的API,所以系统要预先安装net-snmp;

      编译时需要使用带入netsnmp的行命令:


    gcc -o redweb redweb.c -lkstat -lm -lsocket -ladm -lnetsnmp -lcrypto

      不要更多罗嗦了,都写在程序里了。所谓知识无价值。


    static char snmpreauth[]=".1.3.6.1.4.1.2352.2.14.1.2.1.1.";

    strUCt snmp_session session, *ss;
    struct snmp_pdu *response;
    struct snmp_pdu *pdu;

    char snmpcommunity[32];
    char snmpstr[256];
    char tmpstr[128];
    char *endptr;

    oid name[512];
    int name_length;
    int cnt,id=0;
    int snmpsetvalue=1;

    init_mib();
    add_mibdir("/opt/weblogin/mibs");
    // include Redback Mibs file


    snmp_sess_init(&session);
    session.version=SNMP_VERSION_1;
    session.peername=strdup(data.nas_address);
    session.community=strdup(snmpcommunity);
    session.community_len=strlen(session.community);
    session.retries=0;
    session.timeout=12000;
    session.sessid=strtol(data.timeid, &endptr, 0);

    SOCK_STARTUP;


    /* Macro
    * open an SNMP session
    */

    ss = snmp_open(&session);
    if (ss == NULL) {
    /*
    * diagnose snmp_open errors with the input netsnmp_session pointer
    */
    snmp_sess_perror("snmptable", &session);
    SOCK_CLEANUP;
    }


    /*
    * create PDU for SET request and add object names and values to request
    */

    pdu = (struct snmp_pdu *)snmp_pdu_create(SNMP_MSG_SET);
    if(pdu==NULL)


 

共2页 首页 上一页 1 2 下一页 尾页 跳转到
上一篇:c++ 的11个要点 下一篇:AT&T/x86/asm语法
相关内容
赞助商链接