Chinaunix首页 | 论坛 | 博客
  • 博客访问: 735228
  • 博文数量: 769
  • 博客积分: 6000
  • 博客等级: 准将
  • 技术积分: 4985
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-15 16:37
文章分类

全部博文(769)

文章存档

2011年(1)

2008年(768)

我的朋友

分类:

2008-10-15 16:39:55

     在一个项目中使用了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)


 

[1]  

【责编:landy】

--------------------next---------------------

阅读(955) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~