diff options
author | Martin Willi <martin@revosec.ch> | 2012-10-08 11:59:20 +0200 |
---|---|---|
committer | Martin Willi <martin@revosec.ch> | 2012-10-24 11:34:31 +0200 |
commit | f9332e0a8b4541d294974dd69f7982c45a29adfe (patch) | |
tree | 9d56f24a2b13c8db65ee4c27db9b83ddba356233 /src | |
parent | 2232d88569bb58e8a6579dd301b45097ceaf4738 (diff) | |
download | strongswan-f9332e0a8b4541d294974dd69f7982c45a29adfe.tar.bz2 strongswan-f9332e0a8b4541d294974dd69f7982c45a29adfe.tar.xz |
Add a print method for stroke counters
Diffstat (limited to 'src')
-rw-r--r-- | src/libcharon/plugins/stroke/stroke_counter.c | 22 | ||||
-rw-r--r-- | src/libcharon/plugins/stroke/stroke_counter.h | 7 |
2 files changed, 29 insertions, 0 deletions
diff --git a/src/libcharon/plugins/stroke/stroke_counter.c b/src/libcharon/plugins/stroke/stroke_counter.c index d12009870..6e30a9f02 100644 --- a/src/libcharon/plugins/stroke/stroke_counter.c +++ b/src/libcharon/plugins/stroke/stroke_counter.c @@ -199,6 +199,27 @@ METHOD(listener_t, message_hook, bool, return TRUE; } +METHOD(stroke_counter_t, print, void, + private_stroke_counter_t *this, FILE *out) +{ + u_int64_t counter[COUNTER_MAX]; + int i; + + /* Take a snapshot to have congruent results, */ + this->lock->lock(this->lock); + for (i = 0; i < countof(this->counter); i++) + { + counter[i] = this->counter[i]; + } + this->lock->unlock(this->lock); + + /* but do blocking write without the lock. */ + for (i = 0; i < countof(this->counter); i++) + { + fprintf(out, "%-18N %12llu\n", stroke_counter_type_names, i, counter[i]); + } +} + METHOD(stroke_counter_t, destroy, void, private_stroke_counter_t *this) { @@ -221,6 +242,7 @@ stroke_counter_t *stroke_counter_create() .child_rekey = _child_rekey, .message = _message_hook, }, + .print = _print, .destroy = _destroy, }, .lock = spinlock_create(), diff --git a/src/libcharon/plugins/stroke/stroke_counter.h b/src/libcharon/plugins/stroke/stroke_counter.h index fecdce4fa..efaae0d6f 100644 --- a/src/libcharon/plugins/stroke/stroke_counter.h +++ b/src/libcharon/plugins/stroke/stroke_counter.h @@ -84,6 +84,13 @@ struct stroke_counter_t { listener_t listener; /** + * Print counter values to an output stream. + * + * @param out output stream to write to + */ + void (*print)(stroke_counter_t *this, FILE *out); + + /** * Destroy a stroke_counter_t. */ void (*destroy)(stroke_counter_t *this); |