From: Korynkevych, RomanX Date: Wed, 28 Dec 2016 15:08:42 +0000 (+0000) Subject: ipmi: added SELClearEvent parameter. X-Git-Tag: collectd-5.8.0~56^2~3 X-Git-Url: https://git.verplant.org/?a=commitdiff_plain;h=b0549e4c413761f40876d9908d34979368febed2;p=collectd.git ipmi: added SELClearEvent parameter. Make deletion of event from SEL list configurable to avoid other tools that may be subscribed for SEL events to receive an empty event. Change-Id: Ibd578c8652d9d6df8ee28825f20df356ef46b840 Signed-off-by: Korynkevych, RomanX --- diff --git a/src/collectd.conf.in b/src/collectd.conf.in index e85b42a5..20a01081 100644 --- a/src/collectd.conf.in +++ b/src/collectd.conf.in @@ -636,6 +636,7 @@ # NotifySensorRemove true # NotifySensorNotPresent false # SELEnabled false +# SELClearEvent false # # diff --git a/src/collectd.conf.pod b/src/collectd.conf.pod index a164e119..d8d30f5b 100644 --- a/src/collectd.conf.pod +++ b/src/collectd.conf.pod @@ -3087,6 +3087,13 @@ If system event log (SEL) is enabled, plugin will listen for sensor threshold and discrete events. When event is received the notification is sent. Defaults to B. +=item B I|I + +If SEL clear event is enabled, plugin will delete event from SEL list after +it is received and successfully handled. In this case other tools that are +subscribed for SEL events will receive an empty event. +Defaults to B. + =back =head2 Plugin C diff --git a/src/ipmi.c b/src/ipmi.c index 5dca1fd8..39250e4f 100644 --- a/src/ipmi.c +++ b/src/ipmi.c @@ -61,7 +61,8 @@ static pthread_t thread_id = (pthread_t)0; static const char *config_keys[] = {"Sensor", "IgnoreSelected", "NotifySensorAdd", "NotifySensorRemove", - "NotifySensorNotPresent", "SELEnabled"}; + "NotifySensorNotPresent", "SELEnabled", + "SELClearEvent"}; static int config_keys_num = STATIC_ARRAY_SIZE(config_keys); static ignorelist_t *ignorelist = NULL; @@ -70,6 +71,7 @@ static int c_ipmi_notify_add = 0; static int c_ipmi_notify_remove = 0; static int c_ipmi_notify_notpresent = 0; static int c_ipmi_sel_enabled = 0; +static int c_ipmi_sel_clear_event = 0; /* * Misc private functions @@ -533,9 +535,12 @@ static int sensor_threshold_event_handler( plugin_dispatch_notification(&n); /* Delete handled ipmi event from the list */ - ipmi_event_delete(event, NULL, NULL); + if (c_ipmi_sel_clear_event) { + ipmi_event_delete(event, NULL, NULL); + return (IPMI_EVENT_HANDLED); + } - return (IPMI_EVENT_HANDLED); + return (IPMI_EVENT_NOT_HANDLED); } /* int sensor_threshold_event_handler */ static int sensor_discrete_event_handler(ipmi_sensor_t *sensor, @@ -581,9 +586,12 @@ static int sensor_discrete_event_handler(ipmi_sensor_t *sensor, plugin_dispatch_notification(&n); /* Delete handled ipmi event from the list */ - ipmi_event_delete(event, NULL, NULL); + if (c_ipmi_sel_clear_event) { + ipmi_event_delete(event, NULL, NULL); + return (IPMI_EVENT_HANDLED); + } - return (IPMI_EVENT_HANDLED); + return (IPMI_EVENT_NOT_HANDLED); } /* int sensor_discrete_event_handler */ /* @@ -759,6 +767,9 @@ static int c_ipmi_config(const char *key, const char *value) { } else if (strcasecmp("SELEnabled", key) == 0) { if (IS_TRUE(value)) c_ipmi_sel_enabled = 1; + } else if (strcasecmp("SELClearEvent", key) == 0) { + if (IS_TRUE(value)) + c_ipmi_sel_clear_event = 1; } else { return (-1); }