Do not set indirect flag on edges from nodes with multiple addresses.
authorGuus Sliepen <guus@tinc-vpn.org>
Wed, 9 Mar 2011 08:34:56 +0000 (09:34 +0100)
committerGuus Sliepen <guus@tinc-vpn.org>
Wed, 9 Mar 2011 08:34:56 +0000 (09:34 +0100)
Since tinc now handles UDP packets with a different source address and port
than used for TCP connections, the heuristic to treat edges as indirect when
tinc could detect that multiple addresses were used does not make sense
anymore, and can actually reduce performance.

src/graph.c

index 1e6043d15cf56b5926f92a0c238208c6e0cb676b..8f58af4ca45ccd5aec644e9de2b90936329d0b21 100644 (file)
@@ -199,16 +199,12 @@ void sssp_bfs(void) {
                           n->address is set to the e->address of the edge left of n to n.
                           We are currently examining the edge e right of n from n:
 
-                          - If e->reverse->address != n->address, then e->to is probably
-                            not reachable for the nodes left of n. We do as if the indirectdata
-                            flag is set on edge e.
                           - If edge e provides for better reachability of e->to, update
                             e->to and (re)add it to the todo_list to (re)examine the reachability
                             of nodes behind it.
                         */
 
-                       indirect = n->status.indirect || e->options & OPTION_INDIRECT
-                               || ((n != myself) && sockaddrcmp(&n->address, &e->reverse->address));
+                       indirect = n->status.indirect || e->options & OPTION_INDIRECT;
 
                        if(e->to->status.visited
                           && (!e->to->status.indirect || indirect))