summaryrefslogtreecommitdiff
path: root/toxcore/network.h
AgeCommit message (Collapse)Author
2014-05-17Net_crypto can now handle packets sent as TCP OOB packets.irungentoo
Added timestamp to know which DHT public key is good in case onion_client and net_crypto report different ones.
2014-05-03All time in core is now monotonic.irungentoo
2014-05-01Random number functions belong in crypto_core.irungentoo
2014-05-01Improved the crypto_cmp function.irungentoo
It now uses the NaCl functions when the length is appropriate. Moved crypto defines to crypto_core.h
2014-04-29Some more work done on the middle network protocol.irungentoo
Handshake most likely has no more possible flaws to it, next thing to do is to do the same with the data packets. Wrote a couple more functions.
2014-04-28Added some packet defines.irungentoo
2014-04-22Decided pretty much how the handshake would work.irungentoo
Started writing the code. Astyled some files.
2014-04-21Crypto related cleanups.irungentoo
Moved Bunch of functions from net_crypto to crypto_core. decrypt_data_fast and decrypt_data_symmetric were the same thing therefore, removed decrypt_data_fast. Replaced all the crypto_secretbox_* defines with the equivalent crypto_box_* one. New define: crypto_box_KEYBYTES that is equal to crypto_box_BEFORENMBYTES.
2014-04-15Major protocol changes, this commit breaks all network compatibility.irungentoo
Removed a bunch of useless space from various structs. pack_nodes() and unpack_nodes() are now used to transmit lists of nodes for the DHT and onion parts. They provide a way to transmit both ipv6 and ipv4 nodes in the same packet in a portable way that takes as little space as possible without compression. Using pack_nodes, merged the send nodes and send nodes ipv6 packets into one packet greatly reducing the risk of amplification attacks.
2014-04-13sockets: support Mac OS X way of disabling SIGPIPE on a socketSteven Noonan
Mac OS X doesn't have MSG_NOSIGNAL, so we need to use SO_NOSIGPIPE. Signed-off-by: Steven Noonan <steven@uplinklabs.net>
2014-04-06Added TCP_client.irungentoo
Some work done on the TCP part.
2014-04-02Some code cleanups.irungentoo
2014-03-29TCP server now has onion functionality.irungentoo
All the IP/Port related structs now have __attribute__ ((__packed__))
2014-03-18Merge branch 'api-fix'irungentoo
Main changes: 1. Strings no longer need to be NULL terminated. 2. tox_get_friend_id is now named tox_get_friend_number. 3. The friend request callback function is now (Tox *tox, uint8_t *, uint8_t *, uint16_t, void *), the Tox object pointer has been added to it.
2014-03-15A bit of work done on the TCP relay server.irungentoo
2014-03-07Some tox_wait_* improvementsMaxim Biro
2014-02-22Renamed dht server to dht nodeMaxim Biro
2014-02-14Added custom userpackets.irungentoo
A way to send and handle lossy UDP packets coming from friends. Will be used for A/V.
2014-02-01Added DHT bootstrap server info packets.irungentoo
define DHT_SERVER_EXTRA_PACKETS to enable.
2014-01-30Convert IPv4 in IPv6 to IPv6 address in recieve packet.irungentoo
2014-01-25missing #endifSean
2014-01-25Moved to networking.hSean
Plan 9 requires u.h in every file
2014-01-19proper windows preprocessor detectionBen Iofel
2013-12-24Added the shell of onion.{c, h}irungentoo
2013-12-21Added function to save an encrypted version of the messenger.irungentoo
Also added some tests.
2013-12-15Code cleanups.irungentoo
No functionality changed.
2013-12-08Compatibility fixes.irungentoo
AF_INET/AF_INET6 can vary across devices, we introduce TOX_AF_INET and TOX_AF_INET6 to fix this.
2013-12-07Added/updated some basic docs and cleaned up some things.irungentoo
2013-12-06Merge branch 'master' into hardenirungentoo
2013-11-18Merge pull request #650 from FullName/ID-IP-basicirungentoo
Significantly trimmed down version of an ID<=>IP cache.
2013-11-16Fixed build error on windows.irungentoo
2013-11-14Significantly trimmed down version of an ID<=>IP cache.Coren[m]
Besides acknowledging timeouts, the module isn't trying to do anything fancy with the data besides storing and retrieving.
2013-10-28Merge branch 'master' into hardenirungentoo
Also removed some old, useless loading code.
2013-10-26Increased port range.irungentoo
2013-10-24Fixed build error with libsodium.irungentoo
2013-10-24Move unix_time(), id_cpy()/id_eq(), is_timeout() to util.*Coren[m]
unix_time(): - returns local value for current epoch - value is updated explicitly with unix_time_update() called at new_DHT()/doMessenger()/do_DHT() is_timeout(): - uses the local value for current epoch id_cpy()/id_eq() => id_copy()/id_equal(): - centralized duplicate definitions - replaced (most) memcpy()/memcmp() of (*, *, CLIENT_ID_SIZE) with id_copy()/id_equal()
2013-10-24Adding encrypted data to send/getnode packets part 1.irungentoo
2013-10-24Removed define that could become confusing.irungentoo
2013-10-20Main: Eliminate TOX_ENABLE_IPV6 (then always on), CLIENT_ONETOONE_IP (then ↵Coren[m]
always off). Additionally (besides cleanups): network.h/tox.h: - WIN32: fix a strange sa_family_t definition - WIN32: define EWOULDBLOCK to WSAEWOULDBLOCK - WIN32: kill macro for an existing function (IN6_ADDR_EQUAL) network.c: - use EWOULDBLOCK instead of EAGAIN (same value, but EWOULDBLOCK is more "popular") - new_networking(): only try to enable IPv4-in-IPv6 if it's not already enabled per default - inet_ntop()/inet_pton(): WIN32: remove partial initializers in favor of a simple memset() - ip_equal(): WIN32: use an existing function - logging: networking_wait_execute(): only dump result if not timeout - logging: loglogdata(): kill an unused variable LAN_discovery.c: - send_broadcasts(): re-enabled, can only support IPv4 by principle, split into fetch_broadcast_info() (to fetch the addresses once) and send_broadcasts() (actual sending) DHT.c: - DHT_load_state_callback(): enclosed a fprintf(stderr, ...) into #ifdef DEBUG Lossless_UDP.c: - change_handshake(): harden against strange sa_family_t definitions Messenger.c: - logging: fix ID to string conversion util.c: - logging: eliminate a signed-warning
2013-10-13Small fix.irungentoo
2013-10-13tox A/V: integration of A/V code into toxmannol
Also-by: Sergey 'Jin' Bostandzhyan <jin@mediatomb.cc>
2013-10-06sendqueue_length no longer determines if we check for socket-can-write, but ↵Coren[m]
sendpacket() sets a timestamp if it happened network.*: - sendpacket(): checks result and on EAGAIN, stores time of this event - networking_wait_prepare(): uses the time if set to check up to 500ms later for the socket to be writeable again - networking_wait_cleanup(): clears the time if the socket was writeable - fixed some accidental tabs Messenger.*, tox.*: - pass-through functions to reach networking_wait_cleanup() - fixed some accidental tabs
2013-10-05Broken *_wait() into *_wait_prepare() and *_wait_execute()Coren[m]
To allow the actual waiting to run without any locking, split it into preparing the data it uses and the execution of the wait. The caller must provide with the buffer to store whatever data it requires to wait. Completely eliminates any reliance on the existence of anything but that data in the actual wait routine. Also fixed a few argument type warnings inside LOGGING.
2013-10-03Only add write-ready to select() if we have packets queuedCoren[m]
Lossless_UDP.*: - sendqueue_total() sums sendqueue() across all connections network.*, Messenger.c: - sendqueue_total() is collected and then used in deciding if we select() on write-readiness
2013-10-02Add tox_wait() for socket, allow tox.h include in tox.cCoren[m]
tox.*, Messenger.*, network.*; - new function tox_wait() => waitMessenger() => networking_wait(): - waits for a given amount of time for any sort of socket activity - mustn't change anything inside, mustn't poll or do other stuff - the point is to be able to call this asynchronously from a second thread - the outside shall follow up with an immediate tox_do() when there's socket activity tox.*: - allow inclusion of tox.h into tox.c, ensuring that the outside interface and the internal always match util.c: - squished a few warnings about questionable format strings
2013-09-22Fix inet_pton/ntop on win32BtbN
2013-09-21Fix compilation on windows for ipv6 codeBtbN
2013-09-15more portability fixes.irungentoo
2013-09-15Fixed portablity problems.irungentoo
struct in6_addr member names can differ per platform.
2013-09-13Merge remote-tracking branch 'upstream/master' into IntegrationCoren[m]