From b7c765b1b196433f38b94353edbc1655f5da1017 Mon Sep 17 00:00:00 2001 From: Robert Ransom Date: Thu, 23 Jun 2011 14:34:56 -0700 Subject: Report circuit build_state flags in CIRC events --- changes/feature2411 | 7 +++++++ src/or/control.c | 28 ++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 changes/feature2411 diff --git a/changes/feature2411 b/changes/feature2411 new file mode 100644 index 000000000..b60fbfd6a --- /dev/null +++ b/changes/feature2411 @@ -0,0 +1,7 @@ + o Minor features: + + - Report flags that control a circuit's path selection to + controllers in CIRC events and in replies to 'GETINFO + circuit-status'. Implements part of ticket 2411. + + diff --git a/src/or/control.c b/src/or/control.c index 735492271..3dda9979f 100644 --- a/src/or/control.c +++ b/src/or/control.c @@ -1794,6 +1794,34 @@ circuit_describe_status_for_controller(origin_circuit_t *circ) } } + { + char *buildflags = NULL; + cpath_build_state_t *build_state = circ->build_state; + smartlist_t *flaglist = smartlist_create(); + char *flaglist_joined; + + if (build_state->onehop_tunnel) + smartlist_add(flaglist, (void *)"ONEHOP_TUNNEL"); + if (build_state->is_internal) + smartlist_add(flaglist, (void *)"IS_INTERNAL"); + if (build_state->need_capacity) + smartlist_add(flaglist, (void *)"NEED_CAPACITY"); + if (build_state->need_uptime) + smartlist_add(flaglist, (void *)"NEED_UPTIME"); + + /* Only emit a BUILD_FLAGS argument if it will have a non-empty value. */ + if (smartlist_len(flaglist)) { + flaglist_joined = smartlist_join_strings(flaglist, ",", 0, NULL); + + tor_asprintf(&buildflags, "BUILD_FLAGS=%s", flaglist_joined); + smartlist_add(descparts, buildflags); + + tor_free(flaglist_joined); + } + + smartlist_free(flaglist); + } + { char *purpose = NULL; tor_asprintf(&purpose, "PURPOSE=%s", -- cgit v1.2.3