Commit Graph
100 Commits
Author SHA1 Message Date
Adrien Gallouët dcfaca04a5 Limit number of paths
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2018-04-02 08:44:59 +00:00
Adrien Gallouët c63c94d7c8 Simplify MTU setup and allow big packets
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2018-03-26 13:03:27 +00:00
Adrien Gallouët 09acdee3e1 Code cleanup
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2018-03-25 14:48:59 +00:00
Adrien Gallouët c2eb3e4095 Refuse truncated packets
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2018-03-25 14:22:52 +00:00
Adrien Gallouët 54bac4fcf6 Don't produce/reply to bad pubkeys
AFAIK, this should be useless as libsodium use constant-time code
But small order are rejected and so we don't want to produce one.

This commit does not improve security.
2018-03-19 22:28:03 +00:00
Adrien Gallouët 9a626f2889 Reset mtu in all paths
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2018-03-17 13:51:54 +00:00
Adrien Gallouët c6fbe52fbd Use binded port in local_addr
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2018-03-16 21:07:25 +00:00
Adrien Gallouët a505e22844 Try to compute the size of ctrl
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2018-03-16 20:05:05 +00:00
Adrien Gallouët 40be483e2b Code cleanup
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2018-03-16 08:12:33 +00:00
Adrien Gallouët fd48ff08b9 Use LSB to mark mud packets
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2018-03-15 21:14:28 +00:00
Adrien Gallouët 0c037c5831 Code cleanup
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2018-03-15 20:42:51 +00:00
Adrien Gallouët 8b9fc86d12 Fix stats on links with latency > MUD_STAT_TIMEOUT
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2018-03-15 08:12:41 +00:00
Adrien Gallouët 66b8a7323d Code cleanup
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2018-03-14 22:47:33 +00:00
Adrien Gallouët 865c6aa640 Compute MTU only with usable paths
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2018-03-14 22:36:58 +00:00
Adrien Gallouët 2c5eb574f9 Add a specific timer for mtu probing
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2018-03-14 18:47:43 +00:00
Adrien Gallouët ef319d2153 Add mud_set_keyx_timeout()
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2018-03-14 06:54:38 +00:00
Adrien Gallouët 467310bb4f Create ephemeral key at startup
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2018-03-14 06:49:44 +00:00
Adrien Gallouët b787bad536 Store addr on errors
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2018-03-14 06:40:37 +00:00
Adrien Gallouët 93d7d36b68 Hardening and fixes
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2018-03-13 18:32:14 +00:00
Adrien Gallouët 87d9806a88 Clear errno if no path
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2018-03-12 14:59:59 +00:00
Adrien Gallouët ae3f4ed9ac Count and store last time of bad mud_decrypt()
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2018-03-12 10:28:05 +00:00
Adrien Gallouët b53248b6da Send ip and port to peers
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2018-03-10 15:31:41 +00:00
Adrien Gallouët bb6b87bb54 Hardening
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2018-03-09 22:14:10 +00:00
Adrien Gallouët cd4ad61d1c Always kiss your friends <3 + add it in the nonce
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2018-03-06 16:00:12 +00:00
Adrien Gallouët b809bf0785 First draft of path mtu disc without icmp
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2018-03-04 15:14:18 +00:00
Adrien Gallouët c583e207c8 Return ENOTSUP if aes256gcm is not supported
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2018-03-04 14:58:52 +00:00
Adrien Gallouët 5aeb0a3cb2 Ask for a gnu99 compiler
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2018-02-27 09:28:16 +00:00
Adrien Gallouët 5a62bd7faa Add mud_get_paths() to export all paths
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2018-02-26 23:57:39 +00:00
Adrien Gallouët 81b279b060 Add up,backup and down states
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2018-02-24 15:26:38 +00:00
Adrien Gallouët ac1ba977f4 Setup cmsg directly in mud_send_path()
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2018-02-24 14:54:44 +00:00
Adrien Gallouët 7303dea98c Let's decrypt everything
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2018-02-20 19:30:16 +00:00
Adrien Gallouët 1aded8ec29 Unset skip flag when adding a knwon path
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2018-02-17 20:21:45 +00:00
Adrien Gallouët 53f8d31f77 Use size_t for mtu
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2018-02-16 15:57:03 +00:00
Adrien Gallouët 7013d8e323 Cleanup
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2018-02-15 14:18:48 +00:00
Adrien Gallouët 6e5e2dea64 Autoselect ipv4/ipv6
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2018-02-15 14:10:28 +00:00
Adrien Gallouët 219e17edb6 Ask for sockaddr directly
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2018-02-14 21:30:17 +00:00
Adrien Gallouët 582eb29617 Use unsigned long in mud_set_x()
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2018-02-11 10:14:58 +00:00
Adrien Gallouët d8ede46d8a Avoid useless copies and protect keys
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2018-02-06 18:10:39 +00:00
Adrien Gallouët d4546ccae0 Add mud_del_path()
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2018-01-29 16:17:06 +00:00
Adrien Gallouët 61e7a23a11 Rework mud->peer and remove mud_ipaddr
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2018-01-29 16:17:06 +00:00
Adrien Gallouët 7c90d54b91 Add mud_add_path()
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2018-01-24 16:27:41 +00:00
Adrien Gallouët a6555c8ab1 Format code
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2018-01-24 10:14:08 +00:00
Adrien Gallouët 8d861c9682 Allow client to add the first path
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2018-01-24 10:07:59 +00:00
Adrien Gallouët 368ab1b710 Add some checks in mud_set_path()
They are useless in theory but as we do not define
the macros CMSG_FIRSTHDR and CMSG_NXTHDR..

Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2017-12-01 11:02:33 +00:00
Adrien Gallouët 13cf44c813 Code cleanup
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2017-11-26 13:17:15 +00:00
Adrien Gallouët 91cf697fb4 Set MSG_CONFIRM
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2017-11-16 09:45:17 +00:00
Adrien Gallouët 153108aeac Cleanup .travis.yml
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2017-11-16 07:51:06 +00:00
Adrien Gallouët 2c82c01233 Don't set mtu in mud_create()
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2017-11-15 22:44:03 +00:00
Adrien Gallouët 21957cc0cc Add mud_set_aes()
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2017-11-15 22:41:13 +00:00
Adrien Gallouët 63b0b4261c Check for MUD_DFRAG to disable fragment flag
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2017-11-15 22:24:29 +00:00
Adrien Gallouët 522ca2804d Add mud_new_key()
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2017-11-15 22:04:44 +00:00
Adrien Gallouët 78b76437e5 Force _GNU_SOURCE on Linux 2017-03-07 10:41:29 +00:00
Adrien Gallouët dfcc08feed Fix keyx regressions and cleanup 2017-01-29 12:01:27 +00:00
Adrien Gallouët 49662179e9 Refuse to create a new mud with a bad clock 2017-01-27 19:23:26 +00:00
Adrien Gallouët 996126cc40 Use MUD_EPOCH instead of 1970 2017-01-27 19:05:21 +00:00
Adrien Gallouët f67eae0a7f Restore old behaviour 2017-01-20 09:52:28 +00:00
Adrien Gallouët 8dc7a2d4b3 Check for send_time too before dup 2017-01-19 14:53:56 +00:00
Adrien Gallouët f6b6610980 Move mud_keyx in mud_conf 2017-01-18 15:23:37 +00:00
Adrien Gallouët 82299973e0 Code cleanup 2017-01-18 10:19:18 +00:00
Adrien Gallouët 762b4487bf Force kx on all paths 2017-01-16 16:10:28 +00:00
Adrien Gallouët 19e3115420 Do not remove path with the same kiss 2017-01-12 13:22:34 +00:00
Adrien Gallouët 58c734a681 Remove a useless loop in mud_send() 2017-01-12 10:11:04 +00:00
Adrien Gallouët 2d171c6dd9 Fix mud_kiss_path() 2017-01-06 11:47:45 +00:00
Adrien Gallouët 7cc6e7ad72 Remove useless memcmp() 2016-12-22 15:00:01 +00:00
Adrien Gallouët fd1a1285ac Set conf.mtu.local for all new path 2016-12-22 13:43:02 +00:00
Adrien Gallouët bd5323a46e Add mud_set_tc() and use CS6 by default 2016-12-22 11:40:06 +00:00
Adrien Gallouët 2fd70eb14e Code cleanup 2016-12-22 11:03:18 +00:00
Adrien Gallouët fe5499d46d Keep track of MTU in path 2016-12-21 16:10:38 +00:00
Adrien Gallouët b5a5cb2f1f Update remote mtu in active path too 2016-12-19 16:45:14 +00:00
Adrien Gallouët 00db335bb2 Move mud_mtux in mud_conf 2016-12-15 10:05:00 +00:00
Adrien Gallouët d7d4e9ffc8 Merge mud_kiss and mud_bakx as mud_conf 2016-12-15 09:25:36 +00:00
Adrien Gallouët ef260f90de Send a kiss when recv_time is too old 2016-12-13 13:52:45 +00:00
Adrien Gallouët bd4a11f73c Reformat 2016-12-12 16:40:04 +00:00
Adrien Gallouët 749adfd330 Fix build on OpenBSD
BUG introduced by clang-format...
2016-12-12 15:56:52 +00:00
Adrien Gallouët 078a30611e Kiss for a new path 2016-12-12 15:10:30 +00:00
Adrien Gallouët c5b6ba0121 Check mud_packet size earlier 2016-12-12 14:54:35 +00:00
Adrien Gallouët 35368f10ab Give a kiss to get some love 2016-12-08 11:19:25 +00:00
Adrien Gallouët c156aa68e3 Code cleanup 2016-12-08 10:34:47 +00:00
Adrien Gallouët cb9ecb592f Rework proto 2016-12-07 16:59:58 +00:00
Adrien Gallouët 5a67c21b95 Reformat 2016-12-05 14:38:33 +00:00
Adrien Gallouët faceca783f Server should only reply 2016-12-05 10:15:03 +00:00
Adrien Gallouët e1fd7f8b0d Ping for new path 2016-12-02 10:57:34 +00:00
Adrien Gallouët 8782e48c99 Respond sparingly when receiving a badly encrypted message 2016-12-02 10:47:02 +00:00
Adrien Gallouët 662fe83173 Add first draft backup 2016-11-28 10:59:27 +00:00
Adrien Gallouët 72d0573c95 Force send_path() on bad path 2016-11-25 16:39:59 +00:00
Adrien Gallouët 672e2ba2b5 Remove mud_set_nonblock() 2016-11-24 11:49:49 +00:00
Adrien Gallouët ca9aa34ae3 Rework pong 2016-11-18 17:44:10 +00:00
Adrien Gallouët c612a0772e Remove the internal tracker (failover) 2016-11-07 15:01:51 +00:00
Adrien Gallouët 4e6094dff9 Don't use errno from mud_path() 2016-10-28 10:20:14 +00:00
Adrien Gallouët f94489e199 Set DF only on linux for now 2016-10-28 07:54:28 +00:00
Adrien Gallouët d124f84cfb Update return code (and errno) of mud_send() 2016-10-28 07:52:31 +00:00
Adrien Gallouët 22d61780fd Remove pull/push 2016-10-27 15:00:03 +00:00
Adrien Gallouët df0d941241 Set DF for IPv4 and limit mtu to [500,1450] 2016-10-25 09:08:56 +00:00
Adrien Gallouët b82534d54c Add mud_set_mtu() 2016-10-18 16:41:41 +00:00
Adrien Gallouët 4c34454a23 Don't call crypto_aead_aes256gcm_beforenm() if no aesni.. 2016-10-05 08:01:03 +00:00
Adrien Gallouët d255074199 Add MTU negotiation 2016-10-04 13:23:14 +00:00
Adrien Gallouët d5297b8a70 Don't wait too long to resend keyx if no answer 2016-09-20 09:29:50 +00:00
Adrien Gallouët f6acc993a0 Do not log when mud_decrypt() fails 2016-09-07 13:24:21 +00:00
Adrien Gallouët d8d8326f75 Try to keep packets when send() fails 2016-09-06 08:30:26 +00:00
Adrien Gallouët 1659caa7ca Simplify failover and ping 2016-09-05 09:21:55 +00:00