]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Report circuit build_state flags in CIRC events
authorRobert Ransom <rransom.8774@gmail.com>
Thu, 23 Jun 2011 21:34:56 +0000 (14:34 -0700)
committerRobert Ransom <rransom.8774@gmail.com>
Thu, 24 Nov 2011 14:32:54 +0000 (06:32 -0800)
changes/feature2411 [new file with mode: 0644]
src/or/control.c

diff --git a/changes/feature2411 b/changes/feature2411
new file mode 100644 (file)
index 0000000..b60fbfd
--- /dev/null
@@ -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.
+
+
index 735492271aeab881859d24b5700e1d2ca4be121d..3dda9979fb412f74d0a1a461c2510312b718206f 100644 (file)
@@ -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",