4 #include "error_code.h"
7 #include "netsnmp_bridge.h"
9 #define NIC_DEFAULT "eth0"
10 #define ADDR_DEFAULT "127.0.0.1"
11 #define PORT_DEFAULT (60162)
12 #define INTERVAL_DEFAULT (1000)
13 #define SLEEPNANOTIME (1000000)
17 * l7ag_subagent class constructor
19 l7ag_subagent::l7ag_subagent()
24 dispatcher = new l7ag_dispatcher(&msg_queue, &trap_queue);
25 messenger = new MessengerClient(&msg_queue);
31 * l7ag_subagent class destructor
33 l7ag_subagent::~l7ag_subagent()
43 l7ag_subagent::start()
47 req.tv_nsec = SLEEPNANOTIME;
52 // convert int to string
55 ss << snmpparam.portno;
58 messenger->setEndpoint(snmpparam.address.c_str(), port.c_str());
63 // start dispatcher thread
66 netsnmp_ds_set_boolean(NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_AGENT_ROLE, 1);
67 init_agent("l7snmpagent");
68 init_netsnmp_bridge(messenger);
69 init_snmp("l7snmpagent");
73 agent_check_and_process(0); // non-blocking
82 if (!dispatcher->get_TrapQueue()->empty()) {
84 struct l7_status *stat = l7ag_store_mibdata::getInstance().getStatmibdata();
85 strncpy(stat->message, dispatcher->get_TrapQueue()->front().message.c_str(), DISPLAYSTRING_LEN);
86 l7ag_store_mibdata::getInstance().setStatmibdata(*stat);
88 send_um7MessageAlert_trap();
89 dispatcher->get_TrapQueue()->pop();
92 int ret = nanosleep(&req, NULL);
94 break; // nanosleep failed
107 l7ag_subagent::stop()
113 l7ag_subagent::reload_config()
115 l7vs::Parameter param;
116 l7vs::error_code err;
119 snmpparam.nic = param.get_string(l7vs::PARAM_COMP_SNMPAGENT, "nic", err);
121 snmpparam.nic = NIC_DEFAULT;
124 snmpparam.address = param.get_string(l7vs::PARAM_COMP_SNMPAGENT, "ip_addr", err);
126 snmpparam.address = ADDR_DEFAULT;
128 snmpparam.portno = param.get_int(l7vs::PARAM_COMP_SNMPAGENT, "port", err);
130 snmpparam.portno = PORT_DEFAULT;
133 snmpparam.interval = param.get_int(l7vs::PARAM_COMP_SNMPAGENT, "interval", err);
135 snmpparam.interval = INTERVAL_DEFAULT;
138 snmpparam.status = param.get_int(l7vs::PARAM_COMP_SNMPAGENT, "status", err);
140 snmpparam.status = 0;
148 l7ag_subagent::load_loglevel()
150 l7vs::Parameter param;
151 l7vs::error_code err;
154 snmpparam.loglevel.clear();
156 tmpstr = param.get_string(l7vs::PARAM_COMP_LOGGER, "snmpagent_start_stop", err);
158 snmpparam.loglevel.insert(
159 std::pair<l7vs::LOG_CATEGORY_TAG, l7vs::LOG_LEVEL_TAG>(l7vs::LOG_CAT_SNMPAGENT_START_STOP,
160 levelstring_map[tmpstr]));
162 snmpparam.loglevel.insert(
163 std::pair<l7vs::LOG_CATEGORY_TAG, l7vs::LOG_LEVEL_TAG>(l7vs::LOG_CAT_SNMPAGENT_START_STOP,
167 tmpstr = param.get_string(l7vs::PARAM_COMP_LOGGER, "snmpagent_manager_receive", err);
169 snmpparam.loglevel.insert(
170 std::pair<l7vs::LOG_CATEGORY_TAG, l7vs::LOG_LEVEL_TAG>(l7vs::LOG_CAT_SNMPAGENT_MANAGER_RECEIVE,
171 levelstring_map[tmpstr]));
173 snmpparam.loglevel.insert(
174 std::pair<l7vs::LOG_CATEGORY_TAG, l7vs::LOG_LEVEL_TAG>(l7vs::LOG_CAT_SNMPAGENT_MANAGER_RECEIVE,
178 tmpstr = param.get_string(l7vs::PARAM_COMP_LOGGER, "snmpagent_manager_send", err);
180 snmpparam.loglevel.insert(
181 std::pair<l7vs::LOG_CATEGORY_TAG, l7vs::LOG_LEVEL_TAG>(l7vs::LOG_CAT_SNMPAGENT_MANAGER_SEND,
182 levelstring_map[tmpstr]));
184 snmpparam.loglevel.insert(
185 std::pair<l7vs::LOG_CATEGORY_TAG, l7vs::LOG_LEVEL_TAG>(l7vs::LOG_CAT_SNMPAGENT_MANAGER_SEND,
189 tmpstr = param.get_string(l7vs::PARAM_COMP_LOGGER, "snmpagent_l7vsd_receive", err);
191 snmpparam.loglevel.insert(
192 std::pair<l7vs::LOG_CATEGORY_TAG, l7vs::LOG_LEVEL_TAG>(l7vs::LOG_CAT_SNMPAGENT_L7VSD_RECEIVE,
193 levelstring_map[tmpstr]));
195 snmpparam.loglevel.insert(
196 std::pair<l7vs::LOG_CATEGORY_TAG, l7vs::LOG_LEVEL_TAG>(l7vs::LOG_CAT_SNMPAGENT_L7VSD_RECEIVE,
200 tmpstr = param.get_string(l7vs::PARAM_COMP_LOGGER, "snmpagent_l7vsd_send", err);
202 snmpparam.loglevel.insert(
203 std::pair<l7vs::LOG_CATEGORY_TAG, l7vs::LOG_LEVEL_TAG>(l7vs::LOG_CAT_SNMPAGENT_L7VSD_SEND,
204 levelstring_map[tmpstr]));
206 snmpparam.loglevel.insert(
207 std::pair<l7vs::LOG_CATEGORY_TAG, l7vs::LOG_LEVEL_TAG>(l7vs::LOG_CAT_SNMPAGENT_L7VSD_SEND,
211 tmpstr = param.get_string(l7vs::PARAM_COMP_LOGGER, "snmpagent_logger", err);
213 snmpparam.loglevel.insert(
214 std::pair<l7vs::LOG_CATEGORY_TAG, l7vs::LOG_LEVEL_TAG>(l7vs::LOG_CAT_SNMPAGENT_LOGGER,
215 levelstring_map[tmpstr]));
217 snmpparam.loglevel.insert(
218 std::pair<l7vs::LOG_CATEGORY_TAG, l7vs::LOG_LEVEL_TAG>(l7vs::LOG_CAT_SNMPAGENT_LOGGER,
222 tmpstr = param.get_string(l7vs::PARAM_COMP_LOGGER, "snmpagent_parameter", err);
224 snmpparam.loglevel.insert(
225 std::pair<l7vs::LOG_CATEGORY_TAG, l7vs::LOG_LEVEL_TAG>(l7vs::LOG_CAT_SNMPAGENT_PARAMETER,
226 levelstring_map[tmpstr]));
228 snmpparam.loglevel.insert(
229 std::pair<l7vs::LOG_CATEGORY_TAG, l7vs::LOG_LEVEL_TAG>(l7vs::LOG_CAT_SNMPAGENT_PARAMETER,
235 l7ag_subagent::loglevelmap_init()
238 levelstring_map.clear();
239 levelstring_map.insert(std::pair<std::string, l7vs::LOG_LEVEL_TAG>("debug", l7vs::LOG_LV_DEBUG));
240 levelstring_map.insert(std::pair<std::string, l7vs::LOG_LEVEL_TAG>("info", l7vs::LOG_LV_INFO));
241 levelstring_map.insert(std::pair<std::string, l7vs::LOG_LEVEL_TAG>("warn", l7vs::LOG_LV_WARN));
242 levelstring_map.insert(std::pair<std::string, l7vs::LOG_LEVEL_TAG>("error", l7vs::LOG_LV_ERROR));
243 levelstring_map.insert(std::pair<std::string, l7vs::LOG_LEVEL_TAG>("fatal", l7vs::LOG_LV_FATAL));