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 --- src/or/control.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'src/or') 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