3 #include "l7vs_snmpbridge.h"
4 #include "logger_wrapper.h"
5 #include "parameter_wrapper.h"
6 #include "l7ag_parameter.h"
8 #define NIC_DEFAULT "eth0"
9 #define ADDR_DEFAULT "127.0.0.1"
10 #define PORT_DEFAULT 60162
11 #define INTERVAL_DEFAULT 1000
15 static std::map<LOG_CATEGORY_TAG,std::string> snmp_loglevel_map;
16 static std::map<std::string,LOG_LEVEL_TAG> levelstring_map;
18 struct l7ag_parameter snmpparam;
22 static int snmpbridge_send_message();
24 static void load_config();
25 static void load_loglevel();
31 int l7vs_snmpbridge_initialize()
36 snmp_loglevel_map.clear();
37 snmp_loglevel_map.insert( std::pair<LOG_CATEGORY_TAG,std::string>( LOG_CAT_SNMPAGENT_START_STOP, "snmpagent_start_stop" ) );
38 snmp_loglevel_map.insert( std::pair<LOG_CATEGORY_TAG,std::string>( LOG_CAT_SNMPAGENT_MANAGER_RECEIVE, "snmpagent_manager_receive" ) );
39 snmp_loglevel_map.insert( std::pair<LOG_CATEGORY_TAG,std::string>( LOG_CAT_SNMPAGENT_MANAGER_SEND, "snmpagent_manager_send" ) );
40 snmp_loglevel_map.insert( std::pair<LOG_CATEGORY_TAG,std::string>( LOG_CAT_SNMPAGENT_L7VSD_RECEIVE, "snmpagent_l7vsd_receive" ) );
41 snmp_loglevel_map.insert( std::pair<LOG_CATEGORY_TAG,std::string>( LOG_CAT_SNMPAGENT_L7VSD_SEND, "snmpagent_l7vsd_send" ) );
42 snmp_loglevel_map.insert( std::pair<LOG_CATEGORY_TAG,std::string>( LOG_CAT_SNMPAGENT_LOGGER, "snmpagent_logger" ) );
43 snmp_loglevel_map.insert( std::pair<LOG_CATEGORY_TAG,std::string>( LOG_CAT_SNMPAGENT_PARAMETER, "snmpagent_parameter" ) );
45 levelstring_map.clear();
46 levelstring_map.insert( std::pair<std::string,LOG_LEVEL_TAG>("debug",LOG_LV_DEBUG) );
47 levelstring_map.insert( std::pair<std::string,LOG_LEVEL_TAG>("info",LOG_LV_INFO) );
48 levelstring_map.insert( std::pair<std::string,LOG_LEVEL_TAG>("warn",LOG_LV_WARN) );
49 levelstring_map.insert( std::pair<std::string,LOG_LEVEL_TAG>("error",LOG_LV_ERROR) );
50 levelstring_map.insert( std::pair<std::string,LOG_LEVEL_TAG>("fatal",LOG_LV_FATAL) );
73 void l7vs_snmpbridge_finalize()
75 //AgentとのTCP接続をcloseする
77 //ListenSocketをcloseする
85 * @param[in] TRAPID_TAG Trap ID
86 * @param[in] *message Trap message
89 int l7vs_snmpbridge_send_trap( TRAPID_TAG trapid, char* message )
98 retval = snmpbridge_send_message();
107 void l7vs_snmpbridge_reload_config()
113 retval = snmpbridge_send_message();
122 int l7vs_snmpbridge_change_loglevel( LOG_CATEGORY_TAG snmp_log_category, LOG_LEVEL_TAG loglevel )
126 if( snmpparam.loglevel.end() != snmpparam.loglevel.find( snmp_log_category ) ){
131 retval = snmpbridge_send_message();
134 snmpparam.loglevel.find( snmp_log_category )->second = loglevel;
147 int l7vs_snmpbridge_change_loglevel_allcategory( LOG_LEVEL_TAG loglevel )
155 retval = snmpbridge_send_message();
158 for( std::map<LOG_CATEGORY_TAG,LOG_LEVEL_TAG>::iterator it = snmpparam.loglevel.begin(); it != snmpparam.loglevel.end(); ++it ){
159 it->second = loglevel;
171 int l7vs_snmpbridge_send_mibcollection()
179 retval = snmpbridge_send_message();
188 int l7vs_snmpbridge_get_connectionstate()
193 retval = snmpparam.status;
202 LOG_LEVEL_TAG l7vs_snmpbridge_get_loglevel( LOG_CATEGORY_TAG snmp_log_category )
204 LOG_LEVEL_TAG level = LOG_LV_NONE;
205 if( snmpparam.loglevel.end() != snmpparam.loglevel.find( snmp_log_category ) ){
206 level = snmpparam.loglevel.find( snmp_log_category )->second;
214 int l7vs_snmpbridge_callback( l7vs_iomux* iom )
224 static int snmpbridge_send_message()
234 static void load_config()
238 if( parameter_is_char_exist( PARAM_COMP_SNMPAGENT, "nic" ) ){
239 snmpparam.nic = parameter_get_char_value( PARAM_COMP_SNMPAGENT, "nic" );
241 snmpparam.nic = NIC_DEFAULT;
244 if( parameter_is_char_exist( PARAM_COMP_SNMPAGENT, "ip_addr" ) ){
245 snmpparam.address = parameter_get_char_value( PARAM_COMP_SNMPAGENT, "ip_addr" );
247 snmpparam.address = ADDR_DEFAULT;
249 if( parameter_is_int_exist( PARAM_COMP_SNMPAGENT, "port" ) ){
250 snmpparam.portno = parameter_get_int_value( PARAM_COMP_SNMPAGENT, "port" );
252 snmpparam.portno = PORT_DEFAULT;
257 if( parameter_is_int_exist( PARAM_COMP_SNMPAGENT, "interval" ) ){
258 snmpparam.interval = parameter_get_int_value( PARAM_COMP_SNMPAGENT, "interval" );
260 snmpparam.interval = INTERVAL_DEFAULT;
262 if( parameter_is_int_exist( PARAM_COMP_SNMPAGENT, "status" ) ){
263 snmpparam.status = parameter_get_int_value( PARAM_COMP_SNMPAGENT, "status" );
265 snmpparam.status = 0;
270 static void load_loglevel()
273 snmpparam.loglevel.clear();
275 if( parameter_is_char_exist( PARAM_COMP_LOGGER, "snmpagent_start_stop" ) ){
276 snmpparam.loglevel.insert( std::pair<LOG_CATEGORY_TAG,LOG_LEVEL_TAG>( LOG_CAT_SNMPAGENT_START_STOP, levelstring_map[parameter_get_char_value( PARAM_COMP_LOGGER, "snmpagent_start_stop" )] ) );
278 snmpparam.loglevel.insert( std::pair<LOG_CATEGORY_TAG,LOG_LEVEL_TAG>( LOG_CAT_SNMPAGENT_START_STOP, LOG_LV_INFO) );
281 if( parameter_is_char_exist( PARAM_COMP_LOGGER, "snmpagent_manager_receive" ) ){
282 snmpparam.loglevel.insert( std::pair<LOG_CATEGORY_TAG,LOG_LEVEL_TAG>( LOG_CAT_SNMPAGENT_MANAGER_RECEIVE, levelstring_map[parameter_get_char_value( PARAM_COMP_LOGGER, "snmpagent_manager_receive" )] ) );
284 snmpparam.loglevel.insert( std::pair<LOG_CATEGORY_TAG,LOG_LEVEL_TAG>( LOG_CAT_SNMPAGENT_MANAGER_RECEIVE, LOG_LV_INFO ) );
287 if( parameter_is_char_exist( PARAM_COMP_LOGGER, "snmpagent_manager_send" ) ){
288 snmpparam.loglevel.insert( std::pair<LOG_CATEGORY_TAG,LOG_LEVEL_TAG>( LOG_CAT_SNMPAGENT_MANAGER_SEND, levelstring_map[parameter_get_char_value( PARAM_COMP_LOGGER, "snmpagent_manager_send" )] ) );
290 snmpparam.loglevel.insert( std::pair<LOG_CATEGORY_TAG,LOG_LEVEL_TAG>( LOG_CAT_SNMPAGENT_MANAGER_SEND, LOG_LV_INFO ) );
293 if( parameter_is_char_exist( PARAM_COMP_LOGGER, "snmpagent_l7vsd_receive" ) ){
294 snmpparam.loglevel.insert( std::pair<LOG_CATEGORY_TAG,LOG_LEVEL_TAG>( LOG_CAT_SNMPAGENT_L7VSD_RECEIVE, levelstring_map[parameter_get_char_value( PARAM_COMP_LOGGER, "snmpagent_l7vsd_receive" )] ) );
296 snmpparam.loglevel.insert( std::pair<LOG_CATEGORY_TAG,LOG_LEVEL_TAG>( LOG_CAT_SNMPAGENT_L7VSD_RECEIVE, LOG_LV_INFO ) );
299 if( parameter_is_char_exist( PARAM_COMP_LOGGER, "snmpagent_l7vsd_send" ) ){
300 snmpparam.loglevel.insert( std::pair<LOG_CATEGORY_TAG,LOG_LEVEL_TAG>( LOG_CAT_SNMPAGENT_L7VSD_SEND, levelstring_map[parameter_get_char_value( PARAM_COMP_LOGGER, "snmpagent_l7vsd_send" )] ) );
302 snmpparam.loglevel.insert( std::pair<LOG_CATEGORY_TAG,LOG_LEVEL_TAG>( LOG_CAT_SNMPAGENT_L7VSD_SEND, LOG_LV_INFO ) );
305 if( parameter_is_char_exist( PARAM_COMP_LOGGER, "snmpagent_logger" ) ){
306 snmpparam.loglevel.insert( std::pair<LOG_CATEGORY_TAG,LOG_LEVEL_TAG>( LOG_CAT_SNMPAGENT_LOGGER, levelstring_map[parameter_get_char_value( PARAM_COMP_LOGGER, "snmpagent_logger" )] ) );
308 snmpparam.loglevel.insert( std::pair<LOG_CATEGORY_TAG,LOG_LEVEL_TAG>( LOG_CAT_SNMPAGENT_LOGGER, LOG_LV_INFO ) );
311 if( parameter_is_char_exist( PARAM_COMP_LOGGER, "snmpagent_parameter" ) ){
312 snmpparam.loglevel.insert( std::pair<LOG_CATEGORY_TAG,LOG_LEVEL_TAG>( LOG_CAT_SNMPAGENT_PARAMETER, levelstring_map[parameter_get_char_value( PARAM_COMP_LOGGER, "snmpagent_parameter" )] ) );
314 snmpparam.loglevel.insert( std::pair<LOG_CATEGORY_TAG,LOG_LEVEL_TAG>( LOG_CAT_SNMPAGENT_PARAMETER, LOG_LV_INFO ) );