hi there
hi there
I have been using snmpset in a Win10 command line to set variables in
example table netSnmpIETFWGTable and this works perfectly as follows:
C:\usr\bin>snmpset -v 2c -c nsCommStrRW 127.1.1.1
NET-SNMP-EXAMPLES-MIB::nsIETFWGChair1.\"wg1\" s jblog1
NET-SNMP-EXAMPLES-MIB::nsIETFWGChair2.\"wg1\" s jsnow1
NET-SNMP-EXAMPLES-MIB::nsIETFWGChair1."wg1" = STRING: "jblog1"
NET-SNMP-EXAMPLES-MIB::nsIETFWGChair2."wg1" = STRING: "jsnow1"
C:\usr\bin>snmptable -v 2c -c nsCommStrRW -Cc 12 -Cb -CB 127.1.1.1
NET-SNMP-EXAMPLES-MIB::netSnmpIETFWGTable
SNMP table: NET-SNMP-EXAMPLES-MIB::netSnmpIETFWGTable
Name Chair1 Chair2
"wg1" "jblog1" "jsnow1"
I have a requirement however to run the set command within an application
and have done this by compiling the snmpset.c (net-snmp-5.8) source listing
into a test application as follows:
1) int snmpset(int argc, char *argv[]) //rename snmpset.c main function
2) static int quiet = 1; //enable quiet mode
3) create a new c++ main driver function that runs snmpset loop:
#include <iostream>
#include <cstring>
#include <vector>
#include <sstream>
#include <chrono>
#include <thread>
extern "C"{
int snmpset(int argc, char *argv[]);
}
std::string int_to_string(int i){
std::stringstream ss;
ss << i;
return (ss.str());
}
int main()
{
int argc = 9, result = 0 ;
std::string comm, Wg, WgValue, Chair1, Chair2, Chair1Value,
Chair2Value;
Wg = "NET-SNMP-EXAMPLES-MIB::nsIETFWGName.\"wg1\"";
char wg_array [Wg.size()+1];
strcpy(wg_array, Wg.c_str());
WgValue = "wg1";
char wgValue_array [comm.size()+1];
strcpy(wgValue_array, WgValue.c_str());
comm = "nsCommStrRW";
char comm_array [comm.size()+1];
strcpy(comm_array, comm.c_str());
char* snmp_set [] = {"snmpset.exe","-v", "2c", "-c", comm_array, "
127.1.1.1:161", wg_array, "s", wgValue_array};
result = snmpset (argc, snmp_set );
if (result){
std::cout <<"snmpset fail: "<<result <<"\n";
}
Chair1 = "NET-SNMP-EXAMPLES-MIB::nsIETFWGChair1.\"wg1\"";
char chair1_array [Chair1.size()+1];
strcpy(chair1_array, Chair1.c_str());
Chair2 = "NET-SNMP-EXAMPLES-MIB::nsIETFWGChair2.\"wg1\"";
char chair2_array [Chair2.size()+1];
strcpy(chair2_array, Chair2.c_str());
argc = 12;
while(true){
for (int i =0; i<10000000; ++i)
{
comm = "nsCommStrRW";
char comm_array [comm.size()+1];
strcpy(comm_array, comm.c_str());
Chair1Value = "jblog" + int_to_string(i);
char Chair1Value_array [Chair1Value.size()+1];
strcpy(Chair1Value_array, Chair1Value.c_str());
Chair2Value = "jsnow" + int_to_string(i);;
char Chair2Value_array [Chair2Value.size()+1];
strcpy(Chair2Value_array, Chair2Value.c_str());
char* snmp_set [] = {"snmpset.exe","-v", "2c", "-c",
comm_array, "127.1.1.1:161", chair1_array, "s", Chair1Value_array,
chair2_array, "s", Chair2Value_array};
result = snmpset (argc, snmp_set );
if (result){
std::cout <<"snmpset fail: "<<result <<"\n";
break;
}
std::this_thread::sleep_for(std::chrono::milliseconds(50));
}
}
return 0;
}
The program updates Chair1 and Chair2 as expected as shown by issueing
consecutive snmptable commands:
C:\usr\bin>snmptable -v 2c -c nsCommStrRW -Cc 12 -Cb -CB 127.1.1.1
NET-SNMP-EXAMPLES-MIB::netSnmpIETFWGTable
SNMP table: NET-SNMP-EXAMPLES-MIB::netSnmpIETFWGTable
Name Chair1 Chair2
"wg1" "jblog88" "jsnow88"
C:\usr\bin>snmptable -v 2c -c nsCommStrRW -Cc 12 -Cb -CB 127.1.1.1
NET-SNMP-EXAMPLES-MIB::netSnmpIETFWGTable
SNMP table: NET-SNMP-EXAMPLES-MIB::netSnmpIETFWGTable
Name Chair1 Chair2
"wg1" "jblog132" "jsnow132"
C:\usr\bin>snmptable -v 2c -c nsCommStrRW -Cc 12 -Cb -CB 127.1.1.1
NET-SNMP-EXAMPLES-MIB::netSnmpIETFWGTable
SNMP table: NET-SNMP-EXAMPLES-MIB::netSnmpIETFWGTable
Name Chair1 Chair2
"wg1" "jblog626" "jsnow626"
The problem however is that the application appears to consume memory each
time snmpset is called.
Here are some stats i have collected.
netSnmpIETFWGTable memory usage:
Time Mem Usage(Kbytes) Program Loops
09:00 1712 0
09:30 2960 25332
10:00 4624 55858
10:30 6256 85844
So after running for approx 1.5 hours the application had consumed approx
4MBytes
i need the application to run continuously therefore any memory used during
snmpset function call needs to be released on return.
Any help much appreciated.
Cathal
_______________________________________________
Net-snmp-users mailing list
[email protected]
Please see the following page to unsubscribe or change other options:
https://lists.sourceforge.net/lists/listinfo/net-snmp-users