From owner-freebsd-current@freebsd.org Wed Jan 13 22:10:05 2016 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 A34CCA812D0; Wed, 13 Jan 2016 22:10:05 +0000 (UTC) (envelope-from melifaro@ipfw.ru) Received: from forward17h.cmail.yandex.net (forward17h.cmail.yandex.net [IPv6:2a02:6b8:0:f35::a2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "forwards.mail.yandex.net", Issuer "Yandex CA" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 3DBD41578; Wed, 13 Jan 2016 22:10:04 +0000 (UTC) (envelope-from melifaro@ipfw.ru) Received: from web11h.yandex.ru (web11h.yandex.ru [84.201.186.40]) by forward17h.cmail.yandex.net (Yandex) with ESMTP id 375F82064C; Thu, 14 Jan 2016 01:10:00 +0300 (MSK) Received: from 127.0.0.1 (localhost [127.0.0.1]) by web11h.yandex.ru (Yandex) with ESMTP id 625B41226BF; Thu, 14 Jan 2016 01:09:59 +0300 (MSK) Received: by web11h.yandex.ru with HTTP; Thu, 14 Jan 2016 01:09:58 +0300 From: Alexander V. Chernikov Envelope-From: melifaro@ipfw.ru To: =?utf-8?B?T2xpdmllciBDb2NoYXJkLUxhYmLDqQ==?= Cc: Adrian Chadd , "freebsd-current@freebsd.org" , "freebsd-wireless@freebsd.org" In-Reply-To: References: <1223091452631961@web14j.yandex.ru> <2985841452674737@web5h.yandex.ru> Subject: Re: forwarding didn't work if wlan0 is member of a bridge MIME-Version: 1.0 Message-Id: <550651452722998@web11h.yandex.ru> X-Mailer: Yamail [ http://yandex.ru ] 5.0 Date: Thu, 14 Jan 2016 01:09:58 +0300 Content-Type: multipart/mixed; boundary="----==--bound.55066.web11h.yandex.ru" X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.20 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, 13 Jan 2016 22:10:05 -0000 ------==--bound.55066.web11h.yandex.ru Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=utf-8 13.01.2016, 13:02, "Olivier Cochard-Labbé" : > On Wed, Jan 13, 2016 at 9:45 AM, Alexander V. Chernikov > wrote: > >>  I suspect the reason here is link state bridge handling. >>  ix0 does not seem to have IFCAP_LINKSTATE option but re(4) does. Probably >>  wlan0 doesn't have LINKSTATE option. >>  Code in bridge_linkcheck() doesn't handle the case with both "has link >>  state" and "no link state" interfaces well: >>  if reX is the only interface w/ IFCAP_LINKSTATE and it goes down, bridge >>  will also change its link state to down. >>  (However, bridge does not seem to have link state option itself, so >>  RT_LINK_IS_UP() macro should return true...) > > ​For validating your "IFCAP_LINKSTATE" hypothesis, I've plug an USB > ethernet adapter ue(4) that didn't support IFCAP_LINKSTATE. > And I've setup the bridge0 with wlan0 and ue0 (in place of re1): same bug > triggered. I need to ​plug a cable for correct routing. We discussed/investigated this behaviour on IRC. To summarise: 1) ip_tryforward() does check interface linkstate regardless of linkstate capability 2) bridge linkcheck function does not seem to care about linkstate capability. What happened in original case: 802.11 does not provide linkstate cap and actual linkstate value is 0 (unknown). re0 does provide linkstate cap, so on link down, bridge_linkcheck() code decided to set own linkstate as DOWN as well (has non-zero linkstate interface, 0 up). On packet transmission. ip_tryforward() checked bridge0 state, found it to be DOWN so the icmp_error() was triggered. Attached patch fixes the problem, but I'm still thinking about better solution. > > ​root@fbsd-router:~ # ifconfig bridge0 > bridge0: flags=8843 metric 0 mtu > 1500 >         ether 02:6b:c0:de:b8:00 >         inet 1.1.1.1 netmask 0xffffff00 broadcast 1.1.1.255 >         nd6 options=9 >         groups: bridge >         id 00:00:00:00:00:00 priority 32768 hellotime 2 fwddelay 15 >         maxage 20 holdcnt 6 proto rstp maxaddr 2000 timeout 1200 >         root id 00:00:00:00:00:00 priority 32768 ifcost 0 port 0 >         member: ue0 flags=143 >                 ifmaxaddr 0 port 7 priority 128 path cost 55 >         member: wlan0 flags=143 >                 ifmaxaddr 0 port 5 priority 128 path cost 33333 > root@fbsd-router:~ # ifconfig ue0 > ue0: flags=8943 metric 0 > mtu 1500 >         options=80008 >         ether 00:19:fd:4e:77:4d >         nd6 options=29 >         media: Ethernet autoselect (none) >         status: no carrier > ​ > ​Regards, > _______________________________________________ > freebsd-current@freebsd.org mailing list > https://lists.freebsd.org/mailman/listinfo/freebsd-current > To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.org" ------==--bound.55066.web11h.yandex.ru Content-Disposition: attachment; filename="bridge_ls.diff" Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name="bridge_ls.diff" SW5kZXg6IC91c3Ivc3JjL3N5cy9uZXQvaWZfYnJpZGdlLmMKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gL3Vzci9z cmMvc3lzL25ldC9pZl9icmlkZ2UuYwkocmV2aXNpb24gMjkzNjU5KQorKysgL3Vzci9zcmMvc3lz L25ldC9pZl9icmlkZ2UuYwkod29ya2luZyBjb3B5KQpAQCAtMzU1MCwyMiArMzU1MCwyNSBAQCBz dGF0aWMgdm9pZAogYnJpZGdlX2xpbmtjaGVjayhzdHJ1Y3QgYnJpZGdlX3NvZnRjICpzYykKIHsK IAlzdHJ1Y3QgYnJpZGdlX2lmbGlzdCAqYmlmOwotCWludCBuZXdfbGluaywgaGFzbHM7CisJaW50 IG5ld19saW5rLCBub2xzOwogCiAJQlJJREdFX0xPQ0tfQVNTRVJUKHNjKTsKIAluZXdfbGluayA9 IExJTktfU1RBVEVfRE9XTjsKLQloYXNscyA9IDA7CisJbm9scyA9IDA7CiAJLyogT3VyIGxpbmsg aXMgY29uc2lkZXJlZCB1cCBpZiBhdCBsZWFzdCBvbmUgb2Ygb3VyIHBvcnRzIGlzIGFjdGl2ZSAq LwogCUxJU1RfRk9SRUFDSChiaWYsICZzYy0+c2NfaWZsaXN0LCBiaWZfbmV4dCkgewotCQlpZiAo YmlmLT5iaWZfaWZwLT5pZl9jYXBhYmlsaXRpZXMgJiBJRkNBUF9MSU5LU1RBVEUpCi0JCQloYXNs cysrOworCQlpZiAoKGJpZi0+YmlmX2lmcC0+aWZfY2FwYWJpbGl0aWVzICYgSUZDQVBfTElOS1NU QVRFKSA9PSAwKSB7CisJCQkvKiBYWFg6IEhhbmRsZSBhZG1pbiBkb3duPyAqLworCQkJbm9scysr OworCQkJY29udGludWU7CisJCX0KIAkJaWYgKGJpZi0+YmlmX2lmcC0+aWZfbGlua19zdGF0ZSA9 PSBMSU5LX1NUQVRFX1VQKSB7CiAJCQluZXdfbGluayA9IExJTktfU1RBVEVfVVA7CiAJCQlicmVh azsKIAkJfQogCX0KLQlpZiAoIUxJU1RfRU1QVFkoJnNjLT5zY19pZmxpc3QpICYmICFoYXNscykg ewotCQkvKiBJZiBubyBpbnRlcmZhY2VzIHN1cHBvcnQgbGluay1zdGF0ZSB0aGVuIHdlIGRlZmF1 bHQgdG8gdXAgKi8KKwlpZiAoIUxJU1RfRU1QVFkoJnNjLT5zY19pZmxpc3QpICYmIG5vbHMgIT0g MCkgeworCQkvKiBJZiBzb21lIGlmYWNlcyBkb24ndCBzdXBwb3J0IGxpbmstc3RhdGUgdGhlbiB3 ZSBkZWZhdWx0IHRvIHVwICovCiAJCW5ld19saW5rID0gTElOS19TVEFURV9VUDsKIAl9CiAJaWZf bGlua19zdGF0ZV9jaGFuZ2Uoc2MtPnNjX2lmcCwgbmV3X2xpbmspOwo= ------==--bound.55066.web11h.yandex.ru--