diff options
author | Nick Mathewson <nickm@torproject.org> | 2005-07-22 14:55:09 +0000 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2005-07-22 14:55:09 +0000 |
commit | 5b4e11fa5d73d9b138e60df36cbaa0a309e56c55 (patch) | |
tree | e2638b4ea58f9265409faf47390de280c042de16 /src/or/hibernate.c | |
parent | 76a6cec3f13ffad26a2c6122a9dc21d08c5da981 (diff) | |
download | tor-5b4e11fa5d73d9b138e60df36cbaa0a309e56c55.tar tor-5b4e11fa5d73d9b138e60df36cbaa0a309e56c55.tar.gz |
Add getinfo logic for accounting; add options for helper nodes
svn:r4632
Diffstat (limited to 'src/or/hibernate.c')
-rw-r--r-- | src/or/hibernate.c | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/or/hibernate.c b/src/or/hibernate.c index e8c5d69a0..0c5a112c1 100644 --- a/src/or/hibernate.c +++ b/src/or/hibernate.c @@ -100,6 +100,8 @@ static void accounting_set_wakeup_time(void); * Functions for bandwidth accounting. * ************/ + + /** Configure accounting start/end time settings based on * options->AccountingStart. Return 0 on success, -1 on failure. If * <b>validate_only</b> is true, do not change the current settings. */ @@ -846,3 +848,41 @@ consider_hibernation(time_t now) } } +/** DOCDOC */ +int +accounting_getinfo_helper(const char *question, char **answer) +{ + if (!strcmp(question, "accounting/enabled")) { + *answer = tor_strdup(get_options()->AccountingMax ? "1" : "0"); + } else if (!strcmp(question, "accounting/hibernating")) { + if (hibernate_state == HIBERNATE_STATE_DORMANT) + *answer = tor_strdup("hard"); + else if (hibernate_state == HIBERNATE_STATE_LOWBANDWIDTH) + *answer = tor_strdup("soft"); + else + *answer = tor_strdup("awake"); + } else if (!strcmp(question, "accounting/bytes")) { + *answer = tor_malloc(32); + tor_snprintf(*answer, 32, U64_FORMAT" "U64_FORMAT, + U64_PRINTF_ARG(n_bytes_read_in_interval), + U64_PRINTF_ARG(n_bytes_written_in_interval)); + } else if (!strcmp(question, "accounting/bytes-left")) { + *answer = tor_malloc(32); + uint64_t limit = get_options()->AccountingMax; + tor_snprintf(*answer, 32, U64_FORMAT" "U64_FORMAT, + U64_PRINTF_ARG(limit - n_bytes_read_in_interval), + U64_PRINTF_ARG(limit - n_bytes_written_in_interval)); + } else if (!strcmp(question, "accounting/interval-start")) { + *answer = tor_malloc(ISO_TIME_LEN+1); + format_iso_time(*answer, interval_start_time); + } else if (!strcmp(question, "accounting/interval-wake")) { + *answer = tor_malloc(ISO_TIME_LEN+1); + format_iso_time(*answer, interval_wakeup_time); + } else if (!strcmp(question, "accounting/interval-end")) { + *answer = tor_malloc(ISO_TIME_LEN+1); + format_iso_time(*answer, interval_end_time); + } else { + *answer = NULL; + } + return 0; +} |