| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- --- a/Makefile
- +++ b/Makefile
- @@ -4,7 +4,24 @@ SOFTWARE=hotplug2
- VERSION=1.0-alpha
-
- BINS=hotplug2 hotplug2-modwrap
- -SUBDIRS=parser rules workers
- +SUBDIRS=parser rules
- +
- +hotplug2-objs := \
- + hotplug2.o netlink.o seqnum.o settings.o uevent.o xmemutils.o \
- + workers/loader.o parser/parser.o parser/buffer.o parser/token.o \
- + parser/token_queue.o parser/lexer.o rules/ruleset.o rules/rule.o \
- + rules/condition.o rules/expression.o rules/execution.o \
- + rules/command.o
- +
- +ifdef STATIC_WORKER
- + ifeq ($(wildcard workers/worker_$(STATIC_WORKER).c),)
- + $(error Worker source worker/worker_$(STATIC_WORKER).c not found)
- + endif
- + hotplug2-objs += action.o workers/worker_$(STATIC_WORKER).o
- +else
- + SUBDIRS += workers
- +endif
- +
- DESTDIR=
-
-
- @@ -13,13 +30,16 @@ all: $(BINS)
- install:
- $(INSTALL_BIN) $(BINS) $(DESTDIR)/sbin/
-
- -
- -hotplug2: hotplug2.o netlink.o seqnum.o settings.o uevent.o xmemutils.o \
- - workers/loader.o parser/parser.o parser/buffer.o parser/token.o \
- - parser/token_queue.o parser/lexer.o rules/ruleset.o rules/rule.o \
- - rules/condition.o rules/expression.o rules/execution.o \
- - rules/command.o
- +hotplug2: $(hotplug2-objs)
-
- coldplug2: coldplug2.o
-
- include common.mak
- +
- +ifdef STATIC_WORKER
- + CFLAGS += -DSTATIC_WORKER=1
- +else
- + CFLAGS += $(FPIC)
- + LDFLAGS += -ldl
- +endif
- +
- --- a/common.mak
- +++ b/common.mak
- @@ -1,7 +1,10 @@
- # vim:set sw=8 nosta:
-
- -CFLAGS=-Os -Wall -g -fPIC
- -LDFLAGS=-g -ldl
- +COPTS=-Os -Wall -g
- +LDFLAGS=-g
- +
- +CFLAGS=$(COPTS)
- +FPIC=-fPIC
-
- INSTALL=install -c -m 644
- INSTALL_BIN=install -c -m 755
- --- a/workers/loader.c
- +++ b/workers/loader.c
- @@ -1,5 +1,23 @@
- #include "loader.h"
-
- +#ifdef STATIC_WORKER
- +
- +extern struct worker_module_t worker_module;
- +static struct loader_ctx_t static_ctx = {
- + .module = &worker_module
- +};
- +
- +struct loader_ctx_t *worker_load(const char *name)
- +{
- + return &static_ctx;
- +}
- +
- +void worker_free(struct loader_ctx_t *ctx)
- +{
- +}
- +
- +#else
- +
- struct loader_ctx_t *worker_load(const char *name) {
- struct loader_ctx_t *ctx;
-
- @@ -12,7 +30,7 @@ struct loader_ctx_t *worker_load(const c
- return NULL;
- }
-
- - ctx->module = dlsym(ctx->dl_handle, "module");
- + ctx->module = dlsym(ctx->dl_handle, "worker_module");
- if (ctx->module == NULL) {
- fprintf(stderr, "Loader error: %s\n", dlerror());
- worker_free(ctx);
- @@ -31,3 +49,5 @@ void worker_free(struct loader_ctx_t *ct
-
- free(ctx);
- }
- +
- +#endif
- --- a/hotplug2.c
- +++ b/hotplug2.c
- @@ -261,17 +261,21 @@ int main(int argc, char *argv[]) {
- }
-
- /* Load the worker. */
- +#ifndef STATIC_WORKER
- if (settings->worker_name == NULL) {
- fprintf(stderr, "Missing worker name.\n");
- settings_clear(settings);
- exit(1);
- }
- +#endif
- settings->worker = worker_load(settings->worker_name);
- +#ifndef STATIC_WORKER
- if (settings->worker == NULL) {
- fprintf(stderr, "Unable to load worker: %s\n", settings->worker_name);
- settings_clear(settings);
- exit(1);
- }
- +#endif
-
- /* Prepare a netlink connection to the kernel. */
- settings->netlink_socket = netlink_init();
- --- a/workers/worker_example.c
- +++ b/workers/worker_example.c
- @@ -62,7 +62,7 @@ static int worker_example_process(void *
- return 0;
- }
-
- -struct worker_module_t module = {
- +struct worker_module_t worker_module = {
- "Hotplug2 example module",
- worker_example_init,
- worker_example_deinit,
- --- a/workers/worker_fork.c
- +++ b/workers/worker_fork.c
- @@ -443,7 +443,7 @@ static int worker_fork_process(void *in_
- return 0;
- }
-
- -struct worker_module_t module = {
- +struct worker_module_t worker_module = {
- "Hotplug2 forking module",
- worker_fork_init,
- worker_fork_deinit,
- --- a/workers/worker_single.c
- +++ b/workers/worker_single.c
- @@ -18,7 +18,7 @@ static int worker_single_process(void *s
- return 0;
- }
-
- -struct worker_module_t module = {
- +struct worker_module_t worker_module = {
- "Hotplug2 single process module",
- worker_single_init,
- worker_single_deinit,
|