This patch inserts LAN discovery in DHT_bootstrap, allowing it to find clients even if it's run parameterless (and clients don't connect to it directly, e.g. because the port is already bound to a different client).
- moves the #define of LAN_DISCOVERY_INTERVAL from Messenger.c to LAN_discovery.h
- includes LAN_discovery.h into DHT_bootstrap.c
- DHT_bootstrap.c sends and accepts LAN_discovery packets
- addr_resolv(_or_parse_ip)(): added an optional parameter to return both an IPv6 and an IPv4 address if requested address family was AF_UNSPEC
- logging of unhandled packets
DHT.c:
- bootstrap_from_address(): use the additional return from addr_resolv_or_parse_ip() to bootstrap in both network types at once
Lossless_UDP_testclient.c:
- main(): adapt to signature change of addr_resolve()
Messenger.c. LAN_discovery.h:
- lost a htons(), readded
- moved LAN_DISCOVERY_INTERVAL #define into LAN_discovery.h
LAN_discovery.c:
- added IPv4-in-IPv6 local address test
- #define'd tox's network port (as range)
- finally killed tox_new_ex() in favor of changing tox_new()'s signature
- renamed tox_bootstrap() to tox_bootstrap_from_ip()
network.h:
- #define'd tox's network port (as range)
- renamed SEND_NODES_EX to SEND_NODES_IPV6
- bind() loop uses #define'd port range
DHT.c:
- renamed SEND_NODES_EX to SEND_NODES_IPV6
- sending ipv6 node addresses even if can't use them ourselves
nTox.c:
- adapted to changed tox_new()
- correct a message who claims we're going to exit when we actually aren't
- don't treat a failed close on reading the data file as failure of the reading
- don't claim "Added friend" per default, check for returned ID first
- on '/q' SAVE... else everything but the keys is lost on each restart
- for that, split load_key() into load_data() and save_data()
- announce own nickname on startup
- tox_bootstrap_ex(), DHT_bootstrap_ex() renamed to tox_bootstrap_from_address(), DHT_bootstrap_from_address()
- (handle_)sendnodes_ex() renamed to (handle_)sendnodes_ipv6()
- only sending sendnodes_ipv6() if we're actually IPv6 enabled
- changed comments to conform better
nTox.c, Messenger_text.c, DHT_test.c, DHT_bootstrap.c:
- fallout from *_ex() to *_from_address()
DHT_bootstrap.c:
- corrected a potentially wrong info message
util.c:
- fixed logfile name: now (funcptr) => now() (number)
network.c:
- addead comment about the necessity of bind() to succeed
auto_test/messenger_test.c:
- defaulting ipv6enabled to TOX_ENABLE_IPV6_DEFAULT
LAN_discovery.c:
- slight cleanup and comments for clarity
- return to the caller if the string could be resolved into an IP
other/DHT_bootstrap.c, testing/*_test.c, testing/nTox.c:
- parse cmdline for --ipv4/--ipv6 switch to allow user a choice
util.h:
- proper old-style C-comment
- client_in_list: split loop in two to avoid inserting a client_id duplicate
- final pieces for IPv6 expansion: (handle_)sendnodes_ex(), called from hande_getnodes() resp. handler callback
- initialisation: argument added to enable/disable ipv6 as socket
Messenger_test.c:
- initialisation: ipv4 hardcoded for now
- delegating IP resolution to DHT_bootstrap_ex()
- initialisation: argument added to enable/disable ipv6 as socket
Messenger_test.c:
- initialisation: ipv4 hardcoded for now
- delegating IP resolution to DHT_bootstrap_ex()
- second set of *_bootstrap_ex() functions to allow addresses instead of IPs
network.h:
- new message ID for sending/receiving IPv6 nodes
DHT.*:
- get_close_nodes():
- additional parameter to select which kind of nodes: IPv4 or IPv6
- sendnodes()/handle_sendnodes():
- the IPv4 message must remain intact even when the Node_format structure (which embeds IP_Port) is expanded
- added Node4_format to keep the structure "alive"
- copying in/out of wider to smaller format required in sendnodes()/handle_sendnodes()
- switch of Node_format from Node4_format to Node46_format by define
- IP4: changed in_addr_t to struct in_addr for compatibility reasons
- IP6: added
- IPAny: added
- addr_resolve_or_parse_ip(): converts a string into an IPAny