Commit graph

547 commits

Author SHA1 Message Date
Guus Sliepen
c73bdd6bc8 OpenBSD tun device uses address family number instead of Ethernet type. 2002-03-24 17:08:38 +00:00
Guus Sliepen
8379c14b7f Respect type field. 2002-03-24 16:50:58 +00:00
Guus Sliepen
4252ae83a4 Set $INTERFACE correctly when using ethertap while compiled with tun/tap support. 2002-03-24 16:36:56 +00:00
Guus Sliepen
d699f3079c Execute hosts/name-up when a node becomes reachable, and hosts/name-down
when it becomes unreachable.
2002-03-24 16:28:27 +00:00
Guus Sliepen
6ad5dd1a9a Don't try to execute scripts unless they exist. 2002-03-24 16:22:59 +00:00
Guus Sliepen
594d5b5d15 Reset retry timeout when receiving the first PONG, not right after receiving the ACK. 2002-03-23 20:21:10 +00:00
Guus Sliepen
cbd8133ab4 Don't run graph algorithms if no edge is deleted in terminate_connection(). 2002-03-23 20:13:56 +00:00
Guus Sliepen
6aee1ad021 free() request strings when deleting past requests from the tree. 2002-03-23 20:12:29 +00:00
Guus Sliepen
ccea26e004 send_ack() was broken. 2002-03-23 20:01:05 +00:00
Guus Sliepen
3c5655f59e Fix compiler warnings, strictly use long int and %lx for options. 2002-03-22 13:31:18 +00:00
Guus Sliepen
d6b70ed6f8 Fix add_edge_h(). 2002-03-22 12:41:54 +00:00
Guus Sliepen
52e7699273 - Added support for jumbograms.
- Remove tcpaddress from edges, it is not used at all.
- Last bits of code to prevent looping requests.
2002-03-22 11:43:48 +00:00
Guus Sliepen
9da5390666 Put a break on requests that run around in circles. 2002-03-21 23:11:53 +00:00
Guus Sliepen
f48f8f4fed Updated SSSP algorithm to automatically detect indirect links (if a node uses
different addresses for connections to other nodes).
2002-03-19 22:48:25 +00:00
Guus Sliepen
5c2d74de86 Don't use s6_addr[16|32] anymore. 2002-03-19 00:08:23 +00:00
Guus Sliepen
9d99a789c3 Cleanup. 2002-03-19 00:07:09 +00:00
Guus Sliepen
305505f5ec Remember sockaddrs of listening sockets, use appropriate one when sending
UDP packets.
2002-03-18 22:47:20 +00:00
Guus Sliepen
106fc2b769 Fix #define s6_addr32. 2002-03-18 14:39:37 +00:00
Guus Sliepen
813c369a8f #define s6_addr32, needed for FreeBSD. 2002-03-18 14:19:02 +00:00
Guus Sliepen
b2579385de Only unmap IPv6 addresses. 2002-03-17 16:08:39 +00:00
Guus Sliepen
8b84c44175 Unmap v4mapped sockaddrs. 2002-03-17 15:59:29 +00:00
Guus Sliepen
07e37f8da0 Typo. 2002-03-15 15:50:14 +00:00
Guus Sliepen
e0dee53770 Different way of detecting neighbor solicitation requests. 2002-03-15 15:40:40 +00:00
Guus Sliepen
0e93f0aa02 Oops, don't forget to actually put the checksum in the response packet. 2002-03-15 15:08:21 +00:00
Guus Sliepen
e1de9ca990 Neighbor solicitation requests now work (I think). 2002-03-15 14:41:57 +00:00
Guus Sliepen
4b3aef9e69 Revert changes to Kruskal's algo. 2002-03-12 16:30:15 +00:00
Guus Sliepen
f219f156cf Put #ifdef NEIGHBORSOL around corresponding code. 2002-03-12 14:25:04 +00:00
Guus Sliepen
ecad9e9289 Remove silly cache thingy. 2002-03-12 14:20:44 +00:00
Guus Sliepen
d6c2c4f2b7 Packet sequence number/authentication warnings only if debug_lvl >= 5. 2002-03-12 14:19:51 +00:00
Guus Sliepen
2e7db2a693 Simplified implementation of Kruskal's minimum spanning tree algorithm. 2002-03-12 13:42:23 +00:00
Guus Sliepen
d2e0ed533c New strategy: forward icmp6 neighbor solicitations to intended target. 2002-03-11 13:56:00 +00:00
Guus Sliepen
46fa10cec7 Try to reply to neighbor solicitation requests. 2002-03-11 13:14:53 +00:00
Guus Sliepen
c2713ba7a5 prune_connections() before build_fdset(). 2002-03-11 11:45:12 +00:00
Guus Sliepen
4fda4560bb Cleanups, spelling fixes, allow symbol names for signals (-k option),
don't remove pidfile if other tincd is still running.
2002-03-11 11:23:04 +00:00
Guus Sliepen
5ffeb13d65 Don't retry to make outgoing connections when exitting. 2002-03-10 16:09:15 +00:00
Guus Sliepen
024ab44d98 Fix forwarding of IPv6 packets. 2002-03-10 14:04:48 +00:00
Guus Sliepen
0c16add71c Check if BindToDevice and PriorityInheritance are supported. 2002-03-01 15:14:29 +00:00
Guus Sliepen
7d5741859e Woops. 2002-03-01 14:33:48 +00:00
Guus Sliepen
ab90fa9bd1 Document and clean up MAC address expiry. 2002-03-01 14:25:10 +00:00
Guus Sliepen
14979f835d - Global time_t now, so that we don't have to call time() too often.
- MAC addresses expire after a time configurable by MACExpire (default 600
  seconds)
2002-03-01 14:09:31 +00:00
Guus Sliepen
f93b1334e0 Create/bind TCP and UDP listening sockets in pairs. 2002-03-01 13:18:54 +00:00
Guus Sliepen
c2b738e7b5 If "PriorityInheritance = yes" is specified in tinc.conf, the value of the
TOS field of the tunneled packets will be passed on to the UDP packets tinc
sends out.
2002-03-01 12:26:56 +00:00
Guus Sliepen
80ea653e8d Fix listening sockets. 2002-03-01 12:25:58 +00:00
Guus Sliepen
7f58ed7685 Make BindToInterface work. 2002-03-01 11:18:34 +00:00
Guus Sliepen
17bc5220c3 Fix send_request() bug. 2002-02-27 22:37:55 +00:00
Guus Sliepen
50403909b6 Allow multiple listening sockets. 2002-02-26 23:26:41 +00:00
Guus Sliepen
2ac7be0d51 Tweaking IPv6 support. 2002-02-26 22:47:51 +00:00
Guus Sliepen
23fda5688e - Change SA_LEN to SALEN, former one is already defined on some platforms.
- Use SALEN everywhere appropriate.
2002-02-20 22:37:38 +00:00
Guus Sliepen
dbc5b5bb5e - Use gai_strerror() where appropriate
- Clear hints before using them with getaddrinfo()
- Use sa_len on platforms that support them
2002-02-20 22:15:32 +00:00
Guus Sliepen
28cc9a6488 Preserve inpkt->len, needed for broadcasts. 2002-02-20 19:31:15 +00:00
Guus Sliepen
c6d0158831 Protocol now also exchanges cipher/digest/maclength/compression for the
meta connection.
2002-02-20 19:25:09 +00:00
Guus Sliepen
626d5956d2 Cache results of lookup_subnet_...(). 2002-02-20 17:16:15 +00:00
Guus Sliepen
e8e69460a7 Fix maskcmp() and maskcpy(). 2002-02-20 17:15:33 +00:00
Guus Sliepen
ed50931290 Forward packets in router mode. 2002-02-20 16:04:59 +00:00
Guus Sliepen
8c91fac315 Use AF_UNSPEC for listening sockets if AddressFamily = any. 2002-02-20 16:04:39 +00:00
Guus Sliepen
76f01453df Fix segfault when receiving HUP signal. 2002-02-20 16:04:07 +00:00
Guus Sliepen
c2b9c06062 - Non-blocking connect()s.
- Socket handling revamped to use sockaddr_t.
- tinc can now tunnel over IPv6.
- Handle all addresses and subnets in network byte order.
  Only convert them when they need to be printed.
- IPv6 subnets bigger than /128 now work.
- Use %s and strerror(errno) instead of %m.
2002-02-18 16:25:19 +00:00
Guus Sliepen
2fb8a62ede Added device.c for NetBSD, actually a copy of the OpenBSD one. 2002-02-12 14:40:12 +00:00
Guus Sliepen
f64b41a73b Get rid of sys/signal.h. 2002-02-12 14:36:45 +00:00
Guus Sliepen
dd611fb4f9 Don't use sa_sigaction (which NetBSD doesn't like) at all if we don't use siginfo. 2002-02-12 14:29:00 +00:00
Guus Sliepen
d9a62c6354 Added support for packet compression, thanks to Mark Glines.
Add "Compression = <level>" to the host config files, where level can be
0 (off), or any integer between 1 (fast) and 9 (best).
2002-02-11 15:59:18 +00:00
Guus Sliepen
94b171b305 Small fix. 2002-02-11 14:20:46 +00:00
Guus Sliepen
1708997bc8 - If no PrivateKeyFile is specified, /etc/tinc/netname/rsa_key.priv is assumed.
- Check RSA key before using it.
2002-02-11 14:20:21 +00:00
Guus Sliepen
1c34ba7fb8 Sensible defaults for $INTERFACE. 2002-02-11 12:33:01 +00:00
Guus Sliepen
24cc2a9065 Last bits of the merger. 2002-02-11 10:16:18 +00:00
Guus Sliepen
5bf4b88666 Forgot to merge new files from pre5. 2002-02-11 10:05:58 +00:00
Guus Sliepen
f0aa9641e8 Merging of the entire pre5 branch. 2002-02-10 21:57:54 +00:00
Ivo Timmermans
c2752b961c Conversion to struct addrinfo is almost complete for this file. 2001-11-16 22:41:38 +00:00
Ivo Timmermans
4f47da5b87 Don't include netutl.h. 2001-11-16 22:40:26 +00:00
Ivo Timmermans
a59bbc7231 Fixed silly typo: "np" instead of "no" 2001-11-16 22:31:41 +00:00
Ivo Timmermans
bf664c054f get_config_subnet needs to be fixed. 2001-11-16 22:31:15 +00:00
Ivo Timmermans
9b2b374734 route_ipv4 and route_ipv6 replaced by route_ip. 2001-11-16 17:40:50 +00:00
Ivo Timmermans
a4938b22e7 Don't include netutl.h. 2001-11-16 17:39:59 +00:00
Ivo Timmermans
ccda709f82 lookup_node_udp changed. 2001-11-16 17:39:38 +00:00
Ivo Timmermans
836766d4c5 First part of rewriting things to use struct addrinfo. 2001-11-16 17:38:39 +00:00
Ivo Timmermans
251f87c842 (re)added port to struct node_t 2001-11-16 15:56:44 +00:00
Ivo Timmermans
6cf744e4b2 Don't include netutl.h. 2001-11-16 12:22:02 +00:00
Ivo Timmermans
a79252af43 Obsoleted. 2001-11-16 12:21:22 +00:00
Ivo Timmermans
331d9402e8 Don't compile/link netutl.c. 2001-11-16 12:16:28 +00:00
Ivo Timmermans
f95e6ca8f6 get_config_{ip,port} removed. 2001-11-16 12:14:20 +00:00
Ivo Timmermans
31db57bb4a Changed to use struct addrinfo where needed. 2001-11-16 12:13:34 +00:00
Ivo Timmermans
f1b20b3ded Obsoleted all IP<x> types in favor of struct addrinfo 2001-11-16 12:10:54 +00:00
Ivo Timmermans
fb6dc0b089 Removed definitions of ipv4_t, ipv6_t, port_t 2001-11-16 12:08:38 +00:00
Ivo Timmermans
3ef15f2554 Changed lookup_connection to use struct addrinfo 2001-11-16 12:02:17 +00:00
Ivo Timmermans
74e1299fb5 Changed prototype for lookup_connection to use struct addrinfo 2001-11-16 12:01:48 +00:00
Ivo Timmermans
51b72b75f2 Use struct addrinfo in connection_t to hold all host data such as IP
address and port
2001-11-16 00:23:28 +00:00
Ivo Timmermans
72395f989c Deprecated get_config_ip and get_config_port 2001-11-16 00:13:08 +00:00
Guus Sliepen
e06415e3d9 More fixes for Solaris. 2001-11-05 19:09:08 +00:00
Guus Sliepen
25a804c94e Various fixes needed for Solaris. 2001-11-05 19:06:07 +00:00
Guus Sliepen
b2d5002ff1 Correctly check if subnet owner exists. 2001-11-04 23:48:27 +00:00
Guus Sliepen
ede6671c13 Be liberal in what you accept: allow unknown edges to be deleted. 2001-11-04 23:29:50 +00:00
Guus Sliepen
cf0e133e19 *** empty log message *** 2001-11-03 22:53:02 +00:00
Guus Sliepen
e5047d2835 Several bugfixes. 2001-11-03 21:22:02 +00:00
Guus Sliepen
8910cbd67e Use PEM functions as suggested by OpenSSL docs. 2001-11-03 21:21:04 +00:00
Guus Sliepen
8e74c5bee4 Some very small fixes 2001-10-31 20:37:54 +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
6d333ad680 Show cfg->variable instead of cfg->value when complaining about wrong type. 2001-10-31 20:07:17 +00:00
Guus Sliepen
54b756f7df Don't forget to read public RSA key when making an outgoing connection. 2001-10-31 20:02:06 +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
cc9473d8c6 Working version of Kruskal's algorithm. The running time is very bad though. 2001-10-29 13:14:57 +00:00
Guus Sliepen
b6298e2c08 - More changes needed for Kruskal's algorithm
- Implemented a breadth-first search algorithm as a cheap substitution for a
  single-source shortest path algorithm.
2001-10-28 22:42:49 +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
1935c44a1e Support new files (node/vertex/device.[ch]) and OpenBSD. 2001-10-13 13:53:07 +00:00
Guus Sliepen
26e517dd37 Forgot the tun specific stuff. 2001-10-12 15:52:03 +00:00
Guus Sliepen
ad61c20f42 Added OpenBSD tun device handling. Untested though. 2001-10-12 15:49:11 +00:00
Guus Sliepen
0c6321a67f Forgot to remove some old #ifdef stuff. 2001-10-12 15:38:35 +00:00
Guus Sliepen
6014c7e637 Solaris tun device handling cleaned up a bit and added. 2001-10-12 15:33:21 +00:00
Guus Sliepen
623c7ee030 Added FreeBSD tap device handling. 2001-10-12 15:22:59 +00:00
Guus Sliepen
ec34f25228 - Split tap device stuff out of net.[ch]
- Each OS gets it's own device.c to get rid of evil #ifdefs.
- Cleaned up Linux ethertap and tun/tap handling.
2001-10-12 15:16:03 +00:00
Guus Sliepen
0bbace18e9 More updates to new node/vertex/connection combo. 2001-10-10 20:35:10 +00:00
Guus Sliepen
ea607d2d92 Revamp configuration handling:
- Store everything in AVL trees (fast lookup)
- No need for hazahaza anymore
- Parse values when needed
- This simplifies a lot of config variable lookups.
2001-10-10 20:34:27 +00:00
Guus Sliepen
5904806dc8 Removed everything from connection.c that has already been moved to node.c and
vertex.c.
2001-10-10 09:42:29 +00:00
Guus Sliepen
ec0c16b9b6 Further implementation of doc/CONNECTIVITY. connection.[ch] is now split into a
node, vertex and connection part.
2001-10-10 08:49:47 +00:00
Guus Sliepen
f22b941751 Small corrections. 2001-10-09 19:37:10 +00:00
Guus Sliepen
49a2cd806c Started implementing doc/CONNECTIVITY. 2001-10-09 19:30:30 +00:00
Guus Sliepen
fcc3ded75f Fix bug when dropping an old connection in favour of a new one from the
same host.
2001-10-08 15:37:14 +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
4d3de3b6a9 Show next- and lastbutonehop when dumping connectionlist to syslog. 2001-09-24 14:16:29 +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
Ivo Timmermans
950c934e0b Killing tincd with SIGINT causes it to toggle between the current
debug level and level 5.  Useful to debug a running tincd.
2001-09-05 18:38:09 +00:00
Guus Sliepen
a54ec980e0 config_t* is a const parameter in get_config_val(). 2001-09-01 12:46:49 +00:00
Guus Sliepen
68e23b1c9e Optional signal number for -k option. 2001-09-01 12:36:53 +00:00
Guus Sliepen
8ed27d40f3 Revised reconnection mechanism, always try out all ConnectTo lines. 2001-09-01 12:36:06 +00:00
Guus Sliepen
ef1facc607 Remove IndirectData support for now, new implementation will be added
later.
2001-09-01 12:02:39 +00:00
Guus Sliepen
8b5e421130 Fix signed comparison bug in lookup_subnet_ipv4(). 2001-08-28 20:52:39 +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
7e86cf91e3 The val variable in a config_t is never used as a long. 2001-07-24 20:13:42 +00:00
Guus Sliepen
43923d2b10 Write public key to rsa_key.pub instead of rsa_key.priv (if not host
configuration file is found).
2001-07-24 20:04:22 +00:00
Guus Sliepen
44e9d6a287 Don't use %m in fprintf(). 2001-07-24 20:03:40 +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
5dc4ade0b9 Don't load table of verbose OpenSSL errormessages. 2001-07-04 08:43:32 +00:00