From owner-freebsd-bugs Mon Jul 23 2:43:28 2001 Delivered-To: freebsd-bugs@freebsd.org Received: from hanoi.cronyx.ru (hanoi.cronyx.ru [144.206.181.53]) by hub.freebsd.org (Postfix) with ESMTP id 74BED37B403; Mon, 23 Jul 2001 02:42:31 -0700 (PDT) (envelope-from rik@cronyx.ru) Received: from cronyx.ru by hanoi.cronyx.ru with ESMTP id NAA01844; (8.9.3/vak/2.1) Mon, 23 Jul 2001 13:50:52 +0400 (MSD) Message-ID: <3B5C025F.3080101@cronyx.ru> Date: Mon, 23 Jul 2001 14:54:23 +0400 From: Kurakin Roman User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; m18) Gecko/20010131 Netscape6/6.01 X-Accept-Language: ru, en MIME-Version: 1.0 To: Serge Vakulenko , mike@FreeBSD.org, freebsd-bugs@FreeBSD.org Subject: Re: kern/14848: Frame Relay support, corrected References: <000901c1134b$827a69a0$48b5ce90@crox> Content-Type: multipart/mixed; boundary="------------060105000201090205000703" Sender: owner-freebsd-bugs@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.org This is a multi-part message in MIME format. --------------060105000201090205000703 Content-Type: text/plain; charset=windows-1251; format=flowed Content-Transfer-Encoding: 7bit Hi, Please check kern/21771 for more recent report. Also I attached patch that was sent a week ago to freebsd-net mailing list. (This patch was made relative 4.current and it contains last changes) Best regards, Roman Kurakin Serge Vakulenko wrote: > ----- Original Message ----- > From: > To: ; ; > Sent: Saturday, July 21, 2001 6:56 AM > Subject: Re: kern/14848: Frame Relay support, corrected > > >> Synopsis: Frame Relay support, corrected >> >> State-Changed-From-To: open->suspended >> State-Changed-By: mike >> State-Changed-When: Fri Jul 20 19:54:47 PDT 2001 >> State-Changed-Why: >> >> With a little bit of work, this could probably be committed. >> Awaiting committer. >> >> http://www.FreeBSD.org/cgi/query-pr.cgi?pr=14848 >> --------------060105000201090205000703 Content-Type: application/octet-stream; name="if_sppp_c.pch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="if_sppp_c.pch" LS0tIGlmX3NwcHBzdWJyX2MuYwlXZWQgSnVsICA0IDE4OjU5OjIyIDIwMDEKKysrIGlmX3Nw cHBzdWJyLmMJRnJpIEp1bCAxMyAxODo0MjoxNiAyMDAxCkBAIC0xLDMwICsxLDM2IEBACiAv KgotICogU3luY2hyb25vdXMgUFBQL0Npc2NvIGxpbmsgbGV2ZWwgc3Vicm91dGluZXMuCisg KiBTeW5jaHJvbm91cyBQUFAvQ2lzY28vRnJhbWUgUmVsYXkgbGluayBsZXZlbCBzdWJyb3V0 aW5lcy4KICAqIEtlZXBhbGl2ZSBwcm90b2NvbCBpbXBsZW1lbnRlZCBpbiBib3RoIENpc2Nv IGFuZCBQUFAgbW9kZXMuCisgKiBBTlNJIFQxLjYxNy1jb21wYWlibGUgbGluayBtYW5hZ2Vt ZW50IHNpZ25hbGluZworICogaW1wbGVtZW50ZWQgZm9yIEZyYW1lIFJlbGF5IG1vZGUuCisg KiBDaXNjby10eXBlIEZyYW1lIFJlbGF5IGZyYW1pbmcgYWRkZWQsIHRoYW5rcyBBbGV4IFR1 dHViYWxpbi4KKyAqIE9ubHkgb25lIERMQ0kgcGVyIGNoYW5uZWwgZm9yIG5vdy4KICAqCi0g KiBDb3B5cmlnaHQgKEMpIDE5OTQtMTk5NiBDcm9ueXggRW5naW5lZXJpbmcgTHRkLgorICog Q29weXJpZ2h0IChDKSAxOTk0LTIwMDAgQ3Jvbnl4IEVuZ2luZWVyaW5nIEx0ZC4KICAqIEF1 dGhvcjogU2VyZ2UgVmFrdWxlbmtvLCA8dmFrQGNyb255eC5ydT4KICAqCiAgKiBIZWF2aWx5 IHJldmFtcGVkIHRvIGNvbmZvcm0gdG8gUkZDIDE2NjEuCiAgKiBDb3B5cmlnaHQgKEMpIDE5 OTcsIEpvZXJnIFd1bnNjaC4KICAqCisgKiBTbGlnaHRseSByZXZhbXBlZCB0byBjb25mb3Jt IHRvIHJlYWwgbGlmZS4KKyAqIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIENyb255eCBFbmdp bmVlcmluZyBMdGQuCisgKiBBdXRob3I6IEt1cmFraW4gUm9tYW4sIDxyaWtAY3Jvbnl4LnJ1 PgorICoKICAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgd2l0aCBOTyBXQVJSQU5U SUVTLCBub3QgZXZlbiB0aGUgaW1wbGllZAogICogd2FycmFudGllcyBmb3IgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgogICoKICAqIEF1 dGhvcnMgZ3JhbnQgYW55IG90aGVyIHBlcnNvbnMgb3Igb3JnYW5pc2F0aW9ucyBwZXJtaXNz aW9uIHRvIHVzZQogICogb3IgbW9kaWZ5IHRoaXMgc29mdHdhcmUgYXMgbG9uZyBhcyB0aGlz IG1lc3NhZ2UgaXMga2VwdCB3aXRoIHRoZSBzb2Z0d2FyZSwKICAqIGFsbCBkZXJpdmF0aXZl IHdvcmtzIG9yIG1vZGlmaWVkIHZlcnNpb25zLgotICoKLSAqIEZyb206IFZlcnNpb24gMi40 LCBUaHUgQXByIDMwIDE3OjE3OjIxIE1TRCAxOTk3Ci0gKgotICogJEZyZWVCU0Q6IHNyYy9z eXMvbmV0L2lmX3NwcHBzdWJyLmMsdiAxLjU5LjIuNiAyMDAxLzA3LzAzIDExOjAxOjQxIHVt ZSBFeHAgJAogICovCiAKICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KIAogI2lmIGRlZmluZWQo X19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF9fID49IDMKICNpbmNsdWRlICJvcHRfaW5ldC5o IgotI2luY2x1ZGUgIm9wdF9pbmV0Ni5oIgorI2lmIF9fRnJlZUJTRF9fID49IDQyMDAwMAor IyAgaW5jbHVkZSAib3B0X2luZXQ2LmgiCisjZW5kaWYKICNpbmNsdWRlICJvcHRfaXB4Lmgi CiAjZW5kaWYKIApAQCAtNDMsNyArNDksMTEgQEAKICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+ CiAjaW5jbHVkZSA8c3lzL3N5c2xvZy5oPgogI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYm IF9fRnJlZUJTRF9fID49IDMKKyNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA0MTAwMDAKICNp bmNsdWRlIDxzeXMvcmFuZG9tLmg+CisjZWxzZQorI2luY2x1ZGUgPG1hY2hpbmUvcmFuZG9t Lmg+CisjZW5kaWYKICNlbmRpZgogI2luY2x1ZGUgPHN5cy9tYWxsb2MuaD4KICNpbmNsdWRl IDxzeXMvbWJ1Zi5oPgpAQCAtMjIyLDcgKzIzMiw2NCBAQAogCXVfc2hvcnQgdGltZTA7CiAJ dV9zaG9ydCB0aW1lMTsKIH07Ci0jZGVmaW5lIENJU0NPX1BBQ0tFVF9MRU4gMTgKKyNkZWZp bmUgQ0lTQ09fUEFDS0VUX0xFTiAxNAorCisvKgorICogRnJhbWUgUmVsYXkuCisgKi8KKyNk ZWZpbmUgRlJfSVAgICAgICAgICAgIDB4Q0MgICAgLyogSVAgcHJvdG9jb2wgaWRlbnRpZmll ciAqLworI2RlZmluZSBGUl9QQURESU5HICAgICAgMHgwMCAgICAvKiBOTFBJRCBwYWRkaW5n ICovCisjZGVmaW5lIEZSX1NJR05BTElORyAgICAweDA4ICAgIC8qIFEuOTMzL1QxLjYxNyBz aWduYWxpbmcgaWRlbnRpZmllciAqLworI2RlZmluZSBGUl9TTkFQICAgICAgICAgMHg4MCAg ICAvKiBOTFBJRCBzbmFwICovCisKKy8qCisgKiBIZWFkZXIgZmxhZ3MuCisgKi8KKyNkZWZp bmUgRlJfREUgICAgICAgICAgIDB4MDIgICAgLyogZGlzY2FyZCBlbGlnaWJpbGl0eSAqLwor I2RlZmluZSBGUl9GRUNOICAgICAgICAgMHgwNCAgICAvKiBmb3J3YXJkIG5vdGlmaWNhdGlv biAqLworI2RlZmluZSBGUl9CRUNOICAgICAgICAgMHgwOCAgICAvKiBiYWNrd2FyZCBub3Rp ZmljYXRpb24gKi8KKworLyoKKyAqIFNpZ25hbGluZyBtZXNzYWdlIHR5cGVzLgorICovCisj ZGVmaW5lIEZSX01TR19FTlFVSVJZICAweDc1ICAgIC8qIHN0YXR1cyBlbnF1aXJ5ICovCisj ZGVmaW5lIEZSX01TR19TVEFUVVMgICAweDdkICAgIC8qIHN0YXR1cyAqLworCisjZGVmaW5l IEZSX0VOUVVJUllfU0laRQkxNAorCisvKgorICogTWVzc2FnZSBmaWVsZCB0eXBlcy4KKyAq LworI2RlZmluZSBGUl9GTERfUlRZUEUgICAgMHgwMSAgICAvKiByZXBvcnQgdHlwZSAqLwor I2RlZmluZSBGUl9GTERfVkVSSUZZICAgMHgwMyAgICAvKiBsaW5rIHZlcmlmaWNhdGlvbiAq LworI2RlZmluZSBGUl9GTERfUFZDICAgICAgMHgwNyAgICAvKiBQVkMgc3RhdHVzICovCisj ZGVmaW5lIEZSX0ZMRF9MU0hJRlQ1ICAweDk1ICAgIC8qIGxvY2tpbmcgc2hpZnQgNSAqLwor CisvKgorICogUmVwb3J0IHR5cGVzLgorICovCisjZGVmaW5lIEZSX1JUWVBFX0ZVTEwgICAw ICAgICAgIC8qIGZ1bGwgc3RhdHVzICovCisjZGVmaW5lIEZSX1JUWVBFX1NIT1JUICAxICAg ICAgIC8qIGxpbmsgdmVyaWZpY2F0aW9uIG9ubHkgKi8KKyNkZWZpbmUgRlJfUlRZUEVfU0lO R0xFIDIgICAgICAgLyogc2luZ2xlIFBWQyBzdGF0dXMgKi8KKworLyogUFZDIHN0YXR1cyBm aWVsZC4gKi8KKyNkZWZpbmUgRlJfRExDSV9ERUxFVEUgIDB4MDQgICAgLyogUFZDIGlzIGRl bGV0ZWQgKi8KKyNkZWZpbmUgRlJfRExDSV9BQ1RJVkUgIDB4MDIgICAgLyogUFZDIGlzIG9w ZXJhdGlvbmFsICovCisjZGVmaW5lIEZSX0RMQ0lfTkVXICAgICAweDA4ICAgIC8qIFBWQyBp cyBuZXcgKi8KKworc3RydWN0IGFycF9yZXEgeworCXVuc2lnbmVkIHNob3J0ICBodHlwZTsg ICAgICAgICAgLyogaGFyZHdhcmUgdHlwZSA9IEFSUEhSRF9GUkVMQVkgKi8KKwl1bnNpZ25l ZCBzaG9ydCAgcHR5cGU7ICAgICAgICAgIC8qIHByb3RvY29sIHR5cGUgPSBFVEhFUlRZUEVf SVAgKi8KKwl1bnNpZ25lZCBjaGFyICAgaGFsZW47ICAgICAgICAgIC8qIGhhcmR3YXJlIGFk ZHJlc3MgbGVuZ3RoID0gMiAqLworCXVuc2lnbmVkIGNoYXIgICBwYWxlbjsgICAgICAgICAg LyogcHJvdG9jb2wgYWRkcmVzcyBsZW5ndGggPSA0ICovCisJdW5zaWduZWQgc2hvcnQgIG9w OyAgICAgICAgICAgICAvKiBBUlAvUkFSUC9JbkFSUCByZXF1ZXN0L3JlcGx5ICovCisJdW5z aWduZWQgc2hvcnQgIGhzb3VyY2U7ICAgICAgICAvKiBoYXJkd2FyZSBzb3VyY2UgYWRkcmVz cyAqLworCXVuc2lnbmVkIHNob3J0ICBwc291cmNlMTsgICAgICAgLyogcHJvdG9jb2wgc291 cmNlICovCisJdW5zaWduZWQgc2hvcnQgIHBzb3VyY2UyOworCXVuc2lnbmVkIHNob3J0ICBo dGFyZ2V0OyAgICAgICAgLyogaGFyZHdhcmUgdGFyZ2V0IGFkZHJlc3MgKi8KKwl1bnNpZ25l ZCBzaG9ydCAgcHRhcmdldDE7ICAgICAgIC8qIHByb3RvY29sIHRhcmdldCAqLworCXVuc2ln bmVkIHNob3J0ICBwdGFyZ2V0MjsKK307CiAKIC8qCiAgKiBXZSBmb2xsb3cgdGhlIHNwZWxs aW5nIGFuZCBjYXBpdGFsaXphdGlvbiBvZiBSRkMgMTY2MSBoZXJlLCB0byBtYWtlCkBAIC0y OTQsNiArMzYxLDEyIEBACiBzdGF0aWMgdm9pZCBzcHBwX2Npc2NvX3NlbmQoc3RydWN0IHNw cHAgKnNwLCBpbnQgdHlwZSwgbG9uZyBwYXIxLCBsb25nIHBhcjIpOwogc3RhdGljIHZvaWQg c3BwcF9jaXNjb19pbnB1dChzdHJ1Y3Qgc3BwcCAqc3AsIHN0cnVjdCBtYnVmICptKTsKIAor c3RhdGljIHZvaWQgc3BwcF9mcl9pbnB1dCAoc3RydWN0IHNwcHAgKnNwLCBzdHJ1Y3QgbWJ1 ZiAqbSk7CitzdGF0aWMgc3RydWN0IG1idWYgKnNwcHBfZnJfaGVhZGVyIChzdHJ1Y3Qgc3Bw cCAqc3AsIHN0cnVjdCBtYnVmICptLCBpbnQgZmFtKTsKK3N0YXRpYyB2b2lkIHNwcHBfZnJf a2VlcGFsaXZlIChzdHJ1Y3Qgc3BwcCAqc3ApOworc3RhdGljIHZvaWQgc3BwcF9mcl9hcnAg KHN0cnVjdCBzcHBwICpzcCwgc3RydWN0IGFycF9yZXEgKnJlcSwgdV9zaG9ydCBhZGRyKTsK K3N0YXRpYyB2b2lkIHNwcHBfZnJfc2lnbmFsIChzdHJ1Y3Qgc3BwcCAqc3AsIHVuc2lnbmVk IGNoYXIgKmgsIGludCBsZW4pOworCiBzdGF0aWMgdm9pZCBzcHBwX2NwX2lucHV0KGNvbnN0 IHN0cnVjdCBjcCAqY3AsIHN0cnVjdCBzcHBwICpzcCwKIAkJCSAgc3RydWN0IG1idWYgKm0p Owogc3RhdGljIHZvaWQgc3BwcF9jcF9zZW5kKHN0cnVjdCBzcHBwICpzcCwgdV9zaG9ydCBw cm90bywgdV9jaGFyIHR5cGUsCkBAIC01MjAsNiArNTkzLDExIEBACiAJCXJldHVybjsKIAl9 CiAKKwlpZiAoc3AtPnBwX21vZGUgPT0gUFBfRlIpIHsKKwkJc3BwcF9mcl9pbnB1dCAoc3As IG0pOworCQlyZXR1cm47CisJfQorCiAJLyogR2V0IFBQUCBoZWFkZXIuICovCiAJaCA9IG10 b2QgKG0sIHN0cnVjdCBwcHBfaGVhZGVyKik7CiAJbV9hZGogKG0sIFBQUF9IRUFERVJfTEVO KTsKQEAgLTUzOSwxNiArNjE3LDE2IEBACiAJCX0KIAkJc3dpdGNoIChudG9ocyAoaC0+cHJv dG9jb2wpKSB7CiAJCWRlZmF1bHQ6CisJCQlpZiAoc3AtPnN0YXRlW0lEWF9MQ1BdID09IFNU QVRFX09QRU5FRCkKKwkJCQlzcHBwX2NwX3NlbmQgKHNwLCBQUFBfTENQLCBQUk9UT19SRUos CisJCQkJCSsrc3AtPnBwX3NlcVtJRFhfTENQXSwKKwkJCQkJbS0+bV9wa3RoZHIubGVuICsg MiwgJmgtPnByb3RvY29sKTsKIAkJCWlmIChkZWJ1ZykKIAkJCQlsb2coTE9HX0RFQlVHLAot CQkJCSAgICBTUFBfRk1UICJyZWplY3RpbmcgcHJvdG9jb2wgIgorCQkJCSAgICBTUFBfRk1U ICJpbnZhbGlkIGlucHV0IHByb3RvY29sICIKIAkJCQkgICAgIjxhZGRyPTB4JXggY3RybD0w eCV4IHByb3RvPTB4JXg+XG4iLAogCQkJCSAgICBTUFBfQVJHUyhpZnApLAogCQkJCSAgICBo LT5hZGRyZXNzLCBoLT5jb250cm9sLCBudG9ocyhoLT5wcm90b2NvbCkpOwotCQkJaWYgKHNw LT5zdGF0ZVtJRFhfTENQXSA9PSBTVEFURV9PUEVORUQpCi0JCQkJc3BwcF9jcF9zZW5kIChz cCwgUFBQX0xDUCwgUFJPVE9fUkVKLAotCQkJCQkrK3NwLT5wcF9zZXFbSURYX0xDUF0sIG0t Pm1fcGt0aGRyLmxlbiArIDIsCi0JCQkJCSZoLT5wcm90b2NvbCk7CiAJCQkrK2lmcC0+aWZf bm9wcm90bzsKIAkJCWdvdG8gZHJvcDsKIAkJY2FzZSBQUFBfTENQOgpAQCAtNzY3LDE4ICs4 NDUsMjUgQEAKIAl9CiAjZW5kaWYKIAorCWlmIChzcC0+cHBfbW9kZSA9PSBQUF9GUikgewor CQkvKiBBZGQgZnJhbWUgcmVsYXkgaGVhZGVyLiAqLworCQltID0gc3BwcF9mcl9oZWFkZXIg KHNwLCBtLCBkc3QtPnNhX2ZhbWlseSk7CisJCWlmICghIG0pCisJCQlnb3RvIG5vYnVmczsK KwkJZ290byBvdXQ7CiAjaWZkZWYgSU5FVDYKIAlpZiAoZHN0LT5zYV9mYW1pbHkgPT0gQUZf SU5FVDYpIHsKIAkJLyogWFhYIGRvIHNvbWV0aGluZyB0cmlja3kgaGVyZT8gKi8KIAl9CiAj ZW5kaWYKKwl9CiAKIAkvKgogCSAqIFByZXBlbmQgZ2VuZXJhbCBkYXRhIHBhY2tldCBQUFAg aGVhZGVyLiBGb3Igbm93LCBJUCBvbmx5LgogCSAqLwogCU1fUFJFUEVORCAobSwgUFBQX0hF QURFUl9MRU4sIE1fRE9OVFdBSVQpOwogCWlmICghIG0pIHsKLQkJaWYgKGRlYnVnKQorbm9i dWZzOgkJaWYgKGRlYnVnKQogCQkJbG9nKExPR19ERUJVRywgU1BQX0ZNVCAibm8gbWVtb3J5 IGZvciB0cmFuc21pdCBoZWFkZXJcbiIsCiAJCQkJU1BQX0FSR1MoaWZwKSk7CiAJCSsraWZw LT5pZl9vZXJyb3JzOwpAQCAtODYzLDcgKzk0OCw3IEBACiAJICogUXVldWUgbWVzc2FnZSBv biBpbnRlcmZhY2UsIGFuZCBzdGFydCBvdXRwdXQgaWYgaW50ZXJmYWNlCiAJICogbm90IHll dCBhY3RpdmUuCiAJICovCi0JaWYgKElGX1FGVUxMIChpZnEpKSB7CitvdXQ6CWlmIChJRl9R RlVMTCAoaWZxKSkgewogCQlJRl9EUk9QICgmaWZwLT5pZl9zbmQpOwogCQltX2ZyZWVtICht KTsKIAkJKytpZnAtPmlmX29lcnJvcnM7CkBAIC05MDQsOSArOTg5LDkgQEAKICNpZiAwCiAJ c3AtPnBwX2ZsYWdzID0gUFBfS0VFUEFMSVZFOwogI2VuZGlmCi0gCXNwLT5wcF9pZi5pZl9z bmQuaWZxX21heGxlbiA9IDMyOwotIAlzcC0+cHBfZmFzdHEuaWZxX21heGxlbiA9IDMyOwot IAlzcC0+cHBfY3BxLmlmcV9tYXhsZW4gPSAyMDsKKyAJc3AtPnBwX2lmLmlmX3NuZC5pZnFf bWF4bGVuID0gNTA7CisgCXNwLT5wcF9mYXN0cS5pZnFfbWF4bGVuID0gNTA7CisgCXNwLT5w cF9jcHEuaWZxX21heGxlbiA9IDUwOwogCXNwLT5wcF9sb29wY250ID0gMDsKIAlzcC0+cHBf YWxpdmVjbnQgPSAwOwogCWJ6ZXJvKCZzcC0+cHBfc2VxWzBdLCBzaXplb2Yoc3AtPnBwX3Nl cSkpOwpAQCAtOTkyLDcgKzEwNzcsOCBAQAogCSAqLwogCUlGX0RFUVVFVUUoJnNwLT5wcF9j cHEsIG0pOwogCWlmIChtID09IE5VTEwgJiYKLQkgICAgKHNwcHBfbmNwX2NoZWNrKHNwKSB8 fCBzcC0+cHBfbW9kZSA9PSBJRkZfQ0lTQ08pKSB7CisJICAgIChzcHBwX25jcF9jaGVjayhz cCkgfHwgc3AtPnBwX21vZGUgPT0gSUZGX0NJU0NPIHx8CisJICAgICBzcC0+cHBfbW9kZSA9 PSBQUF9GUikpIHsKIAkJSUZfREVRVUVVRSgmc3AtPnBwX2Zhc3RxLCBtKTsKIAkJaWYgKG0g PT0gTlVMTCkKIAkJCUlGX0RFUVVFVUUgKCZzcC0+cHBfaWYuaWZfc25kLCBtKTsKQEAgLTEw MTUsNyArMTEwMSw5IEBACiAKIAltID0gc3AtPnBwX2NwcS5pZnFfaGVhZDsKIAlpZiAobSA9 PSBOVUxMICYmCi0JICAgIChzcC0+cHBfcGhhc2UgPT0gUEhBU0VfTkVUV09SSyB8fCBzcC0+ cHBfbW9kZSA9PSBJRkZfQ0lTQ08pKQorCSAgICAoc3AtPnBwX3BoYXNlID09IFBIQVNFX05F VFdPUksgfHwKKwkgICAgIHNwLT5wcF9tb2RlID09IElGRl9DSVNDTyB8fAorCSAgICAgc3At PnBwX21vZGUgPT0gUFBfRlIpKQogCQlpZiAoKG0gPSBzcC0+cHBfZmFzdHEuaWZxX2hlYWQp ID09IE5VTEwpCiAJCQltID0gc3AtPnBwX2lmLmlmX3NuZC5pZnFfaGVhZDsKIAlzcGx4IChz KTsKQEAgLTEwNTQsOSArMTE0MiwxMyBAQAogCQkJbmV3bW9kZSA9IGlmcC0+aWZfZmxhZ3Mg JiBJRkZfQVVUTzsKIAkJaWYgKCFuZXdtb2RlKQogCQkJbmV3bW9kZSA9IGlmcC0+aWZfZmxh Z3MgJiBJRkZfQ0lTQ087CisKIAkJaWZwLT5pZl9mbGFncyAmPSB+KElGRl9QQVNTSVZFIHwg SUZGX0FVVE8gfCBJRkZfQ0lTQ08pOwogCQlpZnAtPmlmX2ZsYWdzIHw9IG5ld21vZGU7CiAK KwkJaWYgKCFuZXdtb2RlKQorCQkJbmV3bW9kZSA9IHNwLT5wcF9mbGFncyAmIFBQX0ZSOwor CiAJCWlmIChuZXdtb2RlICE9IHNwLT5wcF9tb2RlKSB7CiAJCQlnb2luZ19kb3duID0gMTsK IAkJCWlmICghZ29pbmdfdXApCkBAIC0xMDY0LDI2ICsxMTU2LDMwIEBACiAJCX0KIAogCQlp ZiAoZ29pbmdfZG93bikgewotCQkJaWYgKHNwLT5wcF9tb2RlICE9IElGRl9DSVNDTykKKwkJ CWlmIChzcC0+cHBfbW9kZSAhPSBJRkZfQ0lTQ08gJiYKKwkJCSAgICBzcC0+cHBfbW9kZSAh PSBQUF9GUikKIAkJCQlsY3AuQ2xvc2Uoc3ApOwotCQkJZWxzZSBpZiAoc3AtPnBwX3RsZikK LQkJCQkoc3AtPnBwX3RsZikoc3ApOworLyoJCQllbHNlIGlmIChzcC0+cHBfdGxmKQorCQkJ CShzcC0+cHBfdGxmKShzcCk7Ki8KKwkJCQogCQkJc3BwcF9mbHVzaChpZnApOwogCQkJaWZw LT5pZl9mbGFncyAmPSB+SUZGX1JVTk5JTkc7CiAJCQlzcC0+cHBfbW9kZSA9IG5ld21vZGU7 CiAJCX0KIAogCQlpZiAoZ29pbmdfdXApIHsKLQkJCWlmIChzcC0+cHBfbW9kZSAhPSBJRkZf Q0lTQ08pCisJCQlpZiAoc3AtPnBwX21vZGUgIT0gSUZGX0NJU0NPICYmCisJCQkgICAgc3At PnBwX21vZGUgIT0gUFBfRlIpCiAJCQkJbGNwLkNsb3NlKHNwKTsKIAkJCXNwLT5wcF9tb2Rl ID0gbmV3bW9kZTsKIAkJCWlmIChzcC0+cHBfbW9kZSA9PSAwKSB7CiAJCQkJaWZwLT5pZl9m bGFncyB8PSBJRkZfUlVOTklORzsKIAkJCQlsY3AuT3BlbihzcCk7CiAJCQl9Ci0JCQlpZiAo c3AtPnBwX21vZGUgPT0gSUZGX0NJU0NPKSB7Ci0JCQkJaWYgKHNwLT5wcF90bHMpCi0JCQkJ CShzcC0+cHBfdGxzKShzcCk7CisJCQlpZiAoKHNwLT5wcF9tb2RlID09IElGRl9DSVNDTykg fHwKKwkJCSAgICAoc3AtPnBwX21vZGUgPT0gUFBfRlIpKSB7CisvKgkJCQlpZiAoc3AtPnBw X3RscykKKwkJCQkJKHNwLT5wcF90bHMpKHNwKTsqLwogCQkJCWlmcC0+aWZfZmxhZ3MgfD0g SUZGX1JVTk5JTkc7CiAJCQl9CiAJCX0KQEAgLTExMzMsNiArMTIyOSw3IEBACiAJcmV0dXJu IHJ2OwogfQogCisKIC8qCiAgKiBDaXNjbyBmcmFtaW5nIGltcGxlbWVudGF0aW9uLgogICov CkBAIC0xMzkwLDE2ICsxNDg3LDYgQEAKIAkJCS8qIGZhbGwgdGhyb3VnaC4uLiAqLwogCQlj YXNlIFNUQVRFX0FDS19TRU5UOgogCQljYXNlIFNUQVRFX1JFUV9TRU5UOgotCQkJLyoKLQkJ CSAqIHNwcHBfY3BfY2hhbmdlX3N0YXRlKCkgaGF2ZSB0aGUgc2lkZSBlZmZlY3Qgb2YKLQkJ CSAqIHJlc3RhcnRpbmcgdGhlIHRpbWVvdXRzLiBXZSB3YW50IHRvIGF2b2lkIHRoYXQKLQkJ CSAqIGlmIHRoZSBzdGF0ZSBkb24ndCBjaGFuZ2UsIG90aGVyd2lzZSB3ZSB3b24ndAotCQkJ ICogZXZlciB0aW1lb3V0IGFuZCByZXNlbmQgYSBjb25maWd1cmF0aW9uIHJlcXVlc3QKLQkJ CSAqIHRoYXQgZ290IGxvc3QuCi0JCQkgKi8KLQkJCWlmIChzcC0+c3RhdGVbY3AtPnByb3Rv aWR4XSA9PSAocnYgPyBTVEFURV9BQ0tfU0VOVDoKLQkJCSAgICBTVEFURV9SRVFfU0VOVCkp Ci0JCQkJYnJlYWs7CiAJCQlzcHBwX2NwX2NoYW5nZV9zdGF0ZShjcCwgc3AsIHJ2PwogCQkJ CQkgICAgIFNUQVRFX0FDS19TRU5UOiBTVEFURV9SRVFfU0VOVCk7CiAJCQlicmVhazsKQEAg LTE0OTIsMTcgKzE1NzksMTEgQEAKIAkJY2FzZSBTVEFURV9TVE9QUEVEOgogCQkJc3BwcF9j cF9zZW5kKHNwLCBjcC0+cHJvdG8sIFRFUk1fQUNLLCBoLT5pZGVudCwgMCwgMCk7CiAJCQli cmVhazsKLQkJY2FzZSBTVEFURV9SRVFfU0VOVDoKIAkJY2FzZSBTVEFURV9BQ0tfU0VOVDoK LQkJCXNwLT5yc3RfY291bnRlcltjcC0+cHJvdG9pZHhdID0gc3AtPmxjcC5tYXhfY29uZmln dXJlOwotCQkJLyoKLQkJCSAqIFNsb3cgdGhpbmdzIGRvd24gYSBiaXQgaWYgd2UgdGhpbmsg d2UgbWlnaHQgYmUKLQkJCSAqIGluIGxvb3BiYWNrLiBEZXBlbmQgb24gdGhlIHRpbWVvdXQg dG8gc2VuZCB0aGUKLQkJCSAqIG5leHQgY29uZmlndXJhdGlvbiByZXF1ZXN0LgotCQkJICov Ci0JCQlpZiAoc3AtPnBwX2xvb3BjbnQpCi0JCQkJYnJlYWs7CiAJCQkoY3AtPnNjcikoc3Ap OworLyoJCQlzcHBwX2NwX2NoYW5nZV9zdGF0ZSAoY3AsIHNwLCBTVEFURV9SRVFfU0VOVCk7 Ki8KKwkJY2FzZSBTVEFURV9SRVFfU0VOVDoKKwkJCXNwLT5yc3RfY291bnRlcltjcC0+cHJv dG9pZHhdID0gc3AtPmxjcC5tYXhfY29uZmlndXJlOwogCQkJYnJlYWs7CiAJCWNhc2UgU1RB VEVfT1BFTkVEOgogCQkJKGNwLT50bGQpKHNwKTsKQEAgLTE1MzQsNyArMTYxNSw2IEBACiAJ CWNhc2UgU1RBVEVfQ0xPU0lORzoKIAkJY2FzZSBTVEFURV9TVE9QUElORzoKIAkJY2FzZSBT VEFURV9SRVFfU0VOVDoKLQkJICBzdGE6CiAJCQkvKiBTZW5kIFRlcm1pbmF0ZS1BY2sgcGFj a2V0LiAqLwogCQkJaWYgKGRlYnVnKQogCQkJCWxvZyhMT0dfREVCVUcsIFNQUF9GTVQgIiVz IHNlbmQgdGVybWluYXRlLWFja1xuIiwKQEAgLTE1NDUsNyArMTYyNSwxMSBAQAogCQkJKGNw LT50bGQpKHNwKTsKIAkJCXNwLT5yc3RfY291bnRlcltjcC0+cHJvdG9pZHhdID0gMDsKIAkJ CXNwcHBfY3BfY2hhbmdlX3N0YXRlKGNwLCBzcCwgU1RBVEVfU1RPUFBJTkcpOwotCQkJZ290 byBzdGE7CisJCQkvKiBTZW5kIFRlcm1pbmF0ZS1BY2sgcGFja2V0LiAqLworCQkJaWYgKGRl YnVnKQorCQkJCWxvZyhMT0dfREVCVUcsIFNQUF9GTVQgIiVzIHNlbmQgdGVybWluYXRlLWFj a1xuIiwKKwkJCQkgICAgU1BQX0FSR1MoaWZwKSwgY3AtPm5hbWUpOworCQkJc3BwcF9jcF9z ZW5kKHNwLCBjcC0+cHJvdG8sIFRFUk1fQUNLLCBoLT5pZGVudCwgMCwgMCk7CiAJCQlicmVh azsKIAkJZGVmYXVsdDoKIAkJCXByaW50ZihTUFBfRk1UICIlcyBpbGxlZ2FsICVzIGluIHN0 YXRlICVzXG4iLApAQCAtMTU2MywxMiArMTY0NywxMiBAQAogCQljYXNlIFNUQVRFX0FDS19T RU5UOgogCQkJYnJlYWs7CiAJCWNhc2UgU1RBVEVfQ0xPU0lORzoKLQkJCXNwcHBfY3BfY2hh bmdlX3N0YXRlKGNwLCBzcCwgU1RBVEVfQ0xPU0VEKTsKIAkJCShjcC0+dGxmKShzcCk7CisJ CQlzcHBwX2NwX2NoYW5nZV9zdGF0ZShjcCwgc3AsIFNUQVRFX0NMT1NFRCk7CiAJCQlicmVh azsKIAkJY2FzZSBTVEFURV9TVE9QUElORzoKLQkJCXNwcHBfY3BfY2hhbmdlX3N0YXRlKGNw LCBzcCwgU1RBVEVfU1RPUFBFRCk7CiAJCQkoY3AtPnRsZikoc3ApOworCQkJc3BwcF9jcF9j aGFuZ2Vfc3RhdGUoY3AsIHNwLCBTVEFURV9TVE9QUEVEKTsKIAkJCWJyZWFrOwogCQljYXNl IFNUQVRFX0FDS19SQ1ZEOgogCQkJc3BwcF9jcF9jaGFuZ2Vfc3RhdGUoY3AsIHNwLCBTVEFU RV9SRVFfU0VOVCk7CkBAIC0xNjQwLDE0ICsxNzI0LDkgQEAKIAkJICAgIG50b2hsICgqKGxv bmcqKShoKzEpKSA9PSBzcC0+bGNwLm1hZ2ljKSB7CiAJCQkvKiBMaW5lIGxvb3BiYWNrIG1v ZGUgZGV0ZWN0ZWQuICovCiAJCQlwcmludGYoU1BQX0ZNVCAibG9vcGJhY2tcbiIsIFNQUF9B UkdTKGlmcCkpOwotCQkJc3AtPnBwX2xvb3BjbnQgPSBNQVhBTElWRUNOVCAqIDU7Ci0JCQlp Zl9kb3duIChpZnApOwotCQkJc3BwcF9xZmx1c2ggKCZzcC0+cHBfY3BxKTsKLQogCQkJLyog U2h1dCBkb3duIHRoZSBQUFAgbGluay4gKi8KLQkJCS8qIFhYWCAqLwotCQkJbGNwLkRvd24o c3ApOwotCQkJbGNwLlVwKHNwKTsKKwkJCWxjcC5DbG9zZShzcCk7CisJCQlsY3AuT3Blbihz cCk7CiAJCQlicmVhazsKIAkJfQogCQkqKGxvbmcqKShoKzEpID0gaHRvbmwgKHNwLT5sY3Au bWFnaWMpOwpAQCAtMTc4MCwyOCArMTg1OSwyMSBAQAogCQlzcHBwX2NwX2NoYW5nZV9zdGF0 ZShjcCwgc3AsIFNUQVRFX1JFUV9TRU5UKTsKIAkJYnJlYWs7CiAJY2FzZSBTVEFURV9TVE9Q UEVEOgotCQkvKgotCQkgKiBUcnkgZXNjYXBpbmcgc3RvcHBlZCBzdGF0ZS4gIFRoaXMgc2Vl bXMgdG8gYml0ZQotCQkgKiBwZW9wbGUgb2NjYXNpb25hbGx5LCBpbiBwYXJ0aWN1bGFyIGZv ciBJUENQLAotCQkgKiBwcmVzdW1hYmx5IGZvbGxvd2luZyBwcmV2aW91cyBJUENQIG5lZ290 aWF0aW9uCi0JCSAqIGFib3J0cy4gIFNvbWVob3csIHdlIG11c3QgaGF2ZSBtaXNzZWQgYSBE b3duIGV2ZW50Ci0JCSAqIHdoaWNoIHdvdWxkIGhhdmUgY2F1c2VkIGEgdHJhbnNpdGlvbiBp bnRvIHN0YXJ0aW5nCi0JCSAqIHN0YXRlLCBzbyBhcyBhIGJhbmRhaWQgd2UgZm9yY2UgdGhl IERvd24gZXZlbnQgbm93LgotCQkgKiBUaGlzIGVmZmVjdGl2ZWx5IGltcGxlbWVudHMgKHNv bWV0aGluZyBsaWtlIHRoZSkKLQkJICogYHJlc3RhcnQnIG9wdGlvbiBtZW50aW9uZWQgaW4g dGhlIHN0YXRlIHRyYW5zaXRpb24KLQkJICogdGFibGUgb2YgUkZDIDE2NjEuCi0JCSAqLwot CQlzcHBwX2NwX2NoYW5nZV9zdGF0ZShjcCwgc3AsIFNUQVRFX1NUQVJUSU5HKTsKLQkJKGNw LT50bHMpKHNwKTsKLQkJYnJlYWs7CiAJY2FzZSBTVEFURV9TVE9QUElORzoKKwljYXNlIFNU QVRFX09QRU5FRDoKKwkvKiBBcyBzYWlkIGluIEltcGxlbWVudGF0aW9uIE9wdGlvbiAqLwor CQljcC0+RG93bihzcCk7CisJCWNwLT5VcChzcCk7CisJCWJyZWFrOwogCWNhc2UgU1RBVEVf UkVRX1NFTlQ6CiAJY2FzZSBTVEFURV9BQ0tfUkNWRDoKIAljYXNlIFNUQVRFX0FDS19TRU5U OgotCWNhc2UgU1RBVEVfT1BFTkVEOgogCQlicmVhazsKIAljYXNlIFNUQVRFX0NMT1NJTkc6 CisJLyogQXMgc2FpZCBpbiBJbXBsZW1lbnRhdGlvbiBPcHRpb24gKi8KIAkJc3BwcF9jcF9j aGFuZ2Vfc3RhdGUoY3AsIHNwLCBTVEFURV9TVE9QUElORyk7CisJCWNwLT5Eb3duKHNwKTsK KwkJY3AtPlVwKHNwKTsKIAkJYnJlYWs7CiAJfQogfQpAQCAtMTgyMyw4ICsxODk1LDggQEAK IAljYXNlIFNUQVRFX0NMT1NJTkc6CiAJCWJyZWFrOwogCWNhc2UgU1RBVEVfU1RBUlRJTkc6 Ci0JCXNwcHBfY3BfY2hhbmdlX3N0YXRlKGNwLCBzcCwgU1RBVEVfSU5JVElBTCk7CiAJCShj cC0+dGxmKShzcCk7CisJCXNwcHBfY3BfY2hhbmdlX3N0YXRlKGNwLCBzcCwgU1RBVEVfSU5J VElBTCk7CiAJCWJyZWFrOwogCWNhc2UgU1RBVEVfU1RPUFBFRDoKIAkJc3BwcF9jcF9jaGFu Z2Vfc3RhdGUoY3AsIHNwLCBTVEFURV9DTE9TRUQpOwpAQCAtMTg2MywxOCArMTkzNSwxOCBA QAogCQkvKiBUTy0gZXZlbnQgKi8KIAkJc3dpdGNoIChzcC0+c3RhdGVbY3AtPnByb3RvaWR4 XSkgewogCQljYXNlIFNUQVRFX0NMT1NJTkc6Ci0JCQlzcHBwX2NwX2NoYW5nZV9zdGF0ZShj cCwgc3AsIFNUQVRFX0NMT1NFRCk7CiAJCQkoY3AtPnRsZikoc3ApOworCQkJc3BwcF9jcF9j aGFuZ2Vfc3RhdGUoY3AsIHNwLCBTVEFURV9DTE9TRUQpOwogCQkJYnJlYWs7CiAJCWNhc2Ug U1RBVEVfU1RPUFBJTkc6Ci0JCQlzcHBwX2NwX2NoYW5nZV9zdGF0ZShjcCwgc3AsIFNUQVRF X1NUT1BQRUQpOwogCQkJKGNwLT50bGYpKHNwKTsKKwkJCXNwcHBfY3BfY2hhbmdlX3N0YXRl KGNwLCBzcCwgU1RBVEVfU1RPUFBFRCk7CiAJCQlicmVhazsKIAkJY2FzZSBTVEFURV9SRVFf U0VOVDoKIAkJY2FzZSBTVEFURV9BQ0tfUkNWRDoKIAkJY2FzZSBTVEFURV9BQ0tfU0VOVDoK LQkJCXNwcHBfY3BfY2hhbmdlX3N0YXRlKGNwLCBzcCwgU1RBVEVfU1RPUFBFRCk7CiAJCQko Y3AtPnRsZikoc3ApOworCQkJc3BwcF9jcF9jaGFuZ2Vfc3RhdGUoY3AsIHNwLCBTVEFURV9T VE9QUEVEKTsKIAkJCWJyZWFrOwogCQl9CiAJZWxzZQpAQCAtMjAwOCw5ICsyMDgwLDggQEAK IAkgKi8KIAlpZiAoKGlmcC0+aWZfZmxhZ3MgJiAoSUZGX0FVVE8gfCBJRkZfUEFTU0lWRSkp ID09IDApIHsKIAkJbG9nKExPR19JTkZPLAotCQkgICAgU1BQX0ZNVCAiRG93biBldmVudCwg dGFraW5nIGludGVyZmFjZSBkb3duLlxuIiwKKwkJICAgIFNQUF9GTVQgIkRvd24gZXZlbnQs IGNvbnRpbnVpbmcuXG4iLAogCQkgICAgU1BQX0FSR1MoaWZwKSk7Ci0JCWlmX2Rvd24oaWZw KTsKIAl9IGVsc2UgewogCQlpZiAoZGVidWcpCiAJCQlsb2coTE9HX0RFQlVHLApAQCAtMjA4 NSw3ICsyMTU2LDcgQEAKIAkJCWlmIChsZW4gPj0gNiAmJiBwWzFdID09IDYpCiAJCQkJY29u dGludWU7CiAJCQlpZiAoZGVidWcpCi0JCQkJbG9nKC0xLCAiW2ludmFsaWRdICIpOworCQkJ CWFkZGxvZygiW2ludmFsaWRdICIpOwogCQkJYnJlYWs7CiAJCWNhc2UgTENQX09QVF9BU1lO Q19NQVA6CiAJCQkvKiBBc3luYyBjb250cm9sIGNoYXJhY3RlciBtYXAuICovCkBAIC0yMTY0 LDEyICsyMjM1LDExIEBACiAJCQlubWFnaWMgPSAodV9sb25nKXBbMl0gPDwgMjQgfAogCQkJ CSh1X2xvbmcpcFszXSA8PCAxNiB8IHBbNF0gPDwgOCB8IHBbNV07CiAJCQlpZiAobm1hZ2lj ICE9IHNwLT5sY3AubWFnaWMpIHsKLQkJCQlzcC0+cHBfbG9vcGNudCA9IDA7CiAJCQkJaWYg KGRlYnVnKQogCQkJCQlhZGRsb2coIjB4JWx4ICIsIG5tYWdpYyk7CiAJCQkJY29udGludWU7 CiAJCQl9Ci0JCQlpZiAoZGVidWcgJiYgc3AtPnBwX2xvb3BjbnQgPCBNQVhBTElWRUNOVCo1 KQorCQkJaWYgKGRlYnVnKQogCQkJCWFkZGxvZygiW2dsaXRjaF0gIik7CiAJCQkrK3NwLT5w cF9sb29wY250OwogCQkJLyoKQEAgLTIyMzQsMzEgKzIzMDQsMjMgQEAKIAkJcmxlbiArPSBw WzFdOwogCX0KIAlpZiAocmxlbikgewotCQkvKgotCQkgKiBMb2NhbCBhbmQgcmVtb3RlIG1h Z2ljcyBlcXVhbCAtLSBsb29wYmFjaz8KLQkJICovCi0JCWlmIChzcC0+cHBfbG9vcGNudCA+ PSBNQVhBTElWRUNOVCo1KSB7Ci0JCQlpZiAoc3AtPnBwX2xvb3BjbnQgPT0gTUFYQUxJVkVD TlQqNSkKLQkJCQlwcmludGYgKFNQUF9GTVQgImxvb3BiYWNrXG4iLAotCQkJCQlTUFBfQVJH UyhpZnApKTsKLQkJCWlmIChpZnAtPmlmX2ZsYWdzICYgSUZGX1VQKSB7Ci0JCQkJaWZfZG93 bihpZnApOwotCQkJCXNwcHBfcWZsdXNoKCZzcC0+cHBfY3BxKTsKLQkJCQkvKiBYWFggPyAq LwotCQkJCWxjcC5Eb3duKHNwKTsKLQkJCQlsY3AuVXAoc3ApOwotCQkJfQotCQl9IGVsc2Ug aWYgKCsrc3AtPmZhaWxfY291bnRlcltJRFhfTENQXSA+PSBzcC0+bGNwLm1heF9mYWlsdXJl KSB7Ci0JCQlpZiAoZGVidWcpCi0JCQkJYWRkbG9nKCIgbWF4X2ZhaWx1cmUgKCVkKSBleGNl ZWRlZCwgIgotCQkJCSAgICAgICAic2VuZCBjb25mLXJlalxuIiwKLQkJCQkgICAgICAgc3At PmxjcC5tYXhfZmFpbHVyZSk7Ci0JCQlzcHBwX2NwX3NlbmQoc3AsIFBQUF9MQ1AsIENPTkZf UkVKLCBoLT5pZGVudCwgcmxlbiwgYnVmKTsKLQkJfSBlbHNlIHsKKwkJaWYgKCsrc3AtPmZh aWxfY291bnRlcltJRFhfTENQXSA8IHNwLT5sY3AubWF4X2ZhaWx1cmUpIHsKIAkJCWlmIChk ZWJ1ZykKLQkJCQlhZGRsb2coIiBzZW5kIGNvbmYtbmFrXG4iKTsKKwkJCQlhZGRsb2coInNl bmQgY29uZi1uYWtcbiIpOwogCQkJc3BwcF9jcF9zZW5kIChzcCwgUFBQX0xDUCwgQ09ORl9O QUssIGgtPmlkZW50LCBybGVuLCBidWYpOworCQkJcmV0dXJuIDA7CiAJCX0KKwkJaWYgKGRl YnVnKQorCQkJYWRkbG9nKCJtYXhfZmFpbHVyZSAoJWQpIGV4Y2VlZGVkLCBjbG9zaW5nXG4i LAorCQkJICAgICAgIHNwLT5sY3AubWF4X2ZhaWx1cmUpOworCQlpZiAoc3AtPnBwX2xvb3Bj bnQgPj0gTUFYQUxJVkVDTlQpCisJCQlwcmludGYgKCIlcyVkOiBsb29wYmFja1xuIiwKKwkJ CQlpZnAtPmlmX25hbWUsIGlmcC0+aWZfdW5pdCk7CisJCWxjcC5DbG9zZShzcCk7CisJCXNw LT5mYWlsX2NvdW50ZXJbSURYX0xDUF0gPSAwOworCQlzcC0+cHBfbG9vcGNudCA9IDA7CisJ CWxjcC5PcGVuKHNwKTsKKwkJcmV0dXJuIDA7CiAJfSBlbHNlIHsKIAkJaWYgKGRlYnVnKQog CQkJYWRkbG9nKCIgc2VuZCBjb25mLWFja1xuIik7CkBAIC0yNjU4LDYgKzI3MjAsMTcgQEAK IAogCXNwLT5pcGNwLmZsYWdzICY9IH4oSVBDUF9ISVNBRERSX1NFRU58SVBDUF9NWUFERFJf U0VFTnxJUENQX01ZQUREUl9EWU4pOwogCisJLyogVG8gcHJldmVudCBJUENQIGxvY2sgdXAg aW4gc3RvcHBlZCBzdGF0ZS4gKi8KKwlpZiAoc3AtPnN0YXRlW0lEWF9JUENQXSA9PSBTVEFU RV9TVE9QUEVEKQorCQlzcC0+c3RhdGVbSURYX0lQQ1BdID0gU1RBVEVfQ0xPU0VEOworCisJ LyoKKwkgKiBJZiBubyBvdGhlciBvcGVuZCBOQ1AgYXQgdGhpcyBtb21lbmV0LCB3ZSBzaG91 bGQgaW5kaWNhdGUKKwkgKiB0byBMQ1Agb3VyIHByZXNlbnMuCisJICovCisJaWYgKCFzcHBw X25jcF9jaGVjayAoc3ApKQorCQlzcC0+c3RhdGVbSURYX0lQQ1BdID0gU1RBVEVfSU5JVElB TDsKKwogCXNwcHBfZ2V0X2lwX2FkZHJzKHNwLCAmbXlhZGRyLCAmaGlzYWRkciwgMCk7CiAJ LyoKIAkgKiBJZiB3ZSBkb24ndCBoYXZlIGhpcyBhZGRyZXNzLCB0aGlzIHByb2JhYmx5IG1l YW5zIG91cgpAQCAtMjgwOSwxMSArMjg4MiwxMSBAQAogCQkJCQlhZGRsb2coIiVzIFtub3Qg YWdyZWVkXSAiLAogCQkJCQkJc3BwcF9kb3R0ZWRfcXVhZChkZXNpcmVkYWRkcikpOwogCi0J CQl9CiAJCQlwWzJdID0gaGlzYWRkciA+PiAyNDsKIAkJCXBbM10gPSBoaXNhZGRyID4+IDE2 OwogCQkJcFs0XSA9IGhpc2FkZHIgPj4gODsKIAkJCXBbNV0gPSBoaXNhZGRyOworCQkJfQog CQkJYnJlYWs7CiAJCX0KIAkJLyogQWRkIHRoZSBvcHRpb24gdG8gbmFrJ2VkIGxpc3QuICov CkBAIC0yOTg5LDYgKzMwNjIsOCBAQAogCS8qIHdlIG5vIGxvbmdlciBuZWVkIExDUCAqLwog CXNwLT5sY3AucHJvdG9zICY9IH4oMSA8PCBJRFhfSVBDUCk7CiAJc3BwcF9sY3BfY2hlY2tf YW5kX2Nsb3NlKHNwKTsKKwlpZiAoIXNwcHBfbmNwX2NoZWNrKHNwKSkKKwkJbGNwLk9wZW4g KHNwKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTMzOTYsNiArMzQ3MSw3IEBACiAJZnJlZSAo YnVmLCBNX1RFTVApOwogCXJldHVybjsKIH0KKwogc3RhdGljIHZvaWQKIHNwcHBfaXB2NmNw X3RsdShzdHJ1Y3Qgc3BwcCAqc3ApCiB7CkBAIC0zOTk5LDggKzQwNzUsNyBAQAogCQkgICAg ICAgc3AtPm15YXV0aC5uYW1lLAogCQkgICAgICAgMCk7CiB9Ci0KLS8qCisMLyoKICAqLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0qCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogICAgICAg ICAgICAgICAgICAgICAgICBUaGUgUEFQIGltcGxlbWVudGF0aW9uLiAgICAgICAgICAgICAg ICAgICAgICAgICAgICoKQEAgLTQ0MzIsNiArNDUwNywxMSBAQAogCQkgICAgISAoaWZwLT5p Zl9mbGFncyAmIElGRl9SVU5OSU5HKSkKIAkJCWNvbnRpbnVlOwogCisJCWlmIChzcC0+cHBf bW9kZSA9PSBQUF9GUikgeworCQkJc3BwcF9mcl9rZWVwYWxpdmUgKHNwKTsKKwkJCWNvbnRp bnVlOworCQl9CisKIAkJLyogTm8ga2VlcGFsaXZlIGluIFBQUCBtb2RlIGlmIExDUCBub3Qg b3BlbmVkIHlldC4gKi8KIAkJaWYgKHNwLT5wcF9tb2RlICE9IElGRl9DSVNDTyAmJgogCQkg ICAgc3AtPnBwX3BoYXNlIDwgUEhBU0VfQVVUSEVOVElDQVRFKQpAQCAtNDQ0MCwxNCArNDUy MCwxMyBAQAogCQlpZiAoc3AtPnBwX2FsaXZlY250ID09IE1BWEFMSVZFQ05UKSB7CiAJCQkv KiBObyBrZWVwYWxpdmUgcGFja2V0cyBnb3QuICBTdG9wIHRoZSBpbnRlcmZhY2UuICovCiAJ CQlwcmludGYgKFNQUF9GTVQgImRvd25cbiIsIFNQUF9BUkdTKGlmcCkpOworCQkJaWYgKHNw LT5wcF9tb2RlID09IElGRl9DSVNDTykgewogCQkJaWZfZG93biAoaWZwKTsKIAkJCXNwcHBf cWZsdXNoICgmc3AtPnBwX2NwcSk7Ci0JCQlpZiAoc3AtPnBwX21vZGUgIT0gSUZGX0NJU0NP KSB7Ci0JCQkJLyogWFhYICovCisJCQl9IGVsc2UgewogCQkJCS8qIFNodXQgZG93biB0aGUg UFBQIGxpbmsuICovCi0JCQkJbGNwLkRvd24oc3ApOwotCQkJCS8qIEluaXRpYXRlIG5lZ290 aWF0aW9uLiBYWFggKi8KLQkJCQlsY3AuVXAoc3ApOworCQkJCWxjcC5DbG9zZShzcCk7CisJ CQkJbGNwLk9wZW4oc3ApOwogCQkJfQogCQl9CiAJCWlmIChzcC0+cHBfYWxpdmVjbnQgPD0g TUFYQUxJVkVDTlQpCkBAIC00ODY1LDcgKzQ5NDQsNiBAQAogCXNwcHBfbGNwX2NoZWNrX2Fu ZF9jbG9zZShzcCk7CiB9CiAKLQogc3RhdGljIGNvbnN0IGNoYXIgKgogc3BwcF9jcF90eXBl X25hbWUodV9jaGFyIHR5cGUpCiB7CkBAIC01MDUxLDQgKzUxMjksNTA5IEBACiBzcHBwX251 bGwoc3RydWN0IHNwcHAgKnVudXNlZCkKIHsKIAkvKiBkbyBqdXN0IG5vdGhpbmcgKi8KK30K KworLyoKKyAqIEZyYW1lIFJlbGF5IGxpbmsgbGV2ZWwgc3Vicm91dGluZXMuCisgKiBBTlNJ IFQxLjYxNy1jb21wYXRpYmxlIGxpbmsgbWFuYWdlbWVudCBzaWduYWxpbmcgaW1wbGVtZW50 ZWQuCisgKiBPbmx5IG9uZSBETENJIHBlciBjaGFubmVsIGZvciBub3cuCisgKiBDb3B5cmln aHQgKEMpIDE5OTQtMTk5OSBDcm9ueXggRW5naW5lZXJpbmcgTHRkLgorICogQXV0aG9yOiBT ZXJnZSBWYWt1bGVua28sIDx2YWtAY3Jvbnl4LnJ1PgorICovCitzdGF0aWMgdm9pZCBzcHBw X2ZyX2lucHV0IChzdHJ1Y3Qgc3BwcCAqc3AsIHN0cnVjdCBtYnVmICptKQoreworCVNURERD TDsKKwl1X2NoYXIgKmggPSBtdG9kIChtLCB1X2NoYXIqKTsKKwlzdHJ1Y3QgaWZxdWV1ZSAq aW5xOworCWludCBkbGNpLCBobGVuLCBwcm90bywgczsKKworCS8qIEdldCB0aGUgRExDSSBu dW1iZXIuICovCisJaWYgKG0tPm1fcGt0aGRyLmxlbiA8IDEwKSB7CitiYWQ6ICAgICAgICAg ICAgbV9mcmVlbSAobSk7CisJCXJldHVybjsKKwl9CisJZGxjaSA9IChoWzBdIDw8IDIgJiAw eDNmMCkgfCAoaFsxXSA+PiA0ICYgMHgwZik7CisKKwkvKiBQcm9jZXNzIHNpZ25hbGluZyBw YWNrZXRzLiAqLworCWlucSA9IDA7CisJaWYgKGRsY2kgPT0gMCkgeworCQlzcHBwX2ZyX3Np Z25hbCAoc3AsIGgsIG0tPm1fcGt0aGRyLmxlbik7CisJCW1fZnJlZW0gKG0pOworCQlyZXR1 cm47CisJfQorCisJaWYgKGRsY2kgIT0gc3AtPmZyX2RsY2kpIHsKKwkJaWYgKGRlYnVnKQor CQkJcHJpbnRmICgiJXMlZDogUmVjZWl2ZWQgcGFja2V0IGZyb20gaW52YWxpZCBETENJICVk XG4iLAorCQkJCWlmcC0+aWZfbmFtZSwgaWZwLT5pZl91bml0LCBkbGNpKTsKKwkJZ290byBi YWQ7CisJfQorCisJLyogUHJvY2VzcyB0aGUgcGFja2V0LiAqLworCWlmIChudG9ocyAoKihz aG9ydCopIChoKzIpKSA9PSBFVEhFUlRZUEVfSVApIHsKKyAgICAgICAgICAgICAgICAvKiBQ cmVoaXN0b3JpYyBJUCBmcmFtaW5nPyAqLworCQloWzJdID0gUFBQX1VJOworCQloWzNdID0g RlJfSVA7CisJfQorCWlmIChoWzJdICE9IFBQUF9VSSkgeworCQlpZiAoZGVidWcpCisJCQlw cmludGYgKCIlcyVkOiBJbnZhbGlkIGZyYW1lIHJlbGF5IGhlYWRlciBmbGFnIDB4JTAyeFxu IiwKKwkJCQlpZnAtPmlmX25hbWUsIGlmcC0+aWZfdW5pdCwgaFsyXSk7CisJCWdvdG8gYmFk OworCX0KKwlzd2l0Y2ggKGhbM10pIHsKKwlkZWZhdWx0OgorCQlpZiAoZGVidWcpCisJCQlw cmludGYgKCIlcyVkOiBVbnN1cHBvcnRlZCBOTFBJRCAweCUwMnhcbiIsCisJCQkJaWZwLT5p Zl9uYW1lLCBpZnAtPmlmX3VuaXQsIGhbM10pOworCQlnb3RvIGJhZDsKKworCWNhc2UgRlJf UEFERElORzoKKwkJaWYgKGhbNF0gIT0gRlJfU05BUCkgeworCQkJaWYgKGRlYnVnKQorCQkJ CXByaW50ZiAoIiVzJWQ6IEJhZCBOTFBJRCAweCUwMnhcbiIsCisJCQkJCWlmcC0+aWZfbmFt ZSwgaWZwLT5pZl91bml0LCBoWzRdKTsKKwkJCWdvdG8gYmFkOworCQl9CisJCWlmIChoWzVd IHx8IGhbNl0gfHwgaFs3XSkgeworCQkJaWYgKGRlYnVnKQorCQkJCXByaW50ZiAoIiVzJWQ6 IEJhZCBPSUQgMHglMDJ4LTB4JTAyeC0weCUwMnhcbiIsCisJCQkJCWlmcC0+aWZfbmFtZSwg aWZwLT5pZl91bml0LAorCQkJCQloWzVdLCBoWzZdLCBoWzddKTsKKwkJCWdvdG8gYmFkOwor CQl9CisJCXByb3RvID0gbnRvaHMgKCooc2hvcnQqKSAoaCs4KSk7CisJCWlmIChwcm90byA9 PSBFVEhFUlRZUEVfQVJQKSB7CisJCQkvKiBQcm9jZXNzIHRoZSBBUlAgcmVxdWVzdC4gKi8K KwkJCWlmIChtLT5tX3BrdGhkci5sZW4gIT0gMTAgKyBzaXplb2YgKHN0cnVjdCBhcnBfcmVx KSkgeworCQkJCWlmIChkZWJ1ZykKKwkJCQkJcHJpbnRmICgiJXMlZDogQmFkIEFSUCByZXF1 ZXN0IHNpemUgPSAlZCBieXRlc1xuIiwKKwkJCQkJCWlmcC0+aWZfbmFtZSwgaWZwLT5pZl91 bml0LAorCQkJCQkJbS0+bV9wa3RoZHIubGVuKTsKKwkJCQlnb3RvIGJhZDsKKwkJCX0KKwkJ CXNwcHBfZnJfYXJwIChzcCwgKHN0cnVjdCBhcnBfcmVxKikgKGggKyAxMCksCisJCQkJaFsw XSA8PCA4IHwgaFsxXSk7CisJCQltX2ZyZWVtIChtKTsKKwkJCXJldHVybjsKKwkJfQorCQlo bGVuID0gMTA7CisJCWJyZWFrOworCisJY2FzZSBGUl9JUDoKKwkJcHJvdG8gPSBFVEhFUlRZ UEVfSVA7CisJCWhsZW4gPSA0OworCQlicmVhazsKKwl9CisKKwkvKiBSZW1vdmUgZnJhbWUg cmVsYXkgaGVhZGVyLiAqLworCW1fYWRqIChtLCBobGVuKTsKKworCXN3aXRjaCAocHJvdG8p IHsKKwlkZWZhdWx0OgorCQkrK2lmcC0+aWZfbm9wcm90bzsKK2Ryb3A6CQkrK2lmcC0+aWZf aWVycm9yczsKKwkJKytpZnAtPmlmX2lxZHJvcHM7CisJCW1fZnJlZW0gKG0pOworCQlyZXR1 cm47CisjaWZkZWYgSU5FVAorCWNhc2UgRVRIRVJUWVBFX0lQOgorCQlzY2hlZG5ldGlzciAo TkVUSVNSX0lQKTsKKwkJaW5xID0gJmlwaW50cnE7CisJCWJyZWFrOworI2VuZGlmCisjaWZk ZWYgSVBYCisJY2FzZSBFVEhFUlRZUEVfSVBYOgorCQlzY2hlZG5ldGlzciAoTkVUSVNSX0lQ WCk7CisJCWlucSA9ICZpcHhpbnRycTsKKwkJYnJlYWs7CisjZW5kaWYKKyNpZmRlZiBOUwor CWNhc2UgMHg4MTM3OiAvKiBOb3ZlbGwgRXRoZXJuZXRfSUkgRXRoZXJuZXQgVFlQRSBJSSAq LworCQlzY2hlZG5ldGlzciAoTkVUSVNSX05TKTsKKwkJaW5xID0gJm5zaW50cnE7CisJCWJy ZWFrOworI2VuZGlmCisjaWZkZWYgTkVUQVRBTEsKKyAgICAgICAgY2FzZSBFVEhFUlRZUEVf QVQ6CisJCXNjaGVkbmV0aXNyIChORVRJU1JfQVRBTEspOworCQlpbnEgPSAmYXRpbnRycTE7 CisgICAgICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYKKwl9CisKKwlpZiAoISAoaWZwLT5p Zl9mbGFncyAmIElGRl9VUCkpCisJCWdvdG8gZHJvcDsKKworCS8qIENoZWNrIHF1ZXVlLiAq LworCXMgPSBzcGxpbXAoKTsKKwlpZiAoSUZfUUZVTEwgKGlucSkpIHsKKwkJLyogUXVldWUg b3ZlcmZsb3cuICovCisJCUlGX0RST1AoaW5xKTsKKwkJc3BseChzKTsKKwkJaWYgKGRlYnVn KQorCQkJbG9nKExPR19ERUJVRywgU1BQX0ZNVCAicHJvdG9jb2wgcXVldWUgb3ZlcmZsb3dc biIsCisJCQkJU1BQX0FSR1MoaWZwKSk7CisJCWdvdG8gZHJvcDsKKwl9CisJSUZfRU5RVUVV RShpbnEsIG0pOworCXNwbHgocyk7Cit9CisKKy8qCisgKiBBZGQgdGhlIGZyYW1lIHJlbGF5 IGhlYWRlciB0byB0aGUgcGFja2V0LgorICogRm9yIElQIHRoZSBoZWFkZXIgbGVuZ3RoIGlz IDQgYnl0ZXMsCisgKiBmb3IgYWxsIG90aGVyIHByb3RvY29scyAtIDEwIGJ5dGVzIChSRkMg MTQ5MCkuCisgKi8KK3N0YXRpYyBzdHJ1Y3QgbWJ1ZiAqc3BwcF9mcl9oZWFkZXIgKHN0cnVj dCBzcHBwICpzcCwgc3RydWN0IG1idWYgKm0sCisJaW50IGZhbWlseSkKK3sKKwlTVEREQ0w7 CisJdV9jaGFyICpoOworCWludCB0eXBlLCBobGVuOworCisJLyogUHJlcGVuZCB0aGUgc3Bh Y2UgZm9yIEZyYW1lIFJlbGF5IGhlYWRlci4gKi8KKwlobGVuID0gKGZhbWlseSA9PSBBRl9J TkVUKSA/IDQgOiAxMDsKKwlNX1BSRVBFTkQgKG0sIGhsZW4sIE1fRE9OVFdBSVQpOworCWlm ICghIG0pCisJCXJldHVybiAwOworCWggPSBtdG9kIChtLCB1X2NoYXIqKTsKKworCS8qIEZp bGwgdGhlIGhlYWRlci4gKi8KKwloWzBdID0gc3AtPmZyX2RsY2kgPj4gMiAmIDB4ZmM7CisJ aFsxXSA9IHNwLT5mcl9kbGNpIDw8IDQgfCAxOworCWhbMl0gPSBQUFBfVUk7CisKKwlzd2l0 Y2ggKGZhbWlseSkgeworCWRlZmF1bHQ6CisJCWlmIChkZWJ1ZykKKwkJCXByaW50ZiAoIiVz JWQ6IENhbm5vdCBoYW5kbGUgYWRkcmVzcyBmYW1pbHkgJWRcbiIsCisJCQkJaWZwLT5pZl9u YW1lLCBpZnAtPmlmX3VuaXQsIGZhbWlseSk7CisJCW1fZnJlZW0gKG0pOworCQlyZXR1cm4g MDsKKyNpZmRlZiBJTkVUCisJY2FzZSBBRl9JTkVUOgorI2lmIDAgLyogQ3Jhc2hlcyBvbiBm cmFnbWVudGVkIHBhY2tldHMgKi8KKwkJLyoKKwkJICogU2V0IHRoZSBkaXNjYXJkIGVsaWdp YmlsaXR5IGJpdCwgaWY6CisJCSAqIDEpIG5vIGZyYWdtZW50YXRpb24KKwkJICogMikgbGVu Z3RoID4gNDAwIGJ5dGVzCisJCSAqIDNhKSB0aGUgcHJvdG9jb2wgaXMgVURQIG9yCisJCSAq IDNiKSBUQ1AgZGF0YSAobm8gY29udHJvbCBiaXRzKQorCQkgKi8KKwkJeworCQlzdHJ1Y3Qg aXAgKmlwID0gKHN0cnVjdCBpcCopIChoICsgaGxlbik7CisJCXN0cnVjdCB0Y3BoZHIgKnRj cCA9IChzdHJ1Y3QgdGNwaGRyKikgKChsb25nKilpcCArIGlwLT5pcF9obCk7CisKKwkJaWYg KCEgKGlwLT5pcF9vZmYgJiB+SVBfREYpICYmIGlwLT5pcF9sZW4gPiA0MDAgJiYKKwkJICAg IChpcC0+aXBfcCA9PSBJUFBST1RPX1VEUCB8fAorCQkgICAgaXAtPmlwX3AgPT0gSVBQUk9U T19UQ1AgJiYgISB0Y3AtPnRoX2ZsYWdzKSkKKwkJCWhbMV0gfD0gRlJfREU7CisJCX0KKyNl bmRpZgorCQloWzNdID0gRlJfSVA7CisJCXJldHVybiBtOworI2VuZGlmCisjaWZkZWYgSVBY CisJY2FzZSBBRl9JUFg6CisJCXR5cGUgPSBFVEhFUlRZUEVfSVBYOworCQlicmVhazsKKyNl bmRpZgorI2lmZGVmIE5TCisJY2FzZSBBRl9OUzoKKwkJdHlwZSA9IDB4ODEzNzsKKwkJYnJl YWs7CisjZW5kaWYKKyNpZmRlZiBORVRBVEFMSworCWNhc2UgQUZfQVBQTEVUQUxLOgorCQl0 eXBlID0gRVRIRVJUWVBFX0FUOworCQlicmVhazsKKyNlbmRpZgorCX0KKwloWzNdID0gRlJf UEFERElORzsKKwloWzRdID0gRlJfU05BUDsKKwloWzVdID0gMDsKKwloWzZdID0gMDsKKwlo WzddID0gMDsKKwkqKHNob3J0KikgKGgrOCkgPSBodG9ucyh0eXBlKTsKKwlyZXR1cm4gbTsK K30KKworLyoKKyAqIFNlbmQgcGVyaW9kaWNhbCBmcmFtZSByZWxheSBsaW5rIHZlcmlmaWNh dGlvbiBtZXNzYWdlcyB2aWEgRExDSSAwLgorICogQ2FsbGVkIGV2ZXJ5IDEwIHNlY29uZHMg KGRlZmF1bHQgdmFsdWUgb2YgVDM5MSB0aW1lciBpcyAxMCBzZWMpLgorICogRXZlcnkgNi10 aCBtZXNzYWdlIGlzIGEgZnVsbCBzdGF0dXMgcmVxdWVzdAorICogKGRlZmF1bHQgdmFsdWUg b2YgTjM5MSBjb3VudGVyIGlzIDYpLgorICovCitzdGF0aWMgdm9pZCBzcHBwX2ZyX2tlZXBh bGl2ZSAoc3RydWN0IHNwcHAgKnNwKQoreworCVNURERDTDsKKwl1bnNpZ25lZCBjaGFyICpo LCAqcDsKKwlzdHJ1Y3QgbWJ1ZiAqbTsKKworCU1HRVRIRFIgKG0sIE1fRE9OVFdBSVQsIE1U X0RBVEEpOworCWlmICghIG0pCisJCXJldHVybjsKKwltLT5tX3BrdGhkci5yY3ZpZiA9IDA7 CisKKwloID0gbXRvZCAobSwgdV9jaGFyKik7CisJcCA9IGg7CisJKnArKyA9IDA7ICAgICAg ICAgICAgICAgICAgICAgICAvKiBETENJID0gMCAqLworCSpwKysgPSAxOworCSpwKysgPSBQ UFBfVUk7CisJKnArKyA9IEZSX1NJR05BTElORzsgICAgICAgICAgICAvKiBOTFBJRCA9IFVO SSBjYWxsIGNvbnRyb2wgKi8KKworCSpwKysgPSAwOyAgICAgICAgICAgICAgICAgICAgICAg LyogY2FsbCByZWZlcmVuY2UgbGVuZ3RoID0gMCAqLworCSpwKysgPSBGUl9NU0dfRU5RVUlS WTsgICAgICAgICAgLyogbWVzc2FnZSB0eXBlID0gc3RhdHVzIGVucXVpcnkgKi8KKworCSpw KysgPSBGUl9GTERfTFNISUZUNTsgICAgICAgICAgLyogbG9ja2luZyBzaGlmdCA1ICovCisK KwkqcCsrID0gRlJfRkxEX1JUWVBFOyAgICAgICAgICAgIC8qIHJlcG9ydCB0eXBlIGZpZWxk ICovCisJKnArKyA9IDE7ICAgICAgICAgICAgICAgICAgICAgICAvKiByZXBvcnQgdHlwZSBs ZW5ndGggPSAxICovCisJaWYgKHNwLT5wcF9zZXFbSURYX0xDUF0gJSA2KQorCQkqcCsrID0g RlJfUlRZUEVfU0hPUlQ7ICAvKiBsaW5rIHZlcmlmaWNhdGlvbiBvbmx5ICovCisJZWxzZQor CQkqcCsrID0gRlJfUlRZUEVfRlVMTDsgICAvKiBmdWxsIHN0YXR1cyBuZWVkZWQgKi8KKwor CWlmIChzcC0+cHBfc2VxW0lEWF9MQ1BdID49IDI1NSkKKwkJc3AtPnBwX3NlcVtJRFhfTENQ XSA9IDA7CisJKnArKyA9IEZSX0ZMRF9WRVJJRlk7ICAgICAgICAgICAvKiBsaW5rIHZlcmlm aWNhdGlvbiB0eXBlIGZpZWxkICovCisJKnArKyA9IDI7ICAgICAgICAgICAgICAgICAgICAg ICAvKiBsaW5rIHZlcmlmaWNhdGlvbiBmaWVsZCBsZW5ndGggPSAyICovCisJKnArKyA9ICsr c3AtPnBwX3NlcVtJRFhfTENQXTsgICAvKiBvdXIgc2VxdWVuY2UgbnVtYmVyICovCisJKnAr KyA9IHNwLT5wcF9yc2VxW0lEWF9MQ1BdOyAgICAvKiBsYXN0IHJlY2VpdmVkIHNlcXVlbmNl IG51bWJlciAqLworCisJbS0+bV9wa3RoZHIubGVuID0gbS0+bV9sZW4gPSBwIC0gaDsKKwlp ZiAoZGVidWcpCisJCXByaW50ZiAoIiVzJWQ6IHNlbmQgbG1pIHBhY2tldCwgc2VxPSVkLCBy c2VxPSVkXG4iLAorCQkJaWZwLT5pZl9uYW1lLCBpZnAtPmlmX3VuaXQsCisJCQkodV9jaGFy KSBzcC0+cHBfc2VxW0lEWF9MQ1BdLAorCQkJKHVfY2hhcikgc3AtPnBwX3JzZXFbSURYX0xD UF0pOworCisJaWYgKElGX1FGVUxMICgmc3AtPnBwX2Zhc3RxKSkgeworCQlJRl9EUk9QICgm aWZwLT5pZl9zbmQpOworCQltX2ZyZWVtIChtKTsKKwl9IGVsc2UKKwkJSUZfRU5RVUVVRSAo JnNwLT5wcF9mYXN0cSwgbSk7CisJaWYgKCEgKGlmcC0+aWZfZmxhZ3MgJiBJRkZfT0FDVElW RSkpCisJCSgqaWZwLT5pZl9zdGFydCkgKGlmcCk7CisJaWZwLT5pZl9vYnl0ZXMgKz0gbS0+ bV9wa3RoZHIubGVuICsgMzsKK30KKworLyoKKyAqIFByb2Nlc3MgdGhlIGZyYW1lIHJlbGF5 IEludmVyc2UgQVJQIHJlcXVlc3QuCisgKi8KK3N0YXRpYyB2b2lkIHNwcHBfZnJfYXJwIChz dHJ1Y3Qgc3BwcCAqc3AsIHN0cnVjdCBhcnBfcmVxICpyZXEsCisJdV9zaG9ydCBoaXNfaGFy ZHdhcmVfYWRkcmVzcykKK3sKKwlTVEREQ0w7CisJc3RydWN0IG1idWYgKm07CisJc3RydWN0 IGFycF9yZXEgKnJlcGx5OworCXVfY2hhciAqaDsKKwl1X3Nob3J0IG15X2hhcmR3YXJlX2Fk ZHJlc3M7CisJdV9sb25nIGhpc19pcF9hZGRyZXNzLCBteV9pcF9hZGRyZXNzOworCisJaWYg KChudG9ocyAocmVxLT5odHlwZSkgIT0gQVJQSFJEX0ZSRUxBWSB8fAorCSAgICBudG9ocyAo cmVxLT5odHlwZSkgIT0gMTYpIHx8IC8qIGZvciBCYXlOZXR3b3JrcyByb3V0ZXJzICovCisJ ICAgIG50b2hzIChyZXEtPnB0eXBlKSAhPSBFVEhFUlRZUEVfSVApIHsKKwkJaWYgKGRlYnVn KQorCQkJcHJpbnRmICgiJXMlZDogSW52YWxpZCBBUlAgaGFyZHdhcmUvcHJvdG9jb2wgdHlw ZSA9IDB4JXgvMHgleFxuIiwKKwkJCQlpZnAtPmlmX25hbWUsIGlmcC0+aWZfdW5pdCwKKwkJ CQludG9ocyAocmVxLT5odHlwZSksIG50b2hzIChyZXEtPnB0eXBlKSk7CisJCXJldHVybjsK Kwl9CisJaWYgKHJlcS0+aGFsZW4gIT0gMiB8fCByZXEtPnBhbGVuICE9IDQpIHsKKwkJaWYg KGRlYnVnKQorCQkJcHJpbnRmICgiJXMlZDogSW52YWxpZCBBUlAgaGFyZHdhcmUvcHJvdG9j b2wgYWRkcmVzcyBsZW5ndGggPSAlZC8lZFxuIiwKKwkJCQlpZnAtPmlmX25hbWUsIGlmcC0+ aWZfdW5pdCwKKwkJCQlyZXEtPmhhbGVuLCByZXEtPnBhbGVuKTsKKwkJcmV0dXJuOworCX0K Kwlzd2l0Y2ggKG50b2hzIChyZXEtPm9wKSkgeworCWRlZmF1bHQ6CisJCWlmIChkZWJ1ZykK KwkJCXByaW50ZiAoIiVzJWQ6IEludmFsaWQgQVJQIG9wID0gMHgleFxuIiwKKwkJCQlpZnAt PmlmX25hbWUsIGlmcC0+aWZfdW5pdCwgbnRvaHMgKHJlcS0+b3ApKTsKKwkJcmV0dXJuOwor CisJY2FzZSBBUlBPUF9JTlZSRVBMWToKKwkJLyogSWdub3JlLiAqLworCQlyZXR1cm47CisK KwljYXNlIEFSUE9QX0lOVlJFUVVFU1Q6CisJCW15X2hhcmR3YXJlX2FkZHJlc3MgPSBudG9o cyAocmVxLT5odGFyZ2V0KTsKKwkJaGlzX2lwX2FkZHJlc3MgPSBudG9ocyAocmVxLT5wc291 cmNlMSkgPDwgMTYgfAorCQkJbnRvaHMgKHJlcS0+cHNvdXJjZTIpOworCQlteV9pcF9hZGRy ZXNzID0gbnRvaHMgKHJlcS0+cHRhcmdldDEpIDw8IDE2IHwKKwkJCW50b2hzIChyZXEtPnB0 YXJnZXQyKTsKKwkJYnJlYWs7CisJfQorCWlmIChkZWJ1ZykKKwkJcHJpbnRmICgiJXMlZDog Z290IEFSUCByZXF1ZXN0LCBzb3VyY2U9MHglMDR4LyVkLiVkLiVkLiVkLCB0YXJnZXQ9MHgl MDR4LyVkLiVkLiVkLiVkXG4iLAorCQkJaWZwLT5pZl9uYW1lLCBpZnAtPmlmX3VuaXQsIG50 b2hzIChyZXEtPmhzb3VyY2UpLAorCQkJKHVuc2lnbmVkIGNoYXIpIChoaXNfaXBfYWRkcmVz cyA+PiAyNCksCisJCQkodW5zaWduZWQgY2hhcikgKGhpc19pcF9hZGRyZXNzID4+IDE2KSwK KwkJCSh1bnNpZ25lZCBjaGFyKSAoaGlzX2lwX2FkZHJlc3MgPj4gOCksCisJCQkodW5zaWdu ZWQgY2hhcikgaGlzX2lwX2FkZHJlc3MsCisJCQlteV9oYXJkd2FyZV9hZGRyZXNzLAorCQkJ KHVuc2lnbmVkIGNoYXIpIChteV9pcF9hZGRyZXNzID4+IDI0KSwKKwkJCSh1bnNpZ25lZCBj aGFyKSAobXlfaXBfYWRkcmVzcyA+PiAxNiksCisJCQkodW5zaWduZWQgY2hhcikgKG15X2lw X2FkZHJlc3MgPj4gOCksCisJCQkodW5zaWduZWQgY2hhcikgbXlfaXBfYWRkcmVzcyk7CisK KwlzcHBwX2dldF9pcF9hZGRycyAoc3AsICZteV9pcF9hZGRyZXNzLCAwLCAwKTsKKwlpZiAo ISBteV9pcF9hZGRyZXNzKQorCQlyZXR1cm47ICAgICAgICAgLyogbm90aGluZyB0byByZXBs eSAqLworCisJaWYgKGRlYnVnKQorCQlwcmludGYgKCIlcyVkOiBzZW5kIEFSUCByZXBseSwg c291cmNlPTB4JTA0eC8lZC4lZC4lZC4lZCwgdGFyZ2V0PTB4JTA0eC8lZC4lZC4lZC4lZFxu IiwKKwkJCWlmcC0+aWZfbmFtZSwgaWZwLT5pZl91bml0LCBteV9oYXJkd2FyZV9hZGRyZXNz LAorCQkJKHVuc2lnbmVkIGNoYXIpIChteV9pcF9hZGRyZXNzID4+IDI0KSwKKwkJCSh1bnNp Z25lZCBjaGFyKSAobXlfaXBfYWRkcmVzcyA+PiAxNiksCisJCQkodW5zaWduZWQgY2hhcikg KG15X2lwX2FkZHJlc3MgPj4gOCksCisJCQkodW5zaWduZWQgY2hhcikgbXlfaXBfYWRkcmVz cywKKwkJCWhpc19oYXJkd2FyZV9hZGRyZXNzLAorCQkJKHVuc2lnbmVkIGNoYXIpIChoaXNf aXBfYWRkcmVzcyA+PiAyNCksCisJCQkodW5zaWduZWQgY2hhcikgKGhpc19pcF9hZGRyZXNz ID4+IDE2KSwKKwkJCSh1bnNpZ25lZCBjaGFyKSAoaGlzX2lwX2FkZHJlc3MgPj4gOCksCisJ CQkodW5zaWduZWQgY2hhcikgaGlzX2lwX2FkZHJlc3MpOworCisJLyogU2VuZCB0aGUgSW52 ZXJzZSBBUlAgcmVwbHkuICovCisJTUdFVEhEUiAobSwgTV9ET05UV0FJVCwgTVRfREFUQSk7 CisJaWYgKCEgbSkKKwkJcmV0dXJuOworCW0tPm1fcGt0aGRyLmxlbiA9IG0tPm1fbGVuID0g MTAgKyBzaXplb2YgKCpyZXBseSk7CisJbS0+bV9wa3RoZHIucmN2aWYgPSAwOworCisJaCA9 IG10b2QgKG0sIHVfY2hhciopOworCXJlcGx5ID0gKHN0cnVjdCBhcnBfcmVxKikgKGggKyAx MCk7CisKKwloWzBdID0gaGlzX2hhcmR3YXJlX2FkZHJlc3MgPj4gODsKKwloWzFdID0gaGlz X2hhcmR3YXJlX2FkZHJlc3M7CisJaFsyXSA9IFBQUF9VSTsKKwloWzNdID0gRlJfUEFERElO RzsKKwloWzRdID0gRlJfU05BUDsKKwloWzVdID0gMDsKKwloWzZdID0gMDsKKwloWzddID0g MDsKKwkqKHNob3J0KikgKGgrOCkgPSBodG9ucyAoRVRIRVJUWVBFX0FSUCk7CisKKwlyZXBs eS0+aHR5cGUgICAgPSBodG9ucyAoQVJQSFJEX0ZSRUxBWSk7CisJcmVwbHktPnB0eXBlICAg ID0gaHRvbnMgKEVUSEVSVFlQRV9JUCk7CisJcmVwbHktPmhhbGVuICAgID0gMjsKKwlyZXBs eS0+cGFsZW4gICAgPSA0OworCXJlcGx5LT5vcCAgICAgICA9IGh0b25zIChBUlBPUF9JTlZS RVBMWSk7CisJcmVwbHktPmhzb3VyY2UgID0gaHRvbnMgKG15X2hhcmR3YXJlX2FkZHJlc3Mp OworCXJlcGx5LT5wc291cmNlMSA9IGh0b25sIChteV9pcF9hZGRyZXNzKTsKKwlyZXBseS0+ cHNvdXJjZTIgPSBodG9ubCAobXlfaXBfYWRkcmVzcykgPj4gMTY7CisJcmVwbHktPmh0YXJn ZXQgID0gaHRvbnMgKGhpc19oYXJkd2FyZV9hZGRyZXNzKTsKKwlyZXBseS0+cHRhcmdldDEg PSBodG9ubCAoaGlzX2lwX2FkZHJlc3MpOworCXJlcGx5LT5wdGFyZ2V0MiA9IGh0b25sICho aXNfaXBfYWRkcmVzcykgPj4gMTY7CisKKwlpZiAoSUZfUUZVTEwgKCZzcC0+cHBfZmFzdHEp KSB7CisJCUlGX0RST1AgKCZpZnAtPmlmX3NuZCk7CisJCW1fZnJlZW0gKG0pOworCX0gZWxz ZQorCQlJRl9FTlFVRVVFICgmc3AtPnBwX2Zhc3RxLCBtKTsKKwlpZiAoISAoaWZwLT5pZl9m bGFncyAmIElGRl9PQUNUSVZFKSkKKwkJKCppZnAtPmlmX3N0YXJ0KSAoaWZwKTsKKwlpZnAt PmlmX29ieXRlcyArPSBtLT5tX3BrdGhkci5sZW4gKyAzOworfQorCisvKgorICogUHJvY2Vz cyB0aGUgaW5wdXQgc2lnbmFsaW5nIHBhY2tldCAoRExDSSAwKS4KKyAqIFRoZSBpbXBsZW1l bnRlZCBwcm90b2NvbCBpcyBBTlNJIFQxLjYxNyBBbm5leCBELgorICovCitzdGF0aWMgdm9p ZCBzcHBwX2ZyX3NpZ25hbCAoc3RydWN0IHNwcHAgKnNwLCB1bnNpZ25lZCBjaGFyICpoLCBp bnQgbGVuKQoreworCVNURERDTDsKKwl1X2NoYXIgKnA7CisJaW50IGRsY2k7CisKKwlpZiAo aFsyXSAhPSBQUFBfVUkgfHwgaFszXSAhPSBGUl9TSUdOQUxJTkcgfHwgaFs0XSAhPSAwKSB7 CisJCWlmIChkZWJ1ZykKKwkJCXByaW50ZiAoIiVzJWQ6IEludmFsaWQgc2lnbmFsaW5nIGhl YWRlclxuIiwKKwkJCQlpZnAtPmlmX25hbWUsIGlmcC0+aWZfdW5pdCk7CitiYWQ6ICAgICAg ICAgICAgaWYgKGRlYnVnKSB7CisJCQlwcmludGYgKCIlMDJ4IiwgKmgrKyk7CisJCQl3aGls ZSAoLS1sZW4gPiAwKQorCQkJCXByaW50ZiAoIi0lMDJ4IiwgKmgrKyk7CisJCQlwcmludGYg KCJcbiIpOworCQl9CisJCXJldHVybjsKKwl9CisJaWYgKGhbNV0gPT0gRlJfTVNHX0VOUVVJ UlkpIHsKKwkJaWYgKGxlbiA9PSBGUl9FTlFVSVJZX1NJWkUgJiYKKwkJICAgIGhbMTJdID09 ICh1X2NoYXIpIHNwLT5wcF9zZXFbSURYX0xDUF0pIHsKKwkJCXNwLT5wcF9zZXFbSURYX0xD UF0gPSByYW5kb20oKTsKKwkJCXByaW50ZiAoIiVzJWQ6IGxvb3BiYWNrIGRldGVjdGVkXG4i LAorCQkJCWlmcC0+aWZfbmFtZSwgaWZwLT5pZl91bml0KTsKKwkJfQorCQlyZXR1cm47CisJ fQorCWlmIChoWzVdICE9IEZSX01TR19TVEFUVVMpIHsKKwkJaWYgKGRlYnVnKQorCQkJcHJp bnRmICgiJXMlZDogVW5rbm93biBzaWduYWxpbmcgbWVzc2FnZTogMHglMDJ4XG4iLAorCQkJ CWlmcC0+aWZfbmFtZSwgaWZwLT5pZl91bml0LCBoWzVdKTsKKwkJZ290byBiYWQ7CisJfQor CisJLyogUGFyc2UgbWVzc2FnZSBmaWVsZHMuICovCisJZm9yIChwPWgrNjsgcDxoK2xlbjsg KSB7CisJCXN3aXRjaCAoKnApIHsKKwkJZGVmYXVsdDoKKwkJCWlmIChkZWJ1ZykKKwkJCQlw cmludGYgKCIlcyVkOiBVbmtub3duIHNpZ25hbGluZyBmaWVsZCAweCV4XG4iLAorCQkJCQlp ZnAtPmlmX25hbWUsIGlmcC0+aWZfdW5pdCwgKnApOworCQkJYnJlYWs7CisJCWNhc2UgRlJf RkxEX0xTSElGVDU6CisJCWNhc2UgRlJfRkxEX1JUWVBFOgorCQkJLyogSWdub3JlLiAqLwor CQkJYnJlYWs7CisJCWNhc2UgRlJfRkxEX1ZFUklGWToKKwkJCWlmIChwWzFdICE9IDIpIHsK KwkJCQlpZiAoZGVidWcpCisJCQkJCXByaW50ZiAoIiVzJWQ6IEludmFsaWQgc2lnbmFsaW5n IHZlcmlmeSBmaWVsZCBsZW5ndGggJWRcbiIsCisJCQkJCQlpZnAtPmlmX25hbWUsIGlmcC0+ aWZfdW5pdCwgcFsxXSk7CisJCQkJYnJlYWs7CisJCQl9CisJCQlzcC0+cHBfcnNlcVtJRFhf TENQXSA9IHBbMl07CisJCQlpZiAoZGVidWcpIHsKKwkJCQlwcmludGYgKCIlcyVkOiBnb3Qg bG1pIHJlcGx5IHJzZXE9JWQsIHNlcT0lZCIsCisJCQkJCWlmcC0+aWZfbmFtZSwgaWZwLT5p Zl91bml0LCBwWzJdLCBwWzNdKTsKKwkJCQlpZiAocFszXSAhPSAodV9jaGFyKSBzcC0+cHBf c2VxW0lEWF9MQ1BdKQorCQkJCQlwcmludGYgKCIgKHJlYWxseSAlZCkiLAorCQkJCQkJKHVf Y2hhcikgc3AtPnBwX3NlcVtJRFhfTENQXSk7CisJCQkJcHJpbnRmICgiXG4iKTsKKwkJCX0K KwkJCWJyZWFrOworCQljYXNlIEZSX0ZMRF9QVkM6CisJCQlpZiAocFsxXSA8IDMpIHsKKwkJ CQlpZiAoZGVidWcpCisJCQkJCXByaW50ZiAoIiVzJWQ6IEludmFsaWQgUFZDIHN0YXR1cyBs ZW5ndGggJWRcbiIsCisJCQkJCQlpZnAtPmlmX25hbWUsIGlmcC0+aWZfdW5pdCwgcFsxXSk7 CisJCQkJYnJlYWs7CisJCQl9CisJCQlkbGNpID0gKHBbMl0gPDwgNCAmIDB4M2YwKSB8IChw WzNdID4+IDMgJiAweDBmKTsKKwkJCWlmICghIHNwLT5mcl9kbGNpKQorCQkJCXNwLT5mcl9k bGNpID0gZGxjaTsKKwkJCWlmIChzcC0+ZnJfc3RhdHVzICE9IHBbNF0pCisJCQkJcHJpbnRm ICgiJXMlZDogRExDSSAlZCAlcyVzXG4iLAorCQkJCQlpZnAtPmlmX25hbWUsIGlmcC0+aWZf dW5pdCwgZGxjaSwKKwkJCQkJcFs0XSAmIEZSX0RMQ0lfREVMRVRFID8gImRlbGV0ZWQiIDoK KwkJCQkJcFs0XSAmIEZSX0RMQ0lfQUNUSVZFID8gImFjdGl2ZSIgOiAicGFzc2l2ZSIsCisJ CQkJCXBbNF0gJiBGUl9ETENJX05FVyA/ICIsIG5ldyIgOiAiIik7CisJCQlzcC0+ZnJfc3Rh dHVzID0gcFs0XTsKKwkJCWJyZWFrOworCQl9CisJCWlmICgqcCAmIDB4ODApCisJCQkrK3A7 CisJCWVsc2UgaWYgKHAgPCBoK2xlbisxICYmIHBbMV0pCisJCQlwICs9IDIgKyBwWzFdOwor CQllbHNlIHsKKwkJCWlmIChkZWJ1ZykKKwkJCQlwcmludGYgKCIlcyVkOiBJbnZhbGlkIHNp Z25hbGluZyBmaWVsZCAweCV4XG4iLAorCQkJCQlpZnAtPmlmX25hbWUsIGlmcC0+aWZfdW5p dCwgKnApOworCQkJZ290byBiYWQ7CisJCX0KKwl9CiB9Cg== --------------060105000201090205000703 Content-Type: text/plain; name="if_sppp_h.pch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="if_sppp_h.pch" --- if_sppp_c.h Wed Jul 4 18:59:21 2001 +++ if_sppp.h Fri Jul 13 17:43:37 2001 @@ -1,8 +1,9 @@ /* * Defines for synchronous PPP/Cisco link level subroutines. * - * Copyright (C) 1994 Cronyx Ltd. - * Author: Serge Vakulenko, + * Copyright (C) 1994-2001 Cronyx Ltd. + * Authors: Serge Vakulenko, + * Roman Kurakin, * * Heavily revamped to conform to RFC 1661. * Copyright (C) 1997, Joerg Wunsch. @@ -16,7 +17,6 @@ * * From: Version 2.0, Fri Oct 6 20:39:21 MSK 1995 * - * $FreeBSD: src/sys/net/if_sppp.h,v 1.16.2.1 2001/07/03 11:01:41 ume Exp $ */ #ifndef _NET_IF_SPPP_H_ @@ -106,6 +106,8 @@ struct sipcp ipv6cp; /* IPv6CP params */ struct sauth myauth; /* auth params, i'm peer */ struct sauth hisauth; /* auth params, i'm authenticator */ + u_short fr_dlci; /* Frame Relay DLCI number, 16..1023 */ + u_char fr_status; /* PVC status, active/new/delete */ /* * These functions are filled in by sppp_attach(), and are * expected to be used by the lower layer (hardware) drivers @@ -139,6 +141,7 @@ }; #define PP_KEEPALIVE 0x01 /* use keepalive protocol */ +#define PP_FR 0x04 /* use Frame Relay protocol instead of PPP */ /* 0x04 was PP_TIMO */ #define PP_CALLIN 0x08 /* we are being called */ #define PP_NEEDAUTH 0x10 /* remote requested authentication */ @@ -167,7 +170,8 @@ struct sppp defs; }; -#ifdef _KERNEL +#if (__FreeBSD_version >= 400000 && defined _KERNEL) \ + || (__FreeBSD_version < 400000 && defined KERNEL) void sppp_attach (struct ifnet *ifp); void sppp_detach (struct ifnet *ifp); void sppp_input (struct ifnet *ifp, struct mbuf *m); --------------060105000201090205000703-- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message