From 551bb180997e53282dbef29425f6622a56855101 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=C5=81ukasz=20Stelmach?= Date: Tue, 9 May 2017 12:57:04 +0200 Subject: [PATCH] Use bson as the event serialisation format As of this commit faultd depends on ejdb package. --- Makefile.am | 2 +- configure.ac | 7 +++++++ packaging/faultd.spec | 3 ++- src/core/event.c | 5 ++++- src/core/event.h | 7 ++++--- src/event_types/decision_made_event.c | 4 +++- src/event_types/resource_violation_event.c | 4 +++- src/event_types/service_failed_event.c | 4 +++- 8 files changed, 27 insertions(+), 9 deletions(-) diff --git a/Makefile.am b/Makefile.am index f5b2ca8..5cf9734 100644 --- a/Makefile.am +++ b/Makefile.am @@ -47,5 +47,5 @@ faultd_SOURCES = \ src/listeners/systemd.c \ src/util/log.c \ src/util/notify_queue.c -faultd_LDADD = $(LIBSYSTEMD_LIBS) ${AUDIT_LIBS} +faultd_LDADD = $(LIBSYSTEMD_LIBS) $(AUDIT_LIBS) $(LIBEJDB_LIBS) diff --git a/configure.ac b/configure.ac index 97e68f0..e3c5ecd 100644 --- a/configure.ac +++ b/configure.ac @@ -43,6 +43,13 @@ PKG_CHECK_MODULES(AUDIT, AS_IF([test "x$have_audit" = "xno"], AC_MSG_ERROR([audit not found])) +PKG_CHECK_MODULES(LIBEJDB, + [libejdb >= 1.2.12], + have_libejdb=yes, + have_libejdb=no) +AS_IF([test "x$have_libejdb" = "xno"], + AC_MSG_ERROR([EJDB version 1.2.12 or newer not found])) + AC_CHECK_FUNCS([ \ printf\ ]) diff --git a/packaging/faultd.spec b/packaging/faultd.spec index 88d0779..72de608 100644 --- a/packaging/faultd.spec +++ b/packaging/faultd.spec @@ -6,8 +6,9 @@ Source0: %{name}-%{version}.tar.xz Source1001: %{name}.manifest Summary: Fault detection daemon Group: System/Monitoring -BuildRequires: pkgconfig(libsystemd) BuildRequires: pkgconfig(audit) +BuildRequires: pkgconfig(libejdb) +BuildRequires: pkgconfig(libsystemd) %description faultd monitors system services, detects their abnormal execution and diff --git a/src/core/event.c b/src/core/event.c index 67b347d..358b80c 100644 --- a/src/core/event.c +++ b/src/core/event.c @@ -16,6 +16,9 @@ * limitations under the License. */ +#define _GNU_SOURCE 1 + +#include #include #include @@ -126,7 +129,7 @@ int faultd_event_init_internal(struct faultd_event_type *ev_type, return 0; } -void faultd_event_serialize_internal(struct faultd_event *ev, void **out) +void faultd_event_serialize_internal(struct faultd_event *ev, bson *out) { /* call from e.g. .serialize in service_failed_event */ /* serialize faultd_event structure */ diff --git a/src/core/event.h b/src/core/event.h index c796098..388d18e 100644 --- a/src/core/event.h +++ b/src/core/event.h @@ -19,6 +19,7 @@ #ifndef FAULTD_EVENT_H #define FAULTD_EVENT_H +#include #include #include #include @@ -33,7 +34,7 @@ struct faultd_event; struct faultd_event_ops { char *(*to_string)(struct faultd_event *); void (*release)(struct faultd_event *); - void (*serialize)(struct faultd_event*, void**); + void (*serialize)(struct faultd_event*, bson*); }; struct faultd_event_type { @@ -115,7 +116,7 @@ static inline char *faultd_event_to_string(struct faultd_event *ev) return ev->ops.to_string(ev); } -static inline void faultd_event_serialize(struct faultd_event *ev, void **out) +static inline void faultd_event_serialize(struct faultd_event *ev, bson *out) { ev->ops.serialize(ev, out); } @@ -125,6 +126,6 @@ int faultd_event_init_internal(struct faultd_event_type *ev_type, static inline void faultd_event_cleanup_internal(struct faultd_event *ev) {} -void faultd_event_serialize_internal(struct faultd_event *ev, void **out); +void faultd_event_serialize_internal(struct faultd_event *ev, bson *out); #endif /* FAULTD_EVENT_H */ diff --git a/src/event_types/decision_made_event.c b/src/event_types/decision_made_event.c index b293a01..b472a5f 100644 --- a/src/event_types/decision_made_event.c +++ b/src/event_types/decision_made_event.c @@ -17,6 +17,8 @@ */ #define _GNU_SOURCE 1 + +#include #include #include #include @@ -96,7 +98,7 @@ static char *dm_event_to_string(struct faultd_event *ev) return ret > 0 ? str : NULL; } -void dm_event_serialize(struct faultd_event *ev, void **out) +static void dm_event_serialize(struct faultd_event *ev, bson *out) { struct decision_made_event *dm_ev = to_decision_made_event(ev); diff --git a/src/event_types/resource_violation_event.c b/src/event_types/resource_violation_event.c index 548eb8f..cb02f7e 100644 --- a/src/event_types/resource_violation_event.c +++ b/src/event_types/resource_violation_event.c @@ -17,6 +17,8 @@ */ #define _GNU_SOURCE 1 + +#include #include #include #include @@ -81,7 +83,7 @@ static char *rv_event_to_string(struct faultd_event *ev) return ret > 0 ? str : NULL; } -void rv_event_serialize(struct faultd_event *ev, void **out) +static void rv_event_serialize(struct faultd_event *ev, bson *out) { struct resource_violation_event *rv_ev = to_resource_violation_event(ev); diff --git a/src/event_types/service_failed_event.c b/src/event_types/service_failed_event.c index 8b0bc59..58ddc15 100644 --- a/src/event_types/service_failed_event.c +++ b/src/event_types/service_failed_event.c @@ -17,6 +17,8 @@ */ #define _GNU_SOURCE 1 + +#include #include #include #include @@ -79,7 +81,7 @@ static char *sf_event_to_string(struct faultd_event *ev) return ret > 0 ? str : NULL; } -void sf_event_serialize(struct faultd_event *ev, void **out) +static void sf_event_serialize(struct faultd_event *ev, bson *out) { struct service_failed_event *sf_ev = to_service_failed_event(ev); -- 2.34.1