Date: Mon, 8 Aug 2011 16:57:42 +0200 From: Svatopluk Kraus <onwahe@gmail.com> To: Kevin Lo <kevlo@freebsd.org> Cc: Jeremiah Lott <jlott@averesystems.com>, freebsd-current@freebsd.org, Andrew Boyer <aboyer@averesystems.com> Subject: Re: [patch] Problem with two NIC on same NET (in_scrubprefix: err=17, new prefix add failed) Message-ID: <CAFHCsPVM1iGehjt8AAiwhQvW81GqLjjf7SO_-OnWzYBadQ0jmw@mail.gmail.com> In-Reply-To: <1312781293.2521.1.camel@srgsec> References: <CAFHCsPUpkr-vne%2B9cLnovUXDGeVrOzHrKp1YAub=TjJW_3aVtg@mail.gmail.com> <92B5D566-9816-4134-9358-2306D0F7DAFC@averesystems.com> <1312781293.2521.1.camel@srgsec>
next in thread | previous in thread | raw e-mail | index | archive | help
--001517503e824bb41804a9ffab21 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Thanks for committing the fix. I've continued with work on two NIC on same NET. Now, with point-to-point interfaces too and I have more small fixes which I submitted today: http://www.freebsd.org/cgi/query-pr.cgi?pr=3D159600 http://www.freebsd.org/cgi/query-pr.cgi?pr=3D159601 http://www.freebsd.org/cgi/query-pr.cgi?pr=3D159602 http://www.freebsd.org/cgi/query-pr.cgi?pr=3D159603 I have one more related problem, but I'm not sure how complex the fix shoul= d be. When an interface is marked down a network route is deleted (or replaced) and a loopback route persists in routing table. It is OK. However, when an interface is marked up again, then a network route is installed unconditionally (but error is ignored) and a loopbak route is deleted and added immediately and unconditionally too. IMHO, it is not correct behaviour. I think that a second half of in_ifinit() should be here starting by in_addprefix() call with some small or bigger changes. Maybe, adding network route and ignoring error could be OK, but deleting loopback route should be done under IFA_RTSELF flag is set condition (with existing route refcount check). V_useloopback should be check before re-adding the route and existing route must be check to evaluate refcount correctly. The proposed patch is attached. However, I prefer to call in_addprefix() (which is static now) instead of rtinit() and add some more checks from in_ifinit(). Can you (or anyone) review the patch? Thanks once again, Svata On Mon, Aug 8, 2011 at 7:28 AM, Kevin Lo <kevlo@freebsd.org> wrote: > Hi Andrew, > > I just committed Svatopluk's fix to HEAD, thanks! > > =A0 =A0 =A0 =A0Kevin > > On Wed, 2011-08-03 at 11:11 -0400, Andrew Boyer wrote: >> We found and fixed a similar issue with an identical patch. =A0It has be= en working fine for us under stable/8. >> >> Unfortunately I am weeks and weeks behind on pushing fixes back to the t= ree, so you had to duplicate the work. =A0If it can be committed (and MFC'd= to 8, please) it would save others the trouble. >> >> -Andrew >> >> On Aug 3, 2011, at 10:51 AM, Svatopluk Kraus wrote: >> >> > I have two NIC on same NET (both are up). If a NIC which installs >> > network route is going down then an error happens during network route >> > replacement (in_scrubprefix: err=3D17, new prefix add failed). >> > >> > =A0I've done a little bit investigation. In rtinit1(), before >> > rtrequest1_fib() is called, info.rti_flags is initialized by flags >> > (function argument) or-ed with ifa->ifa_flags. Both NIC has a loopback >> > route to itself, so IFA_RTSELF is set on ifa(s). As IFA_RTSELF is >> > defined by RTF_HOST, rtrequest1_fib() is called with RTF_HOST flag >> > even if netmask is not NULL. Consequently, netmask is set to zero in >> > rtrequest1_fib(), and request to add network route is changed under >> > hands to request to add host route. It is the reason of logged info >> > and my problem. >> > >> > =A0When I've done more investigation, it looks similar to >> > http://svnweb.freebsd.org/base?view=3Drevision&revision=3D201543. So, = I >> > propose the following patch. >> > >> > Index: sys/net/route.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/route.c (revision 224635) >> > +++ sys/net/route.c (working copy) >> > @@ -1478,7 +1478,7 @@ >> > =A0 =A0 =A0 =A0 =A0 =A0 =A0*/ >> > =A0 =A0 =A0 =A0 =A0 =A0 bzero((caddr_t)&info, sizeof(info)); >> > =A0 =A0 =A0 =A0 =A0 =A0 info.rti_ifa =3D ifa; >> > - =A0 =A0 =A0 =A0 =A0 info.rti_flags =3D flags | ifa->ifa_flags; >> > + =A0 =A0 =A0 =A0 =A0 info.rti_flags =3D flags | (ifa->ifa_flags & ~IF= A_RTSELF); >> > =A0 =A0 =A0 =A0 =A0 =A0 info.rti_info[RTAX_DST] =3D dst; >> > =A0 =A0 =A0 =A0 =A0 =A0 /* >> > =A0 =A0 =A0 =A0 =A0 =A0 =A0* doing this for compatibility reason >> > >> > >> > =A0Is the patch sufficient? >> > >> > =A0 =A0 =A0Svata >> > _______________________________________________ >> > freebsd-current@freebsd.org mailing list >> > http://lists.freebsd.org/mailman/listinfo/freebsd-current >> > To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.= org" >> >> -------------------------------------------------- >> Andrew Boyer =A0aboyer@averesystems.com >> >> >> >> >> _______________________________________________ >> freebsd-current@freebsd.org mailing list >> http://lists.freebsd.org/mailman/listinfo/freebsd-current >> To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.or= g" > > > --001517503e824bb41804a9ffab21 Content-Type: text/plain; charset=US-ASCII; name="patch_raw_ip.txt" Content-Disposition: attachment; filename="patch_raw_ip.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gr3kaauw0 SW5kZXg6IHN5cy9uZXRpbmV0L3Jhd19pcC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9uZXRpbmV0L3Jh d19pcC5jCShyZXZpc2lvbiAyMjQ3MDUpCisrKyBzeXMvbmV0aW5ldC9yYXdfaXAuYwkod29ya2lu ZyBjb3B5KQpAQCAtNzYxLDE3ICs3NjEsNjYgQEAKIAkJICAgIHx8IChpZnAtPmlmX2ZsYWdzICYg SUZGX1BPSU5UT1BPSU5UKSkKIAkJCWZsYWdzIHw9IFJURl9IT1NUOwogCi0JCWVyciA9IGlmYV9k ZWxfbG9vcGJhY2tfcm91dGUoKHN0cnVjdCBpZmFkZHIgKilpYSwgc2EpOwotCQlpZiAoZXJyID09 IDApCi0JCQlpYS0+aWFfZmxhZ3MgJj0gfklGQV9SVFNFTEY7CisJCS8qCisJCSAqIFRyeSB0byBp bnN0YWxsIG91ciBwcmVmaXguIFRoZSBwcmVmaXggYWxyZWFkeSBjYW4gYmUKKwkJICogaW5zdGFs bGVkIGJ5IGFub3RoZXIgaW50ZXJmYWNlLCBzbyBlcnJvciBjYW4gYmUgaWdub3JlZC4KKwkJICov CiAKIAkJZXJyID0gcnRpbml0KCZpYS0+aWFfaWZhLCBSVE1fQURELCBmbGFncyk7CiAJCWlmIChl cnIgPT0gMCkKIAkJCWlhLT5pYV9mbGFncyB8PSBJRkFfUk9VVEU7CiAKKwkJLyoKKwkJICogSW5z dGFsbGVkIGxvb3BiYWNrIHJvdXRlIGlzbid0IGRlbGV0ZWQgd2hlbiBpbnRlcmZhY2UKKwkJICog aXMgZ29pbmcgZG93bi4gU28sIGhlcmUgb25seSBjaGVjayBWX3VzZWxvb3BiYWNrIGZsYWcKKwkJ ICogYW5kIGFjdCBhY2NvcmRpbmcgdG8gaXQuCisJCSAqLworCisJCWlmICghVl91c2Vsb29wYmFj aykgeworCQkJaWYgKGlhLT5pYV9mbGFncyAmIElGQV9SVFNFTEYpIHsKKwkJCQlzdHJ1Y3Qgcm91 dGUgaWFfcm87CisJCQkJaW50IGZyZWVpdCA9IDA7CisKKwkJCQliemVybygmaWFfcm8sIHNpemVv ZihpYV9ybykpOworCQkJCWlhX3JvLnJvX2RzdCA9ICpzYTsKKwkJCQlydGFsbG9jX2lnbl9maWIo JmlhX3JvLCAwLCAwKTsKKwkJCQlpZiAoKGlhX3JvLnJvX3J0ICE9IE5VTEwpICYmIChpYV9yby5y b19ydC0+cnRfaWZwICE9IE5VTEwpICYmCisJCQkJICAgIChpYV9yby5yb19ydC0+cnRfaWZwID09 IFZfbG9pZikpIHsKKwkJCQkJUlRfTE9DSyhpYV9yby5yb19ydCk7CisJCQkJCWlmIChpYV9yby5y b19ydC0+cnRfcmVmY250IDw9IDEpCisJCQkJCQlmcmVlaXQgPSAxOworCQkJCQllbHNlCisJCQkJ CQlSVF9SRU1SRUYoaWFfcm8ucm9fcnQpOworCQkJCVJURlJFRV9MT0NLRUQoaWFfcm8ucm9fcnQp OworCQkJCX0KKwkJCQlpZiAoZnJlZWl0KSB7CisJCQkJCWVyciA9IGlmYV9kZWxfbG9vcGJhY2tf cm91dGUoKHN0cnVjdCBpZmFkZHIgKilpYSwKKwkJCQkgICAgICAgCQkJCSAgICAgIHNhKTsKKwkJ CQkJaWYgKGVyciA9PSAwKQorCQkJCQkJaWEtPmlhX2ZsYWdzICY9IH5JRkFfUlRTRUxGOworCQkJ CX0KKwkJCX0KKwkJfQorCQllbHNlIGlmICghKGlhLT5pYV9mbGFncyAmIElGQV9SVFNFTEYpICYm CisJCQkgIShpZnAtPmlmX2ZsYWdzICYgSUZGX0xPT1BCQUNLKSkgeworCQkJc3RydWN0IHJvdXRl IGlhX3JvOworCisJCQliemVybygmaWFfcm8sIHNpemVvZihpYV9ybykpOworCQkJKigoc3RydWN0 IHNvY2thZGRyX2luICopKCZpYV9yby5yb19kc3QpKSA9IGlhLT5pYV9hZGRyOworCQkJcnRhbGxv Y19pZ25fZmliKCZpYV9ybywgMCwgMCk7CisJCQlpZiAoKGlhX3JvLnJvX3J0ICE9IE5VTEwpICYm IChpYV9yby5yb19ydC0+cnRfaWZwICE9IE5VTEwpICYmCisJCQkgICAgKGlhX3JvLnJvX3J0LT5y dF9pZnAgPT0gVl9sb2lmKSkgeworCQkJCVJUX0xPQ0soaWFfcm8ucm9fcnQpOworCQkJCVJUX0FE RFJFRihpYV9yby5yb19ydCk7CisJCQkJUlRGUkVFX0xPQ0tFRChpYV9yby5yb19ydCk7CisJCQl9 IGVsc2UKIAkJZXJyID0gaWZhX2FkZF9sb29wYmFja19yb3V0ZSgoc3RydWN0IGlmYWRkciAqKWlh LCBzYSk7CisKIAkJaWYgKGVyciA9PSAwKQogCQkJaWEtPmlhX2ZsYWdzIHw9IElGQV9SVFNFTEY7 CisJCQlpZiAoaWFfcm8ucm9fcnQgIT0gTlVMTCkKKwkJCQlSVEZSRUUoaWFfcm8ucm9fcnQpOwor CQl9CiAKIAkJaWZhX2ZyZWUoJmlhLT5pYV9pZmEpOwogCQlicmVhazsK --001517503e824bb41804a9ffab21--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAFHCsPVM1iGehjt8AAiwhQvW81GqLjjf7SO_-OnWzYBadQ0jmw>