Re: Failover Mode Between Ethernet and Wireless Interfaces broken on >= 11

From: Sean Bruno <sbruno_at_freebsd.org>
Date: Wed, 21 Jun 2017 13:26:58 -0600
On 06/21/17 11:48, Renato Botelho wrote:
> I've already sent it to net, but I suspect this is the appropriate place
> to discuss this subject.
> 
> Last night I was configuring a new laptop and decided to give it [1] a
> try. I figured out this section of handbook (similar instructions are on
> lagg(4) manpage) is outdated, based on FreeBSD 10.x.
> 
> Then I modified a bit the commands and tried to get it configured on
> 12-CURRENT, without success. I spoke with adrian_at_, who told me this
> setup doesn't work on FreeBSD > 10, because on newer versions Wireless
> interfaces mac address cannot be changed.
> 
> My next attempt was to do the other way round and make lagg to use wlan0
> mac address instead of em0's. but even doing this my wireless interface
> ended up not working.
> 
> After further investigation I noted that a simple command:
> 
> # ifconfig wlan0 ether $wlan0_current_mac_address
> 
> is enough to break it on 12-CURRENT.
> 
> I've checked if_setlladdr() source code and noted it always replace the
> mac address, even if the same is already configured on the interface. Is
> it the expected behavior?
> 
> Just as a PoC I've applied the following patch to if_setlladdr():
> 
> Index: sys/net/if.c
> ===================================================================
> --- sys/net/if.c	(revision 320097)
> +++ sys/net/if.c	(working copy)
> _at__at_ -3519,6 +3519,10 _at__at_
>  		ifa_free(ifa);
>  		return (EINVAL);
>  	}
> +	if (memcmp(lladdr, LLADDR(sdl), len) == 0) {
> +		ifa_free(ifa);
> +		return (0);
> +	}
>  	switch (ifp->if_type) {
>  	case IFT_ETHER:
>  	case IFT_FDDI:
> 
> And configured it to use wlan0 mac address on rc.conf:
> 
> ifconfig_em0="ether 60:67:20:c5:2d:48 up"
> wlans_iwn0="wlan0"
> ifconfig_wlan0="WPA"
> cloned_interfaces="lagg0"
> ifconfig_lagg0="up laggproto failover laggport em0 laggport wlan0 DHCP"
> 
> and it's now working as expected.
> 
> Other than that, I believe if wlan interfaces cannot have their mac
> address changed, ifconfig should return an error when user attempts to
> do it, and if_setlladdr() should do the same.
> 
> Thoughts?
> 
> [1]
> https://www.freebsd.org/doc/handbook/network-aggregation.html#networking-lagg-wired-and-wireless
> 


Maybe this is a "iflib" problem.  em(4) and igb(4) are pretty different
now in head.  Can you shove it into bugzilla with a test case
(copy/paste your email) and tag me on it?

sean


Received on Wed Jun 21 2017 - 17:27:03 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:12 UTC