Branches (again)

Scott Lamb slamb at slamb.org
Sat Feb 24 22:56:24 CET 2007


A long long time ago, I asked about the different tinc branches.  
Guus, you said at the time that

* trunk is 1.0, bugfixes only
* 1.0-gnutls, POKEY, and pre4-cube are stagnant
* 2.0 is where new work should happen...at the time, it didn't  
compile, and it appears it still doesn't

This answer discouraged me; I have trouble getting excited about new  
work in a branch that's been around for a long time but still doesn't  
build, much less incorporate all the bugfixes and such that have  
happened in trunk since branching.

Is it possible I can convince you to rethink the approach of 2.0? I  
think your 1.0 code is quite good, and it would be possible to  
refactor it into whatever you want 2.0 to be, never even making a  
checkin that doesn't compile. For example, I see that you want 2.0 to  
use libevent. If it'd make the 1.0 branch live on, I'd be happy to  
convert it to libevent.

I ask because there are four features tinc lacks that I would like to  
see. I'd even be willing to try writing them myself, if there were an  
appropriate branch in which to do so. (You even generously offered to  
create a review branch for me, but I don't know on which branch it  
could be based...)

Anyway, here are the features:

1. A control socket. I find it frustrating to turn on debugging in  
syslog, send tincd a meaningless signal name, and look for results in  
a logfile, then turn off syslog debugging again before my hard drive  
fils. I'd rather have something like bind 9.0's rndc that  
communicates over a UNIX-domain socket:

     $ sudo tincc -n slamb.org show-connections
     Connections:
       scooby at 69.55.229.92 port 655 options 1 socket 8 status 01c2  
outbuf 1553/0/0
       calvin at 216.136.66.56 port 655 options 1 socket 7 status  
00c2 outbuf 1594/0/0
       hobbes at 63.99.9.243 port 655 options 1 socket 9 status 00c2  
outbuf 1566/0/0
     End of connections.

     $ sudo tincc -n slamb.org dump-graph connections.png

     $ sudo tincc -n slamb.org reconnect scooby

2. Continuously updating edge weights. tincd sometimes starts an  
outgoing connection when my link is unusually slow, and it causes it  
to pick the wrong path for packets until I restart the daemon. It  
would be slick to have something like exponentially weighted average  
path weights, based on the pings it already does every so often.

3. Better firewall/NAT support. I'd like it to at least send the  
pings the same way it sends the data, so it can detect that a path is  
no good. It might even fall back to TCP only or (to be really fancy)  
use STUN.

4. Better TCP-only security.

#1 and possibly #2 would not require protocol changes, so they could  
happen in 1.0 if it were to live on. So could work like converting to  
libevent. 2.0 could be rebranched when one of the protocol changes is  
ready, and not be so different that it'd be impossible to merge  
between them.

Oh by the way - thanks for catching that stupid close() bug in my  
last patch. Ironically similar to the sort of bug I was trying to fix...

Best regards,
Scott

-- 
Scott Lamb <http://www.slamb.org/>


More information about the tinc mailing list