Commit graph

36 commits

Author SHA1 Message Date
David Yang
6f38affd0c mwan3: fix empty gateway when creating routing table
Interfaces of some PtP protocols do not have a real gateway. In that
case ubus may fill them with '0.0.0.0' or even leave it blank. This
will cause error when adding new routing rule.

Signed-off-by: David Yang <mmyangfl@gmail.com>
2017-11-08 16:14:50 +08:00
Florian Eckert
803f69546e net/mwan3: fix mwan3track STATUS if initial_state is offline
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2017-09-12 15:55:27 +02:00
Marcin Jurkowski
66406f98db mwan3: fix interface-bound traffic when interface is offline
This commit fixed what 6d99b602 was supposed to fix without affecting
interface-bound traffic.

Before 6d99b602 interface-bound traffic was working normally as long
as at least one interface was online. However when the last interface
went offline, it was impossible to ping and such state was
unrecoverable.

Commit 6d99b602 fixed unrecoverable offline state problem (it was
possible to ping -I iface) but messed inteface-bound traffic. Traffic
with interface source address was not working if the interface was in
"offline" state, even if another interface was online.
The problem was caused by an inconsistent "offline" interface state:
iptables-related rules were kept while routing table and policy were
deleted.

The idea behind this commit is to:
 1. Keep all the rules for each interface (iptables, routing table,
    policy) regardless of its state. This ensures consistency,
 2. Make interface state hotplug events affect only iptables'
    mwan3_policy_* rules. Interface-related iptables, routing table
    and policy is removed only when mwan3 is manually stopped.

To make such changes possible, it's necessary to change the way
mwan3_policy_* rule generator keeps track of interface state hotplug
events.
Until now, it checked for the existence of custom interface-related
routing table (table id 1, 2, 3, ...). Clearly we can no longer rely
on that so each interface state is stored explicitly in file.

Signed-off-by: Marcin Jurkowski <marcin1j@gmail.com>
2017-09-12 11:18:52 +02:00
Florian Eckert
a8ccaa1f0f net/mwan3: fix /var/state issue in 14-mwan3 hotplug
Use common function to toggle ip address in /var/state/mwan3.
Change also to use toggle function and not set function. If ip address
is often changed every change is saved to /var/state/mwan3.

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2017-09-01 11:02:55 +02:00
Marcin Jurkowski
284284ef2e mwan3: fix bugs introduced in 815e83d4
Fixes the following bugs introduced in commit 815e83d4:
 - hotplug: invalid parameter order when initial interface state is "online",
   mwan3track expects initial state to be the third argument
 - hotplug: missing source ip address when initial interface state is "offline"
 - mwan3track: source ip address should be the fourth argument

Signed-off-by: Marcin Jurkowski <marcin1j@gmail.com>
2017-08-17 13:20:10 +02:00
Florian Eckert
c872189d66 net/mwan3: add hotplug script for hidden self interface generation
Add new globals config section with option local_source.

With this config option the self interface generation will be done now
automatically on hotplug event. You can specify which interface (ip)
sould be used for router traffic. To replace the self intereface in the
config set local_source to "lan".

The default option is none, so it will not change default behavior if a
"self" interface is configured in the network section.

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2017-08-10 12:32:56 +02:00
Florian Eckert
a4fbc7eba6 net/mwan3: fix ipset generation in hotplug script with an lock
Fix critical section during hotplug events.

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2017-08-10 11:30:47 +02:00
Florian Eckert
815e83d461 net/mwan3: on startup mark interface online only if track_ip are reachable
Add new interface config option "inital_state".

If interface comeing up the first time(mwan3 start, boot),
there are now two option for interface behaviour:

- online (default as is now)
  Set up interface regardless wether tracking ip are reachable or not.

- offline
  Set up interface first to ping tracking ip and if they are reachable set up
  the interface completely.

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2017-08-10 11:30:47 +02:00
Florian Eckert
6d99b602fd net/mwan3: fix ping issue if last interface recovers from failure
Even though error was fixed the interface checks still fails, if last_resort
was set to blackhole or unreachable.

To fix this issue do not remove failure interface from iptables change on
down event.

Reported-by: Colby Whitney <colby.whitney@luxul.com>
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2017-08-10 10:48:40 +02:00
Florian Eckert
9df6e9dd98 net/mwan3: change logging output on hotplug interface event
Change logging output on hotplug interface event

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2017-08-10 10:48:09 +02:00
Marcin Jurkowski
de4fc2b5de mwan3: support various interface tracking methods
Adds support for interface tracking using either ping, arping or
httping. This allows to track interface status on networks with filtered
ICMP traffic or simply to monitor data link layer etc.

To facilitate binding to a specified interface its IP address is passed
as a new mwan3track parameter. It's currently required by httping
and possibly by other tools that may be added in the future.

Signed-off-by: Marcin Jurkowski <marcin1j@gmail.com>
2017-08-02 17:44:07 +02:00
Florian Eckert
b6e9debc1b net/mwan3: add lock for mwan3 hotplug script
If more then one interface get up/down at once mwan3 could be in a
undefined state, because more then one mwan3 hotplug script are running
and editing the iptables.

Lock the critical section should solve this issue.

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2017-06-22 13:42:12 +02:00
Florian Eckert
ef3261d0b4 net/mwan3: remove absolute path for bin files
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2017-05-12 15:28:12 +02:00
Florian Eckert
f94975b71f net/mwan3: add connected network regardless of mwan3 interface enable state
If netifd set an interface up/down which is not tracked by mwan3 the
connected network of that interface should regardless be added/removed to the
mwan3_connected ipset.

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2017-04-27 11:44:49 +02:00
Florian Eckert
b216fd3642 net/mwan3: registrate SIGUSR1 trap on interface down event
If interface is getting down by netifd (unplug ethernet cable)
mwan3track will not recognize this change. It will also generate an
additional down event when he notice does his tracking interface is offline.

Mwan3track will now be informed by a signal (trap) USR1 during down event
that the interface is already down. An additional down event will not be
generated.

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2017-04-11 09:46:20 +02:00
champtar
499ec98653 Merge pull request #4174 from TDT-GmbH/mwan3-add-ubus-check
net/mwan3: add ubus interface check
2017-03-24 11:54:19 -07:00
Florian Eckert
5cacfd34a6 net/mwan3: add ubus interface check
On interfaces with interface proto "qmi|ncm" and option dhcp
enabled the interface will be changed to $iface_4 | $iface_6. The
interface mapping in mwan3 will not recognize this interface. To fix
this issue an ubus call will check if an upper interface exists.

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2017-03-21 08:59:31 +01:00
Florian Eckert
3f79fcb756 net/mwan3: pass environment variables to mwan3-user
User scripts conversion from luci-app-wan3 will be simplified if the variables
are passed by env instead of arguments.

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2017-03-21 08:31:06 +01:00
Hannu Nyman
037e469bde Merge pull request #4158 from TDT-GmbH/mwan-fix-hotplug
net/mwan3: fix hotplug on ACTION ifdown
2017-03-18 16:28:16 +02:00
Florian Eckert
43ca6ec481 net/mwan3: add mwan3.user hotplug script
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2017-03-17 12:33:45 +01:00
Florian Eckert
28c8b664e4 net/mwan3: fix hotplug on ACTION ifdown
On dynamic interface proto (dhcp/pppoe) the hotplug will not execude (exit 9)
because the gateway is already released. The check will now only be made
on a ifup ACTION event.

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2017-03-17 11:06:29 +01:00
Florian Eckert
3231736cab net/mwan3: reset conntrack table on iface up/down event
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2017-03-16 10:01:06 +01:00
Jo-Philipp Wich
a67e66c280 mwan3: remove bad local shell variable declarations
Local variable declarations outside of functions are illegal since the Busybox
update to v1.25.0, therfore remove them from the appropriate places.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2016-09-24 14:47:38 +02:00
Jeroen Louwes
725cfe6b8e mwan3: update to version 2.0-1
Fix issue with sticky sessions not working correctly
Fix issue where user created ipsets were not applied

Signed-off-by: Jeroen Louwes <jeroen.louwes@gmail.com>
2015-12-17 12:11:50 +01:00
Jeroen Louwes
8ff00a6273 mwan3: update to version 2.0-0
IPv6 support! :D
Big code overhaul; expect bugs..

Signed-off-by: Jeroen Louwes <jeroen.louwes@gmail.com>
2015-11-19 09:37:30 +01:00
Jeroen Louwes
5ca8b0227d mwan3: update to version 1.6-3
Fix for changed location ip binary

Signed-off-by: Jeroen Louwes <jeroen.louwes@gmail.com>
2015-10-20 10:04:20 +02:00
Adze1502
74c9585abc mwan3: update to version 1.6-1
Add ipset support (ipset version >6.22 with ipmark required)
Add stickiness feature

Signed-off-by: Jeroen Louwes <jeroen.louwes@gmail.com>
2015-03-17 19:57:49 +01:00
Adze1502
4ce8b48d65 mwan3: update to version 1.5-10
Fixed issue in mwan3 status output with mwan3 interfaces not yet configuerd in network config
Removed nexthop argument as it is no longer used

Signed-off-by: Jeroen Louwes <jeroen.louwes@gmail.com>
2015-01-15 14:15:53 +01:00
Adze1502
1ff50d94dc mwan3: update to version 1.5-9
Fix issue where config file would be overwritten in some cases
Fix issue where local address of wan point-to-point links were unreachable from lan

Signed-off-by: Jeroen Louwes <jeroen.louwes@gmail.com>
2014-12-22 08:44:41 +01:00
Adze1502
e1c07f13cc mwan3: update to version 1.5-7
Fixed issue where an manual ifup-ed interface would immediatly go down again
Remove from init as mwan3 is not a service

Signed-off-by: Jeroen Louwes <jeroen.louwes@gmail.com>
2014-10-02 09:57:50 +02:00
Adze1502
61c60026f4 mwan3: update to version 1.5-6
Fixed issue where mwan3 would not immediately set interface down on link-loss event
Added feature to define last-resort action on policies with no members

Signed-off-by: Jeroen Louwes <jeroen.louwes@gmail.com>
2014-09-25 11:27:54 +02:00
Adze1502
04c2fb4098 mwan3: update to version 1.5-4
Fix issue with more than one link route on a wan interface

Signed-off-by: Jeroen Louwes <jeroen.louwes@gmail.com>
2014-09-09 11:20:02 +02:00
Adze1502
69a0b5814a mwan3: update to version 1.5-3
Better way of fixing the "icmp unreachable exits wrong interface" problem

Signed-off-by: Jeroen Louwes <jeroen.louwes@gmail.com>
2014-08-14 13:58:41 +02:00
Adze1502
35d05cfebe mwan3: Update to version 1.5-2
Fix issue icmp unreachables go out wrong interface
Remove unnecessary line

Signed-off-by: Jeroen Louwes <jeroen.louwes@gmail.com>
2014-08-12 21:17:54 +02:00
Adze1502
869e4539f6 mwan3: Update to version 1.5-1
Add iptables -w option, which increases stability, requires iptables v1.4.20.
Code cleanup

Signed-off-by: Jeroen Louwes <jeroen.louwes@gmail.com>
2014-08-10 13:18:54 +02:00
Adze1502
7afdbd28cf Add mwan3 to packages feed
Signed-off-by: Jeroen Louwes <jeroen.louwes@gmail.com>
2014-08-08 21:09:54 +02:00