+ -
当前位置:首页 → 问答吧 → HP上net-snmp不在收到请求后不执行业务逻辑函数,AIX上面可以

HP上net-snmp不在收到请求后不执行业务逻辑函数,AIX上面可以

时间:2010-09-13

来源:互联网

HP上面一开始编译就遇到很多问题,因为我是用C++写的业务逻辑,而net-snmp是C的程序,结果是C程序调用C++动态库,导致编译能过,但是启动不了,最后这些问题都解决了
但是用snmpwalk发消息,收到Timeout: No Response from localhost,而net-snmp的日志中是显示接收到这个请求的:
Received SNMP packet(s) from UDP: [0.0.0.0]->[0.0.0.0]:0
  GETNEXT message
    -- IDEPAGENT-MIB::csidep
init_csidep(void)
{
    static oid NeId_oid[] = { 1,3,6,1,4,1,81000,2,103,2,2,1,1,1,1 };
    int iRet = 0;

    printf("11111111111111111111111111111111\n");
    fflush(stdout); --------------------------------------------------------------启动的时候这个能正常打屏出来


    iRet = netsnmp_register_scalar(
        netsnmp_create_handler_registration("NeId", handle_NeId,
                               NeId_oid, OID_LENGTH(NeId_oid),
                               HANDLER_CAN_RONLY
        ));
    printf("--------------%d-----------------\n", iRet);
    fflush(stdout); --------------------------------------------------------------------这个返回结果是0,也是成功的
}
int
handle_NeId(netsnmp_mib_handler *handler,
                          netsnmp_handler_registration *reginfo,
                          netsnmp_agent_request_info   *reqinfo,
                          netsnmp_request_info         *requests)
{

    printf("222222222222222222222222222222222222222222222222\n");
    fflush(stdout);
。。。。
}

用 snmpwalk -v 2c -c public localhost:10364         1.3.6.1.4.1.81000.2.103.2.2.1.1.1.1,上面那个“222222222222222222222222”的并没有打印出来,但是snmpd的日志却显示接收到请求了

各位大虾谁知道情况啊?

AIX上面是OK的。

作者: dnboy   发布时间: 2010-09-13

启动的时候你的MIB文件加载进去了吗?

作者: nmzqzw   发布时间: 2010-09-13

加载进去了,日志上面都能显示出来的
Received SNMP packet(s) from UDP: [0.0.0.0]->[0.0.0.0]:0
  GETNEXT message
    -- IDEPAGENT-MIB::NeId

Received 51 bytes from UDP: [0.0.0.0]->[0.0.0.0]:0
0000: 30 31 02 01  01 04 06 70  75 62 6C 69  63 A1 24 02    01.....public?.
0016: 04 04 EB 77  87 02 01 00  02 01 00 30  16 30 14 06    ..雡.......0.0..
0032: 10 2B 06 01  04 01 84 F8  68 02 67 02  02 01 01 01    .+.....鴋.g.....
0048: 01 05 00

作者: dnboy   发布时间: 2010-09-13

在启动的时候因为报错dlopen failed: '/usr/lib/pa20_64/libpthread.1' contains a static TLS reference to '__thread_specific_seg' defined in a d
ynamically loaded library '/usr/lib/pa20_64/libpthread.1'. Use +tls=dynamic to re-compile '/usr/lib/pa20_64/libpthread.1
'.

,所以先执行了这个export LD_PRELOAD="/usr/lib/pa20_64/libpthread.1:/lib/pa20_64/libcl.2",然后才启动可以的

不知道跟这个有没有关系,还是因为HP上的编译器太低了aCC: HP ANSI C++ B3910B A.03.50,最新的是A.03.90了

作者: dnboy   发布时间: 2010-09-13

相关阅读 更多