Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 23 Jul 2001 14:54:23 +0400
From:      Kurakin Roman <rik@cronyx.ru>
To:        Serge Vakulenko <vak@cronyx.ru>, mike@FreeBSD.org, freebsd-bugs@FreeBSD.org
Subject:   Re: kern/14848: Frame Relay support, corrected
Message-ID:  <3B5C025F.3080101@cronyx.ru>
References:  <000901c1134b$827a69a0$48b5ce90@crox>

next in thread | previous in thread | raw e-mail | index | archive | help
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: <mike@FreeBSD.org>
> To: <vak@cronyx.ru>; <mike@FreeBSD.org>; <freebsd-bugs@FreeBSD.org>
> 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, <vak@cronyx.ru>
+ * Copyright (C) 1994-2001 Cronyx Ltd.
+ * Authors: Serge Vakulenko, <vak@cronyx.ru>
+ *          Roman Kurakin, <rik@cronyx.ru>
  *
  * 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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3B5C025F.3080101>