From owner-freebsd-current@freebsd.org Wed Jun 21 19:27:03 2017 Return-Path: Delivered-To: freebsd-current@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 89641D9792D for ; Wed, 21 Jun 2017 19:27:03 +0000 (UTC) (envelope-from sbruno@freebsd.org) Received: from mail.ignoranthack.me (ignoranthack.me [199.102.79.106]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 5877F7B754; Wed, 21 Jun 2017 19:27:03 +0000 (UTC) (envelope-from sbruno@freebsd.org) Received: from [10.246.11.20] (wsip-70-166-117-91.ph.ph.cox.net [70.166.117.91]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: sbruno@ignoranthack.me) by mail.ignoranthack.me (Postfix) with ESMTPSA id 9CD041928AB; Wed, 21 Jun 2017 19:27:00 +0000 (UTC) Subject: Re: Failover Mode Between Ethernet and Wireless Interfaces broken on >= 11 To: Renato Botelho , freebsd-current@freebsd.org References: <1c1e5c6f-35e5-ca14-2e23-5e33d86a5266@FreeBSD.org> From: Sean Bruno Message-ID: Date: Wed, 21 Jun 2017 13:26:58 -0600 User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:52.0) Gecko/20100101 Thunderbird/52.2.0 MIME-Version: 1.0 In-Reply-To: <1c1e5c6f-35e5-ca14-2e23-5e33d86a5266@FreeBSD.org> Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="XuprkQPPD5E0VHaDeuAKBatHWCR01xNcA" X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Jun 2017 19:27:03 -0000 This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --XuprkQPPD5E0VHaDeuAKBatHWCR01xNcA Content-Type: multipart/mixed; boundary="fPqiMVoTg6hr4JdbiP1DBOlOppEsSDgjw"; protected-headers="v1" From: Sean Bruno To: Renato Botelho , freebsd-current@freebsd.org Message-ID: Subject: Re: Failover Mode Between Ethernet and Wireless Interfaces broken on >= 11 References: <1c1e5c6f-35e5-ca14-2e23-5e33d86a5266@FreeBSD.org> In-Reply-To: <1c1e5c6f-35e5-ca14-2e23-5e33d86a5266@FreeBSD.org> --fPqiMVoTg6hr4JdbiP1DBOlOppEsSDgjw Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: quoted-printable On 06/21/17 11:48, Renato Botelho wrote: > I've already sent it to net, but I suspect this is the appropriate plac= e > to discuss this subject. >=20 > 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 o= n > lagg(4) manpage) is outdated, based on FreeBSD 10.x. >=20 > Then I modified a bit the commands and tried to get it configured on > 12-CURRENT, without success. I spoke with adrian@, who told me this > setup doesn't work on FreeBSD > 10, because on newer versions Wireless > interfaces mac address cannot be changed. >=20 > My next attempt was to do the other way round and make lagg to use wlan= 0 > mac address instead of em0's. but even doing this my wireless interface= > ended up not working. >=20 > After further investigation I noted that a simple command: >=20 > # ifconfig wlan0 ether $wlan0_current_mac_address >=20 > is enough to break it on 12-CURRENT. >=20 > 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. I= s > it the expected behavior? >=20 > Just as a PoC I've applied the following patch to if_setlladdr(): >=20 > Index: sys/net/if.c > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- sys/net/if.c (revision 320097) > +++ sys/net/if.c (working copy) > @@ -3519,6 +3519,10 @@ > ifa_free(ifa); > return (EINVAL); > } > + if (memcmp(lladdr, LLADDR(sdl), len) =3D=3D 0) { > + ifa_free(ifa); > + return (0); > + } > switch (ifp->if_type) { > case IFT_ETHER: > case IFT_FDDI: >=20 > And configured it to use wlan0 mac address on rc.conf: >=20 > ifconfig_em0=3D"ether 60:67:20:c5:2d:48 up" > wlans_iwn0=3D"wlan0" > ifconfig_wlan0=3D"WPA" > cloned_interfaces=3D"lagg0" > ifconfig_lagg0=3D"up laggproto failover laggport em0 laggport wlan0 DHC= P" >=20 > and it's now working as expected. >=20 > 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. >=20 > Thoughts? >=20 > [1] > https://www.freebsd.org/doc/handbook/network-aggregation.html#networkin= g-lagg-wired-and-wireless >=20 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 --fPqiMVoTg6hr4JdbiP1DBOlOppEsSDgjw-- --XuprkQPPD5E0VHaDeuAKBatHWCR01xNcA Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- iQGTBAEBCgB9FiEE6MTp+IA1BOHj9Lo0veT1/om1/LYFAllKyIRfFIAAAAAALgAo aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldEU4 QzRFOUY4ODAzNTA0RTFFM0Y0QkEzNEJERTRGNUZFODlCNUZDQjYACgkQveT1/om1 /LYwHQf9EOO/pkg0cZB4kIcHJcBnsHNR7XsCIAbR4Wt6ZYW9WnYuORgxkZTWNqIf emfgzaxrDMruHBmmRMYbJPXjgtE1lu/P4vBhVLBHW7+K2MLieXcl1kITCxFpjvix DAyNAUtqbDqPCQGANFwKlq0fJbGMZixqj53JWjwmqclrMfZm3FwojaPjZETCNFSB x+2fodZeBcL5Lu6zGEi8DkzVuSXaeME5Cw8cbG5kSzV6yPg7tKWBIEIeAWy77Zjc qIfQuBRt6tPRAUoy6Slq7uJDR/6szCOKob6gweyBWaNMuwabMns/BmMPjSVzih5z jjo7z7gd/49YE80UTByjcH6Rdv3TLw== =t0bi -----END PGP SIGNATURE----- --XuprkQPPD5E0VHaDeuAKBatHWCR01xNcA--