I have the most basic, simple starter sub-agent which simply outputs a
hard-coded string (for now), which works fine when compiled as a C module:
# net-snmp-config --compile-subagent Ctest sinIDENT.c
(compiles cleanly)
# ./Ctest
# snmpget -v 1 -c public localhost sinIDENT.0
# SIN-TOP-LEVEL-0::sinIDENT.0 = STRING: *ZQXA*
(all's well)
(kill Ctest)
HOWEVER, if I rename that same module to sinIDENT.cpp and compile:
# net-snmp-config --compile-subagent CppTest --cflags -lstdc++ sinIDENT.cpp
(compiles cleanly)
# ./CppTest
# snmpget -v 1 -c public localhost sinIDENT.0
*Error in packet*
Reason: (noSuchName) There is no such variable name in this MIB.
Failed object: NAVCAN-CNS-SIN-TOP-LEVEL-0::sinIDENT.0
My first thought was that there was fname mangling going on so I made sure
that the header prevents that:
#ifndef SINIDENT_H
#define SINIDENT_H*/
#ifdef __cplusplus
extern "C" {
#endif
/* function declarations */
void init_sinIDENT(void);
Netsnmp_Node_Handler handle_sinIDENT;
#ifdef __cplusplus
}
#endif
#endif /* SINIDENT_H */
And double checked the names:
# nm Ctest | grep sin
08049770 T* handle_sinIDENT*
080497c0 T* init_sinIDENT*
#
# nm CppTest |grep sin (showing mangled non-C-calling-convention)
08049b80 t _GLOBAL__I_init_sinIDENT
0804b080 r _ZZ13init_sinIDENTE5C.161
0804b060 r _ZZ13init_sinIDENTE8__func__
08049c60 T *handle_sinIDENT*
08049bb0 T *init_sinIDENT*
I have NO IDEA why the C++ version returns a failure. Please Help, I don't
want to be restricted to 20 year old C!
Thanks,
Ian
------------------------------------------------------------------------------
October Webinars: Code for Performance
Free Intel webinars can help you accelerate application performance.
Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from
the latest Intel processors and coprocessors. See abstracts and register >
http://pubads.g.doubleclick.net/gampad/clk?id=60134791&iu=/4140/ostg.clktrk
_______________________________________________
Net-snmp-coders mailing list
Net-snmp-coders@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/net-snmp-coders