+ /** @brief Get the common ancestor and its first children in each line leading to src and dst
+ *
+ * In the recursive case, this sets common_ancestor, src_ancestor and dst_ancestor are set as follows.
+ * @verbatim
+ * platform root
+ * |
+ * ... <- possibly long path
+ * |
+ * common_ancestor
+ * / \
+ * / \
+ * / \ <- direct links
+ * / \
+ * / \
+ * src_ancestor dst_ancestor <- must be different in the recursive case
+ * | |
+ * ... ... <-- possibly long pathes (one hop or more)
+ * | |
+ * src dst
+ * @endverbatim
+ *
+ * In the base case (when src and dst are in the same AS), things are as follows:
+ * @verbatim
+ * platform root
+ * |
+ * ... <-- possibly long path
+ * |
+ * common_ancestor==src_ancestor==dst_ancestor <-- all the same value
+ * / \
+ * / \ <-- direct links (exactly one hop)
+ * / \
+ * src dst
+ * @endverbatim
+ *
+ * A specific recursive case occurs when src is the ancestor of dst. In this case,
+ * the base case routing should be used so the common_ancestor is specifically set
+ * to src_ancestor==dst_ancestor.
+ * Naturally, things are completely symmetrical if dst is the ancestor of src.
+ * @verbatim
+ * platform root
+ * |
+ * ... <-- possibly long path
+ * |
+ * src == src_ancestor==dst_ancestor==common_ancestor <-- same value
+ * |
+ * ... <-- possibly long path (one hop or more)
+ * |
+ * dst
+ * @endverbatim
+ */