Commit graph

381 commits

Author SHA1 Message Date
Guus Sliepen
8910cbd67e Use PEM functions as suggested by OpenSSL docs. 2001-11-03 21:21:04 +00:00
Guus Sliepen
ffb88ff641 Avoid connecting to another node twice, and check name of outgoing connections. 2001-10-31 20:22:52 +00:00
Guus Sliepen
c0a3f67a5d - Small fixes to graph algorithms
- More control over tap device, ability to set interface name to something
  other than the netname.
- Export NETNAME, DEVICE and INTERFACE environment variables to scripts.
2001-10-31 12:50:24 +00:00
Guus Sliepen
2165931c62 More updates to protocol handlers and reimplemented terminate_connection(). 2001-10-30 16:34:32 +00:00
Guus Sliepen
87ad5c97a9 Various fixes, tinc is now somewhat capable of actually working again. 2001-10-30 12:59:12 +00:00
Guus Sliepen
66067cc9c1 - More s/vertex/edge/g
- Implementation of Kruskal's minimum spanning tree algorithm.
2001-10-28 10:16:18 +00:00
Guus Sliepen
94497336ef What was I thinking? s/vertex/edge/g. 2001-10-28 08:41:19 +00:00
Guus Sliepen
b98d9787fd Various small fixes to make tinc runnable again. 2001-10-27 15:19:13 +00:00
Guus Sliepen
ac066bb057 Make sure everything links. 2001-10-27 13:13:35 +00:00
Guus Sliepen
82e3837109 Big bad commit:
- Transition to new node/vertex/connection structures
- Use new configuration handling everywhere
- Linux tun/tap device handling cleanup
- Start of IPv6 support in route.c

It compiles, but it won't link.
2001-10-27 12:13:17 +00:00
Guus Sliepen
1ef90a87fd - Use ping timeout mechanism to close connections that don't authenticate
in time.
- Fix potential segmentation fault in check_dead_connections().
2001-10-08 13:37:30 +00:00
Guus Sliepen
ce9fd32c04 Fix bug where tinc would crash because of a portscan or a connection from a
tinc daemon with a different version.
2001-10-08 11:59:08 +00:00
Guus Sliepen
21027b1d57 - Renamed lastbutonehop to prevhop.
- Added connection_t *via to connection_t, this keeps record of where
  to send UDP packets to.
2001-10-08 11:47:55 +00:00
Guus Sliepen
18d1233c40 Fill in next- and lastbutonehop for myself. 2001-09-25 13:39:11 +00:00
Guus Sliepen
ec100a58b4 Try next connectto instead of the same over and over. 2001-09-25 13:35:45 +00:00
Guus Sliepen
24a2c7e51a Not only keep track of nexthop, but also of lastbutonehop. If destination cl
wants indirectdata, send it to the lastbutonehop instead, unless it too has
requested so, and so on.
2001-09-24 14:12:00 +00:00
Guus Sliepen
154733927a - Try old TUN/TAP ioctl() request if the one from if_tun.h fails.
- Be more verbose about the kind of tap device used.
2001-09-24 13:31:15 +00:00
Guus Sliepen
8ed27d40f3 Revised reconnection mechanism, always try out all ConnectTo lines. 2001-09-01 12:36:06 +00:00
Guus Sliepen
e1184ad15d Don't send DEL_HOSTs when !status.meta 2001-08-17 18:14:04 +00:00
Guus Sliepen
30d22474cc Explicitly log which type of tunnel device is used. 2001-07-24 20:14:30 +00:00
Guus Sliepen
fcbe215d64 Woohoo! tinc now compiles, runs and actually *works* on Solaris!
Tested on a SparcStation 20MP running Solaris 7. (Thanks, jiggel!)
2001-07-21 20:21:25 +00:00
Guus Sliepen
533ee1206f Always close all sockets in terminate_connection(). 2001-07-21 15:46:34 +00:00
Guus Sliepen
acb853205d Updated terminate_connection() so you can choose if DEL_HOSTs should be
sent or not.
2001-07-21 15:34:18 +00:00
Guus Sliepen
12f6b80429 Added purge_tree for connection_t's which are no longer in the connection,
active or id trees, but which may still be referenced. This tree is flushed
when it is safe, this replaces purge_connection_tree().

Also lots of bugfixes related to the new trees.
2001-07-20 20:25:10 +00:00
Guus Sliepen
37ed4265fa Remove all unnecessary status.meta and status.active checks. 2001-07-20 13:54:19 +00:00
Guus Sliepen
5e2ded68bf Correctly use the active_tree. 2001-07-19 12:29:40 +00:00
Guus Sliepen
319e0cb48e Split connection list into two lists:
- one list to handle all incoming/outgoing TCP connections
 - another list to handle all UDP connections

This will prevent race conditions.
2001-07-15 18:07:31 +00:00
Guus Sliepen
b3074590b1 Correct inclusion of standard if_tun.h header file. 2001-07-15 14:21:12 +00:00
Guus Sliepen
1e2bdc2b6d - Always use <openssl/include.h> instead of just <include.h>
- Check if RAND_pseudo_bytes() exists, otherwise just use RAND_bytes()
2001-07-04 08:41:36 +00:00
Guus Sliepen
5d34503574 Execute tinc-down BEFORE tap device is closed. This is a. more symmetric
(tinc-up is started after tap device is opened) and b. is needed for
tun/tap device, where the interface does not exist anymore after the
device file is closed.
2001-06-29 10:30:18 +00:00
Guus Sliepen
9e96840da8 Remove #warnings I used for debugging stuff. 2001-06-21 16:37:47 +00:00
Guus Sliepen
04ec0b82ab - Solaris compile fixes
- Set mymac to broadcast MAC so that ifconfig hw ether <...> is really not
  needed anymore.
- Forwarding of indirect packets when in switch mode (because the kernel
  will not do it for us then).
2001-06-21 16:16:32 +00:00
Guus Sliepen
ba918dce28 Only reset seconds_till_retry when we activate the outgoing connection. 2001-06-08 18:02:10 +00:00
Guus Sliepen
9cd9b03923 Add missing? counting of total_socket_in. 2001-06-05 19:45:47 +00:00
Guus Sliepen
7bd7f5b436 You can now put an option "Mode" in tinc.conf, and choose from:
- Mode = router (default, work like tinc has always worked)
- Mode = switch (work like a switch)
- Mode = hub    (work like a hub, broadcasting everything)
2001-06-05 19:39:54 +00:00
Guus Sliepen
4f9dad0972 - tinc can now act as a switch or a hub too (as opposed to a router only)
- cleaner initialisation of "UNKNOWN" and "MYSELF" names
2001-06-05 16:09:55 +00:00
Guus Sliepen
7db1b999c8 Make sure Solaris is happy too. 2001-05-28 08:56:57 +00:00
Guus Sliepen
65247c063b Small fixes to allow correct compilation under FreeBSD (tested with 4.3) 2001-05-28 08:21:43 +00:00
Guus Sliepen
fcf869cd42 TCPonly now works (in a relatively clean way too). 2001-05-25 11:54:28 +00:00
Guus Sliepen
a5e2ae6b2b With recent kernels the tun device file is located in /dev/net. 2001-05-25 10:08:11 +00:00
Guus Sliepen
4dee76522e Small fixes:
- Fix compiler warnings (one was a real (but harmless) bug)
- Don't send PING packets if there is UDP traffic
- Correctly terminate strings containing salt for PING/PONG packets
2001-05-25 08:36:11 +00:00
Guus Sliepen
e4f3d93ec6 - s/ip_t/ipv4_t/g
- Add "salt" to the beginning of UDP packets. Replaces length field which
  is not useful anyway.
2001-05-07 19:08:46 +00:00
Guus Sliepen
a26081467c Correctly cycle through ConnectTo variables. 2001-05-04 18:45:02 +00:00
Guus Sliepen
c426e981ee Ignore alarm signals if we do not need to respond to them. 2001-03-13 21:32:24 +00:00
Guus Sliepen
34f9e6cf2d - route.c is now used to determine destination
- flags are removed, since they were not used at all. Use options instead.
- indirectdata works now, tcponly almost...
- made functions that don't return useful information void
2001-03-04 13:59:32 +00:00
Guus Sliepen
125c497881 Various small fixes. 2001-03-01 21:32:04 +00:00
Guus Sliepen
4fa12eb85d Removed lots of compiler warnings. 2001-02-27 16:37:31 +00:00
Guus Sliepen
173d606514 - Fixed Interface option (untested)
- Removed error handling for non-critical socket options
- Added TCP_NODELAY and IPTOS_LOWDELAY options for meta sockets.
2001-02-27 16:17:04 +00:00
Guus Sliepen
24fa685859 Don't forget to reconnect if outgoing connection fails during
authentication.
2001-02-27 15:33:39 +00:00
Guus Sliepen
82455be966 Implemented new authentication scheme from doc/SECURITY2. 2001-02-25 19:09:45 +00:00
Guus Sliepen
54881faf6f Encrypt network packets in CBC mode instead of CFB mode.
(This breaks compatibility with all previous versions!)
2001-02-25 16:34:19 +00:00
Guus Sliepen
9de5787574 Copy packets before putting them in the queue. 2001-02-25 16:04:00 +00:00
Guus Sliepen
a56df1e06b - Allow ASN1 style keys to be in the config files.
Note: tinc ignores private key in the main config file, tinc.conf,
  because it should really be in a separate file.
- When generating new keys, check if name is known and by default append
  the public key to the host configuration file (otherwise rsa_key.pub).
2001-01-13 16:36:23 +00:00
Guus Sliepen
d646f4e094 - Only send out DEL_HOSTs for hosts with a meta connection 2001-01-11 11:19:08 +00:00
Guus Sliepen
447a43d639 - Added indirectdata and tcponly functionality. 2001-01-07 20:19:35 +00:00
Guus Sliepen
d3f889c807 - It's 2001, all copyright notices are updated. 2001-01-07 17:09:07 +00:00
Guus Sliepen
07a08f5539 - Reinstated a queue for outgoing packets. 2001-01-07 15:25:49 +00:00
Guus Sliepen
e924096f62 - Let user choose whether keys are in the config files or separate
- Use AVL trees instead of RBL trees
- Fixed a lot of annoying subtle bugs! Thanks to gdb...
2001-01-05 23:53:53 +00:00
Guus Sliepen
e1707f7739 - Don't even think about using sscanf with %as anymore
- Allow keys to be inside the config files or in a seperate file
- Small fixes
2000-12-22 21:34:24 +00:00
Ivo Timmermans
6327f32f43 Tiny bits of code beautifying 2000-12-05 08:59:30 +00:00
Ivo Timmermans
a0f7af3ed7 New function read_rsa_public_key();
In net.c/setup_myself deleted old code to read the public key (which
is now implicitly read in together with the private key).
2000-11-30 23:18:21 +00:00
Ivo Timmermans
28deaeac14 Avoid printing duplicate messages from read_rsa_keys 2000-11-30 22:48:48 +00:00
Ivo Timmermans
2293304748 Better error checking when reading the RSA private key. 2000-11-30 22:33:16 +00:00
Ivo Timmermans
09260b43d1 Read the PEM file pointed to by the configuration directive
PrivateKey.  This means thatt he meaning of this variable has changed,
it no longer should contain the private key directly.

WARNING: This code is untested.
2000-11-30 20:08:41 +00:00
Guus Sliepen
1eedf54681 - Use only one socket for all UDP traffic (for compatibility)
- Write pidfile again after detaching
- Check OS (for handling FreeBSD/Solaris tun/tap stuff)
2000-11-25 13:33:33 +00:00
Guus Sliepen
cf49b2c064 Another big & bad commit:
- Added some extra search functions to rbl routines
- Fix subnet_lookup()
- Reorder some syslog messages to make more sense
- daemon() is back
- Don't let scripts execute in parallel (gives race conditions, and
  anyway something MIGHT just be configured which is necessary for further
  execution of tinc itself)
- Accidently merged check_child() with execute_script().
- Small fixes
2000-11-24 23:13:07 +00:00
Guus Sliepen
da9a1e8084 - More fixes. 2000-11-20 23:29:47 +00:00
Guus Sliepen
3a6200c1e3 - Various small fixes. 2000-11-20 22:13:14 +00:00
Guus Sliepen
1857b3c97c - Proper initialization of rbltree structures. 2000-11-20 19:41:13 +00:00
Guus Sliepen
408ca91766 - Integrate rbl trees into tinc. 2000-11-20 19:12:17 +00:00
Ivo Timmermans
485f7a5043 Delete struct ifr 2000-11-16 22:11:40 +00:00
Ivo Timmermans
2764532ea7 Move all process-related functions into process.c. 2000-11-16 17:54:29 +00:00
Ivo Timmermans
7f87c3d913 Keep a list of running children, and in each loop in main_loop(),
check if one has exited.
2000-11-15 22:07:36 +00:00
Guus Sliepen
e118ba0a64 Porting to FreeBSD:
- Reorganized and added some #includes
2000-11-15 13:33:27 +00:00
Ivo Timmermans
596e248bc5 Let the output from an executed script in execute_script() go to
syslog, with proper error detection.
2000-11-15 01:28:21 +00:00
Ivo Timmermans
bb2495e569 Use the HAVE_OPENSSL_xxx_H defined from m4/openssl.m4 during
configure.
2000-11-15 01:06:13 +00:00
Guus Sliepen
5055e1dedc - Applied Jamie Brigg's patch (close sockets after error) 2000-11-08 17:56:34 +00:00
Guus Sliepen
f8f1007bf4 Porting to SunOS 5.8:
- More #includes Linux doesn't seem to need
- Don't do unsetenv() on SunOS
- Use a replacement asprintf() in case the OS doesn't support it
It now compiles properly under SunOS.
2000-11-08 00:10:50 +00:00
Guus Sliepen
f95cc86d0c Changed execution of tinc-up:
- Do not free() strings that have been putenv()d, see man page of the
  latter.
- Do not set IFNAME anymore, it appears that the ioctl to get the name of
  the interface does not work at all. Since it is set to NETNAME in case
  of tun/tap and it is known beforehand in case of ethertap, there is no
  need for it anyway... (though it would've simplified things).
2000-11-07 21:43:28 +00:00
Guus Sliepen
698191fd2f - Prepended config_ to all configuration option names, because it confused
everything (including myself).
- Use connection oriented UDP sockets for both incoming and outgoing
  packets.
2000-11-04 22:57:33 +00:00
Guus Sliepen
afc0579707 - Simplified ping mechanism. 2000-11-04 20:44:28 +00:00
Guus Sliepen
5019dd8791 - Check for packets that are looping back. 2000-11-04 17:09:10 +00:00
Ivo Timmermans
15246df85d In execute_script:
- add an environment variable NETNAME.
- chdir to the configuration directory before execing the script.
2000-11-04 15:32:05 +00:00
Guus Sliepen
3d7189a444 - Resolve scriptname after fork() 2000-11-04 14:52:40 +00:00
Ivo Timmermans
d38772ebc4 Use putenv() instead of clumsy do-it-yourself in execute_script. 2000-11-04 14:16:46 +00:00
Ivo Timmermans
f83803c1bf Small change to the way the environment is copied. 2000-11-04 13:25:15 +00:00
Guus Sliepen
ed0bf283e3 - Removed even more warnings. 2000-11-04 11:49:58 +00:00
Guus Sliepen
dc699f8b12 - Removed unused MAC strip/add functions. 2000-11-04 10:37:27 +00:00
Ivo Timmermans
73aa7fbf7e Run the scripts tinc-up and tinc-down from a separate function, which
sets the environment as it should be and checks for errors.
2000-11-03 22:33:16 +00:00
Ivo Timmermans
013fcb0e9f Changed a few messages wrt. system calls; updated and changed the Dutch translation a bit. 2000-11-02 22:05:36 +00:00
Guus Sliepen
4811afa073 - Small cleanups
- Updated dutch translation
- Updated man pages
2000-10-30 00:22:54 +00:00
Guus Sliepen
ec12269355 - Use CFB mode for encrypting packets: it works and we don't need padding. 2000-10-29 22:10:44 +00:00
Guus Sliepen
cea3d8f305 - Small fixes
- Do proper key exchange
- Encrypt packets - it works, but there is something wrong with the MAC
  header after decryption...
2000-10-29 10:39:08 +00:00
Guus Sliepen
8fa9bc017d - Removed old encr stuff 2000-10-29 09:19:27 +00:00
Guus Sliepen
a26d371d0d - Updated dutch translation.
- Shutdown properly.
2000-10-29 02:07:41 +00:00
Guus Sliepen
3b9802a542 - Hit people who can't figure out subnet address/mask pairs with a
(clue)bat.
2000-10-29 00:46:43 +00:00
Guus Sliepen
35932fe6c8 - Very big cleanup. 2000-10-29 00:02:20 +00:00
Guus Sliepen
db21f01516 - Override destination ethernet address on incoming packets with
FE:FD:00:00:00:00
2000-10-28 21:52:22 +00:00
Guus Sliepen
8738c007b1 - Fixed offsets when reading/writing from/to tap device 2000-10-28 21:25:21 +00:00
Guus Sliepen
f25868fd2b - Lots of small fixes
- Exchange subnets on acknowledgement of connection
- Do proper lookup when incoming packets from tap
- off-by-a small number-error when reading/sending tap packets
2000-10-28 21:05:20 +00:00
Guus Sliepen
d47d5932a3 - Updated subnet list handling. Subnets are added to two lists now, the
owner's list and a global list. It is all fucked up but it probably
  works anyway, good enough for pre3 :).
2000-10-28 16:41:40 +00:00
Guus Sliepen
9c2f805255 - Lots of little stuff modified
- Succesfully reads in subnets from host config file now and adds them to
  the list.
2000-10-24 15:46:18 +00:00
Ivo Timmermans
56d8e86240 Include linux/sockios.h and net/if.h anyway, regardless of the value of HAVE_TUNTAP. 2000-10-22 13:37:15 +00:00
Guus Sliepen
52b842f807 - Fixed all debug levels.
- Seed PRNG before generating a challenge
- Strange thing in challenge decryption: it fails if first bit is set!?
2000-10-21 11:52:08 +00:00
Guus Sliepen
73f7efddd7 - Removed last reference to genauth from Makefile.am
- Tinc spawns tinc-up and tinc-down scripts which can be used to configure
  the network device. The environment variable IFNAME is set to the name
  of the interface.
2000-10-20 19:46:58 +00:00
Guus Sliepen
9f64499e40 - tinc now really does public/private key encryption! It even works, whee! 2000-10-20 15:34:38 +00:00
Guus Sliepen
20301888b7 - More fixing. Tinc daemons can now even create activated connections. 2000-10-16 19:04:47 +00:00
Guus Sliepen
bb3d18d56f - Fixing little things
- Two tinc daemons can connect to eachother now (but they disconnect right
  after the ACKs).
2000-10-16 16:33:30 +00:00
Guus Sliepen
baeac83bf4 Corrected #ifdefs for tun/tap support. 2000-10-15 20:30:39 +00:00
Ivo Timmermans
e5130495d7 Wrap the tun/tap code in #ifdef HAVE_TUNTAP 2000-10-15 19:53:15 +00:00
Guus Sliepen
85adeef212 - The daemon actually runs now (somewhat)
- Added support for tun/tap driver (autodetect!)
- More sophisticated checkpoint functionality
- Updated dutch translation
2000-10-15 00:59:37 +00:00
Guus Sliepen
e9635ae38e - Second fixing-things pass: it even links now.
- Lots of FIXME comments added to the source code.
2000-10-14 17:04:16 +00:00
Guus Sliepen
183a8edd22 - Fixing-things pass: every source file compiles into an object file now,
but linking tincd does not work yet (must link with openssl libs and
  define some missing functions).
2000-10-11 22:01:02 +00:00
Guus Sliepen
950fb8e916 Big and bad commit of my current tree...
- Added seperate file for connection list handling
- Updating everything to use connlist, meta and subnet files
- Removed dependency on libgmp
- Lots of other stuff...
2000-10-11 10:35:17 +00:00
Guus Sliepen
c78a204f06 - Added meta.c which contains functions to send, receive and broadcast
metadata. It will also handle encryption and decryption, and possibly
  compression and checksumming.
- Moved request dispatcher to protocol.c.
2000-09-26 14:06:11 +00:00
Guus Sliepen
361690b18c - Removed options "string" stuff. It was a bad idea...
- free() everything that is allocated.
2000-09-22 16:20:07 +00:00
Ivo Timmermans
7f3ab38c22 Second round of fixes 2000-09-15 12:58:40 +00:00
Ivo Timmermans
ed397b6ac6 First round of needed fixes after the overhaul 2000-09-14 21:51:21 +00:00
Guus Sliepen
c04c84c980 - Lots of small changes. 2000-09-14 11:54:51 +00:00
Guus Sliepen
4dde583bc9 - Use strerror() instead of sys_errlist[] for increased portability
(Needed for SunOS)
2000-09-06 11:49:05 +00:00
Guus Sliepen
9acd4379f7 - Added two extra configuration options, Interface and InterfaceIP, to
bind the listen socket to a network device or a specific IP.
2000-08-09 14:02:16 +00:00
Guus Sliepen
f6d79366b3 - Reinstated O_NONBLOCK for meta socket
- Set SO_KEEPALIVE on meta socket
2000-08-09 09:34:21 +00:00
Guus Sliepen
3cfc9424f2 - Moved TCP packet reception to meta handler: less kludgy and less buggy! 2000-08-08 17:07:48 +00:00
Guus Sliepen
ff87f385c3 Removed calling add_queue for tcponly packets. 2000-08-08 13:47:57 +00:00
Guus Sliepen
b6997b0050 - Lots o' buglets fixed (-Wall helps)
- Made TCPonly work :)
2000-08-07 16:27:29 +00:00
Guus Sliepen
fdc6a2f106 - Added experimental hackish tunneling-over-TCP support.
Just use TCPonly = true in the configuration file.
2000-08-07 14:52:16 +00:00
Guus Sliepen
42455e97a0 - Fixed typo. 2000-07-02 13:40:57 +00:00
Guus Sliepen
b1ecbf9777 - Delayed address resolving for ConnectTo lines in configuration file to
allow DynDNS to work without restarting tincd.
2000-07-02 13:36:18 +00:00
Guus Sliepen
1a1ebefd57 - Made tinc even more silent if no -d flag is given at all. 2000-06-30 21:03:51 +00:00
Guus Sliepen
c5737583c8 - Instead of logging an error when remote end closes the connection,
we print a nice message if appropiate debug level is set.
- If we get ADD_HOSTs or DEL_HOSTs for ourself, then connection lists
  are really messed up. We restart, and hope our problems go away.
2000-06-30 12:41:06 +00:00
Guus Sliepen
24874d0806 - Removed segfault bug in conf.c (must have been there for ages!)
- Made main_loop() signal proof
- #defined MAXTIMEOUT (15 minutes)
- If something really really bad happens, close all connections, wait
  for MAXTIMEOUT seconds, and then restart tinc
2000-06-30 11:45:16 +00:00
Guus Sliepen
0f9ad1f047 - Fixed memory leak.
- Implemented SIGHUP configuration file reloading.
- Other small changes.
2000-06-29 19:47:04 +00:00
Guus Sliepen
18c85caac3 - New semantics for BASIC_INFO, ADD_HOST and DEL_HOST requests. This will
improve connection list consistency, ensures the tree property, and
  allows for recovery from situations where track of connections is lost.
2000-06-29 17:09:08 +00:00
Guus Sliepen
e8e7379311 - Removed all IP_ADDR_S macros, because gettext doesn't like them. Each
connection now has two hostnames: real_hostname (replacing the old),
  and vpn_hostname. In those places where hostnames really aren't usefull
  IP_ADDR_S has been replaced by %d.%d.%d.%d.
2000-06-29 13:04:15 +00:00
Guus Sliepen
dba2995db7 - Extra check op EINTR bij inlezen requests 2000-06-28 10:11:10 +00:00
Guus Sliepen
4ee53e7dac - Fixes a silly little insignificant buglet. 2000-06-27 21:05:07 +00:00
Guus Sliepen
4aeaea5e59 - Improved handling of errors on connection attempts. 2000-06-27 20:10:48 +00:00
Guus Sliepen
45a28b1e89 - Fixed indirectdata=no problem
- Added support for multiple ConnectTo lines in tinc.conf.
2000-06-27 15:08:58 +00:00
Guus Sliepen
04cb206298 - Moved all connection messages to debug level 1, without -d's only the
startup message will be logged.
- Fixed DEL_HOST rebound.
2000-06-26 20:30:21 +00:00
Guus Sliepen
783c829861 - Indirectdata finally REALLY REALLY works now!
- More precise debug messages
2000-06-26 19:39:34 +00:00
Guus Sliepen
b3681ebf6c Fixes some hostlookups. Fixes indirectdata for real now (hopefully). 2000-06-26 17:20:58 +00:00
Guus Sliepen
f1f901112e Hostlookup() is actually being called now. 2000-06-25 16:20:27 +00:00
Guus Sliepen
54079bdf03 Hostnames are back! 2000-06-25 16:01:12 +00:00
Guus Sliepen
7f7e158aae Large cleanup:
- Removed hostname lookup (it blocks, and you can always do it yourself)
- Reorganized debug levels (after hints from Axel M�ller):
  0	Startup message and errors
  1	Connection logging
  2	Meta protocol information
  3	Verbose meta protocol (includes copy of transmitted requests)
  4	Packet information (logs transmission/errors of UDP packets)
  5	Verbose packet information (every single byte, not implemented yet
	to protect ourselves from filling up /var/log directories)
- Made log messages more consistent
2000-06-25 15:16:12 +00:00
Guus Sliepen
3c54a513b0 If we have "indirectdata" flag set, we only send data to our uplink. 2000-06-24 12:35:42 +00:00
Guus Sliepen
d8e2f7104c First step for implementation of the "indirectdata" directive. This should
allow _leaf_ tincds to be behind firewalls.
The protocol has changed and is INCOMPATIBLE with previous versions. The
PROT_CURRENT value has been incremented.
2000-06-23 19:27:03 +00:00
Ivo Timmermans
77be52422d Miscellaneous copyright updates. 2000-05-31 18:23:06 +00:00
Ivo Timmermans
e7f22d2f5f In terminate_connection, only send a notification to hosts that are directly connected to us. (DEL_HOST gets forwarded automatically.) 2000-05-30 12:38:15 +00:00
Ivo Timmermans
2fdda8e4fa When a connection is terminated, all hosts that are still connected get notified of the lost connections. 2000-05-30 12:31:41 +00:00
Guus Sliepen
a7ad161d2b Only activate a connection upon receiving it's public key if it's an
incoming connection. When it's outgoing, we need to receive an ack first.
2000-05-29 23:40:05 +00:00
Ivo Timmermans
a822c7466a Bounds check for request id (between 0 and 255). 2000-05-29 22:20:04 +00:00
Ivo Timmermans
9fd02ffcb0 Internationalization of tinc. 2000-05-29 21:01:26 +00:00
Guus Sliepen
61e71ab74a Terminate a connection on any error. Furthermore, disallow del_host,
add_host and other important requests until remote host has properly
authenticated itself.
2000-05-27 20:23:01 +00:00
Guus Sliepen
cc01b18bc6 Made tinc persistent. If no outgoing connection can be established right
after the start of the daemon, it won't quit anymore but will retry in 5
minutes. Also, 5 minutes is now the maximum time to wait for a retry.
2000-05-27 19:44:04 +00:00
Guus Sliepen
028659bfbf Fixed typos. When terminating a connection, it's status is not only set to
remove=1 but also active=0.
2000-05-27 19:23:20 +00:00
Guus Sliepen
e4ff969a98 Fix for a DoS attack:
A remote user could telnet to the tinc daemon and type only this line:
 61 6 00000000/00000000:28f
 This would deny any packets to be sent to other tinc networks (except
 for to the hosts that run tincd's themselves). Solution is to skip
 hosts in lookup_conn() that have not been activated yet.
Fixed potential conn_list table corruption:
 If a new connection is accepted but a connection with the same subnet
 would already exist in the connection list, the OLD connection is
 terminated.
2000-05-27 19:04:12 +00:00
Ivo Timmermans
803f908078 Give IP address instead of hex number when connecting tcp socket failed. 2000-05-14 21:07:16 +00:00
Guus Sliepen
9d023b1f2e Fixed typos. 2000-05-14 13:06:52 +00:00
Guus Sliepen
e20e143f1e Changed ping behaviour (backwards compatible). If we don't have any data
to send, we don't need to check if the connection is still alive.
Furthermore, if we receive any kind of data from the other end, we know
it's alive, so we don't need to check it either. So, PING requests are
only sent if we send packets but there is no response.
2000-05-14 13:02:20 +00:00
Guus Sliepen
ee96ccabbb Cleanups. 2000-05-14 12:22:42 +00:00
Guus Sliepen
8caa1b9d75 Proxymode removed. 2000-05-14 11:39:18 +00:00
Guus Sliepen
d0ba34ccae Added new config variable "ProxyMode". If enabled, all outgoing packets
are sent to the uplink (ConnectTo), which will have to forward them for
us (kernel should do that). This is for people behind firewalls.
2000-05-08 18:44:15 +00:00
Guus Sliepen
a083b1cf30 Squashed gcc warning. 2000-05-03 18:02:15 +00:00
Guus Sliepen
7853247523 Fixes typo and UDP network byte order. 2000-05-03 17:59:07 +00:00
Guus Sliepen
505b5ec2cd Outgoing packets now use network byte order in header. 2000-05-03 15:37:32 +00:00
Guus Sliepen
aeccaca829 Previous fix fixed. Meta protocol should be really flawless from now on! 2000-05-02 09:55:34 +00:00
Guus Sliepen
989d7edc07 Fixed small mistake that would prevent forwarding requests. 2000-05-02 09:10:33 +00:00
Guus Sliepen
ca6abd41ea Meta protocol overhaul. Tinc is now incompatible with previous versions,
furthermore this version does NOT work yet because of a problem with
sending keys (these should be converted to base36 or something like that).
It is possible to telnet to the tinc daemon now and type some commands
by hand though :).
2000-05-01 18:07:12 +00:00
Ivo Timmermans
ca73b722cb New way of handling the meta protocol. 2000-04-30 16:11:05 +00:00
Ivo Timmermans
cd12345032 Replaced check for status.active by status.dataopen in check_network_activity. 2000-04-30 13:23:53 +00:00
Ivo Timmermans
1c007c0627 Got rid of the nasty hacks... and replaced it by another one. 2000-04-30 01:15:47 +00:00
Guus Sliepen
2371551014 Oops! Reference to write_n() removed and changed into neat write() call. 2000-04-28 11:33:25 +00:00
Guus Sliepen
bb8fff92e1 Removed write_n() function. 2000-04-27 20:57:18 +00:00
Guus Sliepen
44f9449888 Cleanups:
- Changed recv/send calls into read/write calls for streams
- Made all sizeof() functions use a variable name instead of type
2000-04-26 17:42:55 +00:00
Ivo Timmermans
643d8712eb Debug level tweaking. 2000-04-25 22:00:49 +00:00
Guus Sliepen
468f1d2efc When trying to talk to a host that is in the netmask of a tinc server but
not the tinc server itself, and no keys have been exchanged yet, the key
request would be directed to the host instead of the server. Fixed.
2000-04-25 20:50:59 +00:00
Guus Sliepen
dad90e82d3 Fixed typo and removed some unnecessary variables. 2000-04-25 20:17:44 +00:00
Guus Sliepen
5b72422857 Packet queues fixed. They caused the trouble when resending keys. 2000-04-25 20:10:37 +00:00
Guus Sliepen
3a33568652 Added checkpoints to beginning and ending of every function. 2000-04-25 18:57:23 +00:00
Ivo Timmermans
b50523dc44 Get rid of the message `zxnrbl\'. 2000-03-27 22:30:27 +00:00
Ivo Timmermans
1243156a5e Initial revision 2000-03-26 00:33:07 +00:00