code: plan9front

Download patch

ref: 7137060d85fe04cce4a1984550a636672df7df7d
parent: b8604dd760f808c8a1a6caeb529eaf065f971db2
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Thu Dec 7 09:48:49 EST 2023

ethermultilink: ignore link-status of primary

when link-status on secondary is lost, always switch
back to the primary regardless of if it has a link.

this works around some ethernet driver not setting
link-status consistently and wifi's that might
only indicate a link when connected to an ap.

--- a/rc/bin/ethermultilink
+++ b/rc/bin/ethermultilink
@@ -25,6 +25,7 @@
 
 # first interface is the primary
 primary=$1
+shift
 
 net=`{echo $primary | sed 's!/*[^/]*$!!g'}
 test -r $net/arp || missing $net/arp
@@ -32,9 +33,9 @@
 # now select secondary from the list depending on link status
 @{
 old=/dev/null
-new=$old
 while(){
 	# interfaces are in increasing priority order
+	new=$primary
 	for(i){
 		if(grep -s 'link: 1' $i/stats)
 			new=$i