Commit Graph

327 Commits

Author SHA1 Message Date
Jonas Lochmann e119a57e97 mwan3: check removed route before removal
This makes mwan3rtmon check if mwan3_get_routes returns a route
before removing it. This helps with IPv6 routes with source address
selector removal where multiple original routes are transformed to
the same mwan3 route if one of the source routes is removed while
the others are kept.

Signed-off-by: Jonas Lochmann <git@inkompetenz.org>
2024-02-20 21:53:22 +01:00
Jonas Lochmann fc3cc2fe5c mwan3: use network_get_preferred_ipaddr6
This updates mwan3 to use network_get_preferred_ipaddr6 instead of
network_get_ipaddr6 if possible to determine a source ip for the
connectivity checks. This avoids issues where the first ip address
that is returned from network_get_ipaddr6 does not work anymore while
the preferred one returned from network_get_preferred_ipaddr6 works.

Signed-off-by: Jonas Lochmann <git@inkompetenz.org>
2024-02-04 16:39:13 -08:00
Florian Eckert f021b9416b mwan3: refactoring mwan3_report_iface_status output
The tracking and interface status was mixed up in the report. To fix
this, the interface status and the tracking status are now used
directly. The online, uptime and error information are appended to the
status line if needed. If certain routing tables and routing rules are
missing, the error number is also given.

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2023-09-20 16:10:34 +02:00
Florian Eckert 002439594c mwan3: also show tracker state via ubus
The tracker state is not shown via ubus. Only if the tracker was in
active state, then the boolean running was set or not. By adding the
tracking state to the ubus information we could also evaluate the state
of the tracker. To remain compatible, the runnig flag of the tracker is
not removed, which in fact displays the same information, but only if
the tracker is in state 'active' or not.

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2023-09-20 16:10:06 +02:00
Florian Eckert 28e058e92f mwan3: rename tracking state from 'not enabled' to 'disabled'
The expression 'disabled' is more meaningful than 'not enabled' and can
therefore be better processed in the ubus output, since it is only one
word.

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2023-09-20 16:05:13 +02:00
Florian Eckert 4f59c248e0 mwan3: remove notracking in mwan3track ubus status
The function 'get_mwan3_status' is reading the internal state from the
tracker via the status file. Do not use the state 'notracking' status
anymore. If the mwan3track is not running always return 'unknown'
and not 'notracking'. There is already an other function that evaluates
the external state of the tracker.

We have now the following states of the tracker:
internal (mwan3track):
- offline
- online
- diconnecting
- connecting
- disabled
- unknown

external (via pgrep and config):
- paused
- active
- down
- not enabled

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2023-09-20 16:05:08 +02:00
Florian Eckert a56e111c49 mwan3: fix mwan3_connected ubus output
During the renameing of mwan3_connected_v4 to mwan3_connected_ipv4 and
mwan3_connected_v6 to mwan3_connected_ipv6 the adjustment in the ubus
call was forgotten. This commit fixes this.

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2023-09-12 16:03:18 +02:00
Anna Tikhomirova bc2c6e63ee mwan3: bump PKG_VERSION to 2.11.7
Signed-off-by: Anna Tikhomirova <vamp@vampik.ru>
2023-05-08 09:47:08 +02:00
Florian Eckert 5f0461be8b mwan3: reset score to up+down on connected
Set the score value to the maximum value when the connected function is
called. The same happens with a disconnected event, the score value is
there set to zero.

Suggested-by: Anna Tikhomirova <vamp@vampik.ru>
Suggested-by: Maxim Mikityanskiy <maxtram95@gmail.com>
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2023-05-08 09:47:08 +02:00
Florian Eckert 1f6bd672fe mwan3: refactoring mwan3track action handling
Refactoring the score handling, so that only one action could take place
during run. The behaviour should be more comprehensible, since several
score actions are not processed at the same time.

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2023-05-08 09:47:08 +02:00
Anna Tikhomirova d079652396 mwan3: bump PKG_VERSION to 2.11.6
Signed-off-by: Anna Tikhomirova <vamp@vampik.ru>
2023-05-04 12:01:08 +02:00
Anna Tikhomirova 84b3de9eda mwan3: fix addition of routes to mwan3_connected ipset
Addition of routes to mwan3_connected ipset is broken. The ipset name was
changed from mwan3_connected_v4/6 to mwan3_connected_ipv4/6, but this
change was not reflected in mwan3rtmon.

Signed-off-by: Anna Tikhomirova <vamp@vampik.ru>
* Update commit message
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2023-05-04 12:00:27 +02:00
Anna Tikhomirova fd2e20f66b mwan3: bump PKG_VERSION to 2.11.5
Signed-off-by: Anna Tikhomirova <vamp@vampik.ru>
2023-05-04 11:50:06 +02:00
Anna Tikhomirova 66257510d9 mwan3: fix addition of iptables rules for mwan3 sticky rules
Addition of iptables rules for mwan3 sticky rules is broken, resulting
in non-working sticky rules. The required parameters for the function
'mwan3_set_sticky_iptables' were passed in the wrong order.

Signed-off-by: Anna Tikhomirova <vamp@vampik.ru>
* Update commit message
* Quoting function arguments
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2023-05-04 11:49:56 +02:00
Florian Eckert 0434407428 mwan3: make mwan3.user executable
This is a fix for the the following change:
3d824ea288

Before the change, it was only possible to execute a shell script. To
remove this restriction, a binary or other script language can now also
be used for 'mwan3.user'. Unfortunately, the old shell script was not
executable for older mwan3 version. During a sysupgrade with config transfer,
this 'mwan3.user' script could not be executed for newer mwan3 versions.
To fix this, the calling script checks whether the 'mwan3.user' is executable,
and if not, this executable bit is now set.

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2022-12-19 08:34:54 +01:00
Florian Eckert 8fea564fc9 mwan3: update to 2.11.3
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2022-10-17 15:17:36 +02:00
Florian Eckert 997c0842ca mwan3: only send disconnected event if interface was connected before
Up to now on every interface down event a mwan3 disconnected event was
send. This is wrong because if the interface was never connected, then a
disconnected event should not get generated. This commit fixes this bug.

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2022-10-17 15:17:31 +02:00
Florian Eckert a6606bed17 mwan3: change log message on already added route
Only show message on already set route, if debugging is enabled.

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2022-10-17 15:17:07 +02:00
Denys Yarkovyi 675ecfba89 mwan3: support offload routing modifier
Signed-off-by: Denys Yarkovyi <dyarkovoy@gmail.com>
2022-10-05 05:20:05 -07:00
James White 1a703ed6a6 mwan3: Switch default track_ip targets from Google DNS to Cloudflare DNS
Signed-off-by: James White <james@jmwhite.co.uk>
2022-09-25 09:06:05 +01:00
Florian Eckert 0ed8450d2f mwan3: fix balanced default config
The metrics and weight need to be the same. A 50% balanced would be
require member policies of the same metric and weight value.

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2022-09-14 15:27:16 +02:00
Florian Eckert 87c611abf8 mwan3: fix sticky chain length
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2022-03-28 14:02:18 +02:00
Florian Eckert c688ffb025 mwan3: update version to 2.11.0
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2022-03-14 11:34:10 +01:00
Florian Eckert 0b5f09162b mwan3: dump iptables and ipset command for debugging
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2022-03-14 09:34:49 +01:00
Florian Eckert 5a80a5dbfe mwan3: unify error messages
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2022-03-14 09:34:49 +01:00
Florian Eckert ed2e0b33ed mwan3: add sleep to release ipset reference
It turns out that under high system load, ipsets cannot be deleted. This
is because there is still a reference in iptables. A short sleep should
give the system time to clean this up.

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2022-03-14 09:34:49 +01:00
Florian Eckert 13c2604eb1 mwan3: remove not needed ipset del cmd
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2022-03-14 09:34:49 +01:00
Florian Eckert 408458a72f mwan3: Split ipsets into separate ipv4 and ipv6 sets
Nft does not directly support ipsets, nft sets must be used instead.
The mwan3 uses ipsets for certain tasks. They can be combinded. So called
an ipset of ipsets. This list type is not available in nft. So that
mwan3 could be ported to nft in the feature, the ipset handling should be
split. So we have for each ipset an iptables rule.

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2022-03-14 09:34:49 +01:00
Florian Eckert 502779755a mwan3: use mwan3_push_update function for mwan3_delete_iface_iptables
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2022-03-14 09:34:49 +01:00
Florian Eckert b5c675392d mwan3: remove ipset generation from mwan3_set_general_iptables
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2022-03-14 09:34:49 +01:00
Florian Eckert 9c2abb19e2 mwan3: use sticky ipset generation mwan3_push_update pattern
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2022-03-14 09:34:49 +01:00
Florian Eckert e985f0dcd1 mwan3: do not create dynamic ipset for IPv6 if not supported
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2022-03-14 09:34:49 +01:00
Florian Eckert fedfbd5004 mwan3: do not add mwan3_custom_v6 set if ipv6 is not available
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2022-03-14 09:34:49 +01:00
Florian Eckert 54fad2326e mwan3: use also ipset restore for connected ipv4 sets
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2022-03-14 09:34:49 +01:00
Florian Eckert a49d0953dc mwan3: move command definitions to common.sh
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2022-03-14 09:34:49 +01:00
Florian Eckert 33e70606c6 mwan3: update iptables dependencies
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2022-03-14 09:34:49 +01:00
Florian Eckert e1f321150d mwan3: fix mwan3 flush conntrack table call
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2021-12-22 09:28:12 +01:00
Brian J. Murrell 3d824ea288 mwan3: Use shebang in /etc/mwan3.user
To allow the script to define what it should be run with.
This let's the user use bash if it's available, or python, or perl, etc.

Signed-off-by: Brian J. Murrell <brian@interlinx.bc.ca>
Update PKG_VERSION to 2.10.11
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2021-09-03 11:46:28 +02:00
Florian Eckert 44d79147ea mwan3: bump PKG_VERSION to 2.10.11
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2021-07-08 09:07:52 +02:00
Florian Eckert 619b721c2f mwan3: add troublshoot command from LuCI
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2021-07-08 09:07:52 +02:00
Florian Eckert a9dac71e3d mwan3: cleanup help output
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2021-07-08 09:07:52 +02:00
Daniel Golle cb02b42007
mwan3: use default routes from additional tables
Until now the additional tables listed in gobal 'rt_table_lookup' were
not considered for interfaces.
In order to be able to also use interface-defined routes from tables
other than main, consider also tables listed in 'rt_table_lookup'.
Update version to 2.10.10 as requested by maintainer.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2021-07-05 18:58:52 +01:00
Florian Eckert 58027efed1
Merge pull request #15537 from aaronjg/mwan3/notrack
mwan3: allow interfaces with no tracking IPs
2021-05-06 12:16:09 +02:00
Florian Eckert f1da872cd4 mwan3: update ubus status for not tracked interfaces
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2021-05-03 10:52:26 +02:00
Florian Eckert cbc5f0916c mwna3: fix whitespace
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2021-05-03 10:51:44 +02:00
Aaron Goodman b7ea19bc96 mwan3: allow interfaces with no tracking IPs
In the procd refactor, support for interfaces with no tracking IPs was
inadvertentiy removed. This commit restores the previous behavior

Signed-off-by: Aaron Goodman <aaronjg@stanford.edu>
2021-05-02 19:13:44 -04:00
Florian Eckert 5348732b98 mwan3: add connecting and disconnecting event to mwan3track
If the interface goes into failure state (is disconnecting)
then with this change one hotplug.d event is generated.

The same is true for the recovery state (is connecting), when the interface
comes back from a failure state.

In both cases, a hotplug.d event for the iface is triggered. Once
with the $ACTION=disconnecting and once for the $ACTION=connecting.

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2021-03-16 09:24:36 +01:00
Florian Eckert 7cfb282432 mwan3: disable DNS lookups for ping checks
By default, ping does a reverse DNS of the IP that you are pinging.
When you have a network issue (such as when a link has just gone down
and you haven't yet marked it down), this lookup can cause failures on
tests for links that are still good.

This option only works for iputils ping.
For busybox the option is not evaluated, but it is accepted without
throwing an error.

Fixes: #14968
Fixes: #14924

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
Suggested-by: David Lang <david@lang.hm>
2021-03-01 12:23:43 +01:00
Aaron Goodman 267b65ad9f mwan3: fix regression in ipv6 routing tables
Signed-off-by: Aaron Goodman <aaronjg@stanford.edu>
2021-01-02 21:37:37 -05:00
Florian Eckert 06ce040cbe mwan3: update PKG_VERSION
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2020-12-22 08:38:30 +01:00