Mark Qvist
7e9998b4fd
Use included platform detection method
2023-05-03 12:21:57 +02:00
markqvist
79abe93139
Merge pull request #278 from VioletEternity/windows-so_reuseaddr
...
Use SO_EXCLUSIVEADDRUSE instead of SO_REUSEADDR on Windows
2023-05-03 12:18:49 +02:00
Mark Qvist
3300541181
Fixed invalid error code in conditional. Fixes #284 .
2023-05-02 17:45:30 +02:00
Mark Qvist
3848059f19
Only use ifname for link-local discovery scopes. Fixes #283 .
2023-05-02 17:39:06 +02:00
Maya
ba7838c04e
Use SO_EXCLUSIVEADDRUSE instead of SO_REUSEADDR on Windows.
...
On Linux, SO_REUSEADDR is used so that a socket in TIME-WAIT state can
be rebound after a listening process is restarted. It does not allow two
processes to listen on the exact same (addr, port) combination. However,
on Windows, it does, and SO_EXCLUSIVEADDRUSE is required to reproduce
the Linux behavior.
Reticulum relies on an error being returned by bind() that reuses
the same (addr, port) combination as another process to detect whether
there is a shared instance already running. Setting SO_EXCLUSIVEADDRUSE
makes this detection process work on Windows as well.
2023-04-19 03:03:15 +01:00
Mark Qvist
fac4973329
Fixed potential race condition in announce queue handling for AutoInterface
2023-03-09 18:32:14 +01:00
Mark Qvist
226004da94
Ignore lo0 in all cases. Fixes #237 .
2023-03-07 16:43:10 +01:00
Aaron Heise
6d9d410a70
Address multiple issues with Buffer and Channel
...
- StreamDataMessage now packed by struct rather than umsgpack for a more predictable size
- Added protected variable on LocalInterface to allow tests to simulate a low bandwidth connection
- Retry timer now has exponential backoff and a more sane starting value
- Link proves packet _before_ sending contents to Channel; this should help prevent spurious retries especially on half-duplex links
- Prevent Transport packet filter from filtering out duplicate packets for Channel; handle duplicates in Channel to ensure the packet is reproven (in case the original proof packet was lost)
- Fix up other tests broken by these changes
2023-03-04 23:37:58 -06:00
Greg Troxel
e273900e87
AutoInterface: Drop embedded scope identifier on fe80::
...
The code previously dropped scope identifiers expressed as a trailing
"%ifname", which happens on macOS. On NetBSD and OpenBSD (and likely
FreeBSD, not tested), the scope identifier is embedded. Drop that
form of identifier as well, because we keep address and ifname
separate, and because the scope identifier must not be part of
computing the hash of the address.
Resolves #240 , failure to peer on NetBSD and OpenBSD.
2023-02-28 10:19:46 -05:00
Mark Qvist
c604214bb9
Improved RNode reconnection when serial device disappears
2023-02-18 13:31:22 +01:00
Mark Qvist
c34c268a6a
Added carrier change detection flag to AutoInterface
2022-12-22 18:20:34 +01:00
Mark Qvist
8fcdc4613c
Adjusted loglevels
2022-12-22 18:20:13 +01:00
Mark Qvist
f645fa569b
Fixed AutoInterface multicast echoes failing on interfaces with rolling MAC addresses on every re-connect
2022-12-22 17:46:46 +01:00
Mark Qvist
171457713b
Improved RNode hotplug over Bluetooth on Android
2022-12-20 15:17:46 +01:00
Mark Qvist
30d8e351dd
Updated version
2022-12-16 23:21:22 +01:00
Mark Qvist
2a264fa7d6
Fixed invalid driver proxy for Qinheng CH34x chips on Android
2022-12-15 17:14:09 +01:00
Mark Qvist
f692e81b8e
Fixed AutoInterface roaming on Android devices that rotate Ethernet/WiFi MAC addresses on reconnect
2022-11-24 17:19:01 +01:00
Mark Qvist
cecb4b3acb
Fixed buffered input stream reader not working on Android API levels < 30
2022-11-23 20:39:49 +01:00
Mark Qvist
f22504d080
Improved I2P recovery time on unresponsive tunnels
2022-11-03 22:47:08 +01:00
Mark Qvist
f22e5cc200
Fixed socket references. Closes #146 .
2022-11-03 19:51:04 +01:00
Mark Qvist
88b88b9b64
Fixed missing check for socket state
2022-11-03 18:03:00 +01:00
Mark Qvist
76fcad0b53
Added better I2P state visibility to rnstatus util
2022-11-03 17:49:25 +01:00
Mark Qvist
01e520b082
Adjusted I2P interface timings
2022-11-03 16:30:07 +01:00
Mark Qvist
1d2a0fe4c8
Improved I2P tunnel state detection. Fixed missing IFAC init on spawned I2P interfaces.
2022-11-03 15:22:34 +01:00
Mark Qvist
0f19ced9d3
Fixed missing IFAC identity init on spawned TCP clients. Closes #137 .
2022-11-03 14:16:00 +01:00
Mark Qvist
06d232f889
Added Bluetooth control interface for RNode interfaces on Android
2022-11-02 22:34:07 +01:00
Mark Qvist
63a59753af
Implemented Bluetooth support for RNode interfaces on Android. Added Bluetooth/USB multiplexing and Bluetooth manager to interface.
2022-11-02 20:43:46 +01:00
Mark Qvist
20696e7827
Bluetooth support for RNode interfaces on Linux (via standard rfcomm driver)
2022-11-02 20:42:45 +01:00
Mark Qvist
45ae66e9bf
Updated bluetooth control commands for RNode interface
2022-11-01 20:27:41 +01:00
Mark Qvist
40cd961eab
Added better teardown handling on RNodeInterfaces
2022-10-30 23:13:44 +01:00
Mark Qvist
34cdd4bf0f
Improved RNode error reporting and teardown
2022-10-29 16:41:47 +02:00
Mark Qvist
b0ef58e5ca
Added support for writing to display framebuffer of connected RNodes
2022-10-29 14:28:53 +02:00
Mark Qvist
886b0ac0ca
Fixed Android interfaces import
2022-10-22 01:38:38 +02:00
Mark Qvist
b479e14ca5
Improved handling of Android interfaces in apps without hardware access
2022-10-20 20:10:50 +02:00
Mark Qvist
81fc920bdf
Fixed AutoInterface peering hashes on WiFi devices that employ MAC address randomisation on reconnects and roaming
2022-10-19 11:57:09 +02:00
Mark Qvist
9aae06c694
Added Android-specific KISS interface
2022-10-15 14:57:16 +02:00
Mark Qvist
73071b0755
Cleanup
2022-10-15 14:41:12 +02:00
Mark Qvist
ecc78fa45f
Added Android serial interface
2022-10-15 11:36:18 +02:00
Mark Qvist
e5309caf48
Added Android serial interface
2022-10-15 11:33:48 +02:00
Mark Qvist
094d2f2079
Cleanup
2022-10-15 11:31:34 +02:00
Mark Qvist
5d6c3dd891
Cleanup
2022-10-12 18:56:30 +02:00
Mark Qvist
a564dd2b2d
Cleanup
2022-10-12 18:06:21 +02:00
Mark Qvist
16cf1ab1ba
Fix debug output
2022-10-12 16:08:48 +02:00
Mark Qvist
902f7af64d
Added platform check
2022-10-12 15:14:42 +02:00
Mark Qvist
004bf27526
Added Android-specific RNode interface. Contains debug code. Not ready yet. Hang in there.
2022-10-12 15:11:02 +02:00
Mark Qvist
9cad90266e
Reverted RNode interface to exclude Android-specific logic
2022-10-12 15:00:21 +02:00
Mark Qvist
e9de01e10e
Added property default
2022-10-12 14:58:00 +02:00
Mark Qvist
372bedcd85
Added support for RNode interfaces on Android
2022-10-11 14:06:42 +02:00
Mark Qvist
c18806c912
Updated deprecated threading API call and updated docs
2022-09-30 19:02:41 +02:00
Mark Qvist
571ad2c8fb
Added initial connection timeout option to TCPClientInterface
2022-09-15 15:35:28 +02:00
Mark Qvist
18f450c58b
Periodically try to connect RNodes that were unavailable at startup. Closes #87 .
2022-09-14 17:43:07 +02:00
Mark Qvist
921987c999
Added table persist on local client disconnect
2022-09-13 22:32:00 +02:00
Mark Qvist
af538e0489
Improved shutdown handling and table saving
2022-09-06 17:42:13 +02:00
Mark Qvist
be02586133
Added detach handler to TCP Server Interface
2022-09-06 12:23:52 +02:00
Mark Qvist
bc39a1acf1
Fixed static size index
2022-07-01 21:16:01 +02:00
Mark Qvist
171f43f4e3
Cleanup
2022-06-30 19:32:29 +02:00
Mark Qvist
aa255d0713
Tuned I2PInterface socket timeouts
2022-06-13 15:45:53 +02:00
Mark Qvist
5a8152c589
Fixed I2PInterface status not being set on connectable interfaces
2022-06-12 21:34:54 +02:00
Mark Qvist
8042f5eaa1
Improved log output
2022-06-12 18:55:06 +02:00
Mark Qvist
d7a444556a
Tuned TCP socket options
2022-06-12 11:50:09 +02:00
Mark Qvist
2685e043ea
Fixed missing check for zero-length packets on IFAC-enabled interfaces. Fixes #65 .
2022-06-11 18:52:33 +02:00
Mark Qvist
548cbd50d8
Improved I2PInterface error handling and stability
2022-06-11 13:52:56 +02:00
Mark Qvist
d7262c7cbe
Fixed socket leak in I2PInterface
2022-06-11 11:27:01 +02:00
Mark Qvist
1ac7238347
Cleanup
2022-06-10 17:05:00 +02:00
Mark Qvist
513a82e363
Updated link test
2022-06-09 17:14:43 +02:00
Mark Qvist
d334613888
Removed delay
2022-06-09 16:48:31 +02:00
Mark Qvist
648e9a68b8
Added profiling info to LocalInterface
2022-06-09 14:45:00 +02:00
Mark Qvist
26dae3830e
Fixed unclosed socket in AutoInterface
2022-06-09 08:48:55 +02:00
Mark Qvist
379e56b2ce
Socket option check for OpenWRT compatibility
2022-06-07 12:40:50 +02:00
Mark Qvist
c6df6293b2
Added hardware MTU parameter to interfaces
2022-05-29 15:43:50 +02:00
Mark Qvist
9e20ba2dac
Implemented I2PInterface recovery on I2P router restart
2022-05-28 02:24:01 +02:00
Mark Qvist
49616a36cf
Fixed I2P controller startup when event loop is not immediately ready
2022-05-26 09:54:56 +02:00
Mark Qvist
9e316ab989
Fixed deprecated options in asyncio API for Python 3.10. Fixes #58 .
2022-05-25 23:11:01 +02:00
Mark Qvist
a6dbc53209
Improved status display for I2P interfaces
2022-05-25 21:44:49 +02:00
Mark Qvist
3af5a8f3ed
Improved I2P server tunnel error handling. Fixes #13 .
2022-05-25 21:23:52 +02:00
Mark Qvist
fb5172ff10
Improved I2P client tunnel error handling
2022-05-25 20:18:06 +02:00
Mark Qvist
d3ab0878e0
Improved I2P interface display in rnstatus
2022-05-25 15:50:54 +02:00
Mark Qvist
9e6a5d5d91
Fix announce rate targets on I2PInterface peers
2022-05-23 00:28:06 +02:00
Mark Qvist
cf3e47f469
Fixed interface mode inheritance
2022-05-23 00:06:26 +02:00
Mark Qvist
f3ff71d9b8
Implemented unknown path discovery
2022-05-22 14:18:58 +02:00
Mark Qvist
81b92ffdc1
Added gateway interface mode
2022-05-22 11:14:33 +02:00
Mark Qvist
e825b0b8ff
Added Pipe Interface
2022-05-14 20:19:46 +02:00
Mark Qvist
3871d8615e
Added per-interface announce rate control
2022-05-14 18:09:38 +02:00
Mark Qvist
8636259886
Added roaming and boundary interface modes
2022-05-13 21:03:51 +02:00
Mark Qvist
af1a05ff6a
Added announce queue dropping to rnpath utility
2022-05-13 16:18:13 +02:00
Mark Qvist
7c70f9d865
Set IFAC parameters on spawned interfaces
2022-04-27 13:20:46 +02:00
Mark Qvist
6cf9288b11
Improved AutoInterface peering timeout
2022-04-27 13:19:48 +02:00
Mark Qvist
d53e8cf037
Bitrate guess on TCP and UDP interfaces
2022-04-18 18:09:31 +02:00
Mark Qvist
da297aeb64
Changed log level
2022-04-18 16:54:35 +02:00
Mark Qvist
c9de260e00
Cleanup
2022-04-18 16:25:11 +02:00
Mark Qvist
31104c6e9c
Implemented bandwidth-based announce propagation calculation
2022-04-18 16:23:24 +02:00
Mark Qvist
124ec006b4
Auto-set sensible interface rate defaults
2022-04-17 19:35:31 +02:00
Mark Qvist
2f71296816
Basic interface rate estimation
2022-04-17 19:07:32 +02:00
Mark Qvist
dc6877927e
Updated license headers
2022-04-01 17:18:18 +02:00
Mark Qvist
95d3346da6
Fixed I2P interface missing attribute
2022-02-26 21:37:50 +01:00
Mark Qvist
d4aabc8b89
Added I2P base32 address output to rnstatus utility
2022-02-26 21:04:54 +01:00
Mark Qvist
b8105e23ff
Fixed TCP interface mode reference
2022-02-25 22:10:55 +01:00
Mark Qvist
f8272793b4
Tuned AutoInterface timeouts
2022-02-25 20:29:47 +01:00
Mark Qvist
0e1279d012
Added Access Point interface mode
2022-02-25 18:47:55 +01:00
Mark Qvist
48184134e4
Improved I2P Interface
2022-02-24 01:30:10 +01:00