On 10/11/2018 03:07 AM, Jeremie Courreges-Anglas wrote:
> 
> On 10/1/18 4:51 PM, Tom Eastep wrote:
>> On 09/17/2018 03:15 AM, Jeremie Courreges-Anglas wrote:
>>> From: htouvet <htouvet-git...@tranquil.it>
>>>
>>> Newish iproute2 print "linkdown" when the link state of the interface
>>> associated with a route is down.  This breaks multi-providers
>>> operations.  As a quickfix, tweak add/remove_gateway to strip
>>> "linkdown" from ip route output.  This diff does not address IPv6
>>> handling, which also looks affected.
>>>
>> Hi Jeremie,
> 
> 
> Hi,
> 
> 
>> Sorry to be slow responding; I've been traveling abroad and am just
>> getting caught up again.
> 
> Also sorry for the delay...
> 
> 
>> Shorewall 5.2.0.3 contains a fix for this issue; the fix was updated in
>> 5.2.0.4 to make it play better with link monitors like FooLSM. Have you
>> continued to experience this problem with that fix in place?
> 
> 
> That's right, the patch was originally written on top of 5.2.0.4.  Two
> data points:
> 
> - the issue is only visible when the relevant route is associated to an
> interface whose link is down (unplugged, peer down, etc).
> 
> - also, we have our in-house link monitor working on top of shorewall,
> maybe it doesn't exercise the same parts of shorewall as FooLSM does.
> 
> 

Okay - I think I prefer the attached patch to yours - there could be
multiple linkdown 'nexthop' interfaces in the current default route.

Thanks!
-Tom
-- 
Tom Eastep        \   Q: What do you get when you cross a mobster with
Shoreline,         \     an international standard?
Washington, USA     \ A: Someone who makes you an offer you can't
http://shorewall.org \   understand
                      \_______________________________________________
diff --git a/Shorewall/Perl/lib.runtime b/Shorewall/Perl/lib.runtime
index 84f0f92f0..f2036c8fb 100644
--- a/Shorewall/Perl/lib.runtime
+++ b/Shorewall/Perl/lib.runtime
@@ -963,7 +963,7 @@ add_gateway() # $1 = Delta $2 = Table Number
     local delta
     local dev
 
-    route=`$IP -4 -o route ls table $2 | grep ^default | sed 's/default //; s/[\]//g'`
+    route=`$IP -4 -o route ls table $2 | grep ^default | sed 's/default //; s/linkdown//g; s/[\]//g'`
 
     if [ -z "$route" ]; then
 	run_ip route add default scope global table $2 $1
@@ -997,7 +997,7 @@ delete_gateway() # $! = Description of the Gateway $2 = table number $3 = device
     local gateway
     local dev
 
-    route=`$IP -4 -o route ls table $2 | grep ^default | sed 's/[\]//g'`
+    route=`$IP -4 -o route ls table $2 | grep ^default | sed 's/linkdown//g; s/[\]//g'`
     gateway=$1
 
     if [ -n "$route" ]; then

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
Shorewall-devel mailing list
Shorewall-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/shorewall-devel

Reply via email to