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 <romanx.korynkevych@intel.com>
# NotifySensorRemove true
# NotifySensorNotPresent false
# SELEnabled false
# NotifySensorRemove true
# NotifySensorNotPresent false
# SELEnabled false
#</Plugin>
#<Plugin iptables>
#</Plugin>
#<Plugin iptables>
and discrete events. When event is received the notification is sent.
Defaults to B<false>.
and discrete events. When event is received the notification is sent.
Defaults to B<false>.
+=item B<SELClearEvent> I<true>|I<false>
+
+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<false>.
+
=back
=head2 Plugin C<iptables>
=back
=head2 Plugin C<iptables>
static const char *config_keys[] = {"Sensor", "IgnoreSelected",
"NotifySensorAdd", "NotifySensorRemove",
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;
static int config_keys_num = STATIC_ARRAY_SIZE(config_keys);
static ignorelist_t *ignorelist = NULL;
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_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
/*
* Misc private functions
plugin_dispatch_notification(&n);
/* Delete handled ipmi event from the list */
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,
} /* int sensor_threshold_event_handler */
static int sensor_discrete_event_handler(ipmi_sensor_t *sensor,
plugin_dispatch_notification(&n);
/* Delete handled ipmi event from the list */
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 */
/*
} /* int sensor_discrete_event_handler */
/*
} else if (strcasecmp("SELEnabled", key) == 0) {
if (IS_TRUE(value))
c_ipmi_sel_enabled = 1;
} 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;