From b7d0f4686b4aa55fd9b69884e6cc0c4c79ea1cd5 Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Sun, 29 Dec 2013 19:38:01 +0100 Subject: logging: Copy the filter_fn and fix the IMSI filter in OpenBSC The filter_fn has not been copied into the new structure breaking the imsi and other filters in OpenBSC. Looking at the code we should also introduce a callback for the reset of the context so we could use subscr_get/subscr_put on the subscriber structure. --- src/logging.c | 1 + tests/logging/logging_test.c | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/src/logging.c b/src/logging.c index 214ad2ab..2e3a80ad 100644 --- a/src/logging.c +++ b/src/logging.c @@ -768,6 +768,7 @@ int log_init(const struct log_info *inf, void *ctx) if (!osmo_log_info) return -ENOMEM; + osmo_log_info->filter_fn = inf->filter_fn; osmo_log_info->num_cat_user = inf->num_cat; /* total number = number of user cat + library cat */ osmo_log_info->num_cat = inf->num_cat + ARRAY_SIZE(internal_cat); diff --git a/tests/logging/logging_test.c b/tests/logging/logging_test.c index fd62db5a..b263f905 100644 --- a/tests/logging/logging_test.c +++ b/tests/logging/logging_test.c @@ -21,12 +21,16 @@ #include #include +#include + enum { DRLL, DCC, DMM, }; +static int filter_called = 0; + static const struct log_info_cat default_categories[] = { [DRLL] = { .name = "DRLL", @@ -48,9 +52,17 @@ static const struct log_info_cat default_categories[] = { }, }; +static int test_filter(const struct log_context *ctx, struct log_target *target) +{ + filter_called += 1; + /* omit everything */ + return 0; +} + const struct log_info log_info = { .cat = default_categories, .num_cat = ARRAY_SIZE(default_categories), + .filter_fn = test_filter, }; int main(int argc, char **argv) @@ -71,6 +83,11 @@ int main(int argc, char **argv) DEBUGP(DRLL, "You should see this\n"); DEBUGP(DCC, "You should see this\n"); DEBUGP(DMM, "You should not see this\n"); + OSMO_ASSERT(filter_called == 0); + + log_set_all_filter(stderr_target, 0); + DEBUGP(DRLL, "You should not see this and filter is called\n"); + OSMO_ASSERT(filter_called == 1); return 0; } -- cgit v1.2.3