Microdescriptors: abstract the notion of "Tor node" in the code
Right now we have at least 5 things that we use to indicate a Tor node:
- A
const char *
pointing to an ID key digest - A
routerinfo_t
- A
routerstatus_t
- An
extend_info_t
- An entry in
rephist.c
, though those are mostly isolated.
For microdescriptors, we're about to add another thing:
- A
microdescriptor_t
Making our code work properly with all of these variant things is already a bit hairy. It sure would be nice if we had some kind of abstract node_t that could make it so our code worked well with all of the above.
First, we'll need a basic design here. At the minimum we should make routerstatus_t and routerinfo_t (basically) immutable, and add a node_t that abstracts routerstatus_t and routerinfo_t. Then, we can make it so that its interface can be satisfied by microdescriptor_t as well.