From owner-freebsd-net@freebsd.org Wed Mar 1 22:35:57 2017 Return-Path: Delivered-To: freebsd-net@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 9A4B3CF373C for ; Wed, 1 Mar 2017 22:35:57 +0000 (UTC) (envelope-from daemon-user@freebsd.org) Received: from reviews.nyi.freebsd.org (reviews.nyi.freebsd.org [IPv6:2610:1c1:1:607c::16:b]) by mx1.freebsd.org (Postfix) with ESMTP id 62D0520E for ; Wed, 1 Mar 2017 22:35:57 +0000 (UTC) (envelope-from daemon-user@freebsd.org) Received: by reviews.nyi.freebsd.org (Postfix, from userid 1346) id DD6461AADE; Wed, 1 Mar 2017 22:35:56 +0000 (UTC) Date: Wed, 1 Mar 2017 22:35:56 +0000 To: freebsd-net@freebsd.org From: "ale (Alex Dupre)" Reply-to: D9270+325+bbd470fd257eef1b@reviews.freebsd.org Subject: [Differential] D9270: Add support for user-supplied Host-Uniq tag and handle PADM messages in Netgraph PPPoE Message-ID: <5d0d17fed4f7ff51825b42ccacdc7321@localhost.localdomain> X-Priority: 3 X-Phabricator-Sent-This-Message: Yes X-Mail-Transport-Agent: MetaMTA X-Auto-Response-Suppress: All X-Phabricator-Mail-Tags: , , , , Thread-Topic: D9270: Add support for user-supplied Host-Uniq tag in Netgraph PPPoE X-Herald-Rules: <28>, <8> X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-Cc: X-Phabricator-Cc: X-Phabricator-Cc: X-Phabricator-Cc: X-Phabricator-Cc: Precedence: bulk In-Reply-To: References: Thread-Index: NTZkNjQzYWQxOGQ3MGJlZTIzOGZhZmQ4NGNmIFi3TMw= MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="b1_5d0d17fed4f7ff51825b42ccacdc7321" X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.23 List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 01 Mar 2017 22:35:57 -0000 --b1_5d0d17fed4f7ff51825b42ccacdc7321 Content-Type: text/plain; charset = "utf-8" Content-Transfer-Encoding: base64 YWxlIHJldGl0bGVkIHRoaXMgcmV2aXNpb24gZnJvbSAiQWRkIHN1cHBvcnQgZm9yIHVzZXItc3Vw cGxpZWQgSG9zdC1VbmlxIHRhZyBpbiBOZXRncmFwaCBQUFBvRSIgdG8gIkFkZCBzdXBwb3J0IGZv ciB1c2VyLXN1cHBsaWVkIEhvc3QtVW5pcSB0YWcgYW5kIGhhbmRsZSBQQURNIG1lc3NhZ2VzIGlu IE5ldGdyYXBoIFBQUG9FIi4KYWxlIHVwZGF0ZWQgdGhlIHN1bW1hcnkgZm9yIHRoaXMgcmV2aXNp b24uCmFsZSB1cGRhdGVkIHRoZSB0ZXN0IHBsYW4gZm9yIHRoaXMgcmV2aXNpb24uCmFsZSBhZGRl ZCBhIHN1YnNjcmliZXI6IG1hdi4KYWxlIHVwZGF0ZWQgdGhpcyByZXZpc2lvbiB0byBEaWZmIDI1 ODQ5LgphbGUgYWRkZWQgYSBjb21tZW50LgpUaGlzIHJldmlzaW9uIG5vdyByZXF1aXJlcyByZXZp ZXcgdG8gcHJvY2VlZC4KCgogIC0gYWRkIGNsaWVudCBhbmQgc2VydmVyIHN1cHBvcnQgZm9yIFBB RE0gbWVzc2FnZXMsIEhVUkwgYW5kIE1PVE0KICAtIEZpeCBhIHJlZ3Jlc3Npb24gaW4gUFBQb0Ug c2VydmVyIGludHJvZHVjZWQgYnkgcHJldmlvdXMgcGF0Y2ggdmVyc2lvbgogIC0gaGFuZGxlIG1p c3Npbmcgc2VydmljZSBuYW1lIHRhZyBpbiBQQURJIHJlcXVlc3RzIHRvIGNvcGUgd2l0aCBub24g ZnVsbHkgY29tcGxpYW50IGNsaWVudCBpbXBsZW1lbnRhdGlvbnMsIHRyZWF0IGl0IGFzIGVtcHR5 IHNlcnZpY2UgbmFtZQoKUkVQT1NJVE9SWQogIHJTIEZyZWVCU0Qgc3JjIHJlcG9zaXRvcnkKCkNI QU5HRVMgU0lOQ0UgTEFTVCBVUERBVEUKICBodHRwczovL3Jldmlld3MuZnJlZWJzZC5vcmcvRDky NzA/dnM9MjQzMTQmaWQ9MjU4NDkKClJFVklTSU9OIERFVEFJTAogIGh0dHBzOi8vcmV2aWV3cy5m cmVlYnNkLm9yZy9EOTI3MAoKQUZGRUNURUQgRklMRVMKICBzaGFyZS9tYW4vbWFuNC9uZ19wcHBv ZS40CiAgc3lzL25ldGdyYXBoL25nX3BwcG9lLmMKICBzeXMvbmV0Z3JhcGgvbmdfcHBwb2UuaAoK RU1BSUwgUFJFRkVSRU5DRVMKICBodHRwczovL3Jldmlld3MuZnJlZWJzZC5vcmcvc2V0dGluZ3Mv cGFuZWwvZW1haWxwcmVmZXJlbmNlcy8KClRvOiBhbGUsICNtYW5wYWdlcywgYWRyaWFuLCAjbmV0 d29yaywganVsaWFuCkNjOiBtYXYsIHBvb2xyb29tX2dtYWlsLmNvbSwgbWFuZHJlZSwgaW1wLCBm cmVlYnNkLW5ldC1saXN0Cg== --b1_5d0d17fed4f7ff51825b42ccacdc7321 Content-Type: text/x-patch; charset=utf-8; name="D9270.25849.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="D9270.25849.patch" ZGlmZiAtLWdpdCBhL3N5cy9uZXRncmFwaC9uZ19wcHBvZS5oIGIvc3lzL25ldGdyYXBoL25nX3Bw cG9lLmgKLS0tIGEvc3lzL25ldGdyYXBoL25nX3BwcG9lLmgKKysrIGIvc3lzL25ldGdyYXBoL25n X3BwcG9lLmgKQEAgLTUyLDggKzUyLDEwIEBACiAKICNkZWZpbmUgTkdNX1BQUE9FX0NPT0tJRQkJ MTA4OTg5MzA3MgogI2RlZmluZSBOR01fUFBQT0VfU0VUTUFYUF9DT09LSUUJMTQ0MTYyNDMyMgor I2RlZmluZSBOR01fUFBQT0VfUEFETV9DT09LSUUJCTE0ODg0MDU4MjIKIAogI2RlZmluZQlQUFBP RV9TRVJWSUNFX05BTUVfU0laRQkJNjQgLyogZm9yIG5vdyAqLworI2RlZmluZQlQUFBPRV9QQURN X1ZBTFVFX1NJWkUJCTEyOCAvKiBmb3Igbm93ICovCiAKIC8qIEhvb2sgbmFtZXMgKi8KICNkZWZp bmUgTkdfUFBQT0VfSE9PS19FVEhFUk5FVAkiZXRoZXJuZXQiCkBAIC04NCw3ICs4NiwxMSBAQAog CU5HTV9QUFBPRV9TRVRNT0RFICA9IDEyLCAvKiBzZXQgdG8gc3RhbmRhcmQgb3IgY29tcGF0IG1v ZGVzICovCiAJTkdNX1BQUE9FX0dFVE1PREUgID0gMTMsIC8qIHNlZSBjdXJyZW50IG1vZGUgKi8K IAlOR01fUFBQT0VfU0VURU5BRERSID0gMTQsIC8qIHNldCBFdGhlcm5ldCBhZGRyZXNzICovCi0J TkdNX1BQUE9FX1NFVE1BWFAgID0gMTUgLyogU2V0IFBQUC1NYXgtUGF5bG9hZCB2YWx1ZSAqLwor CU5HTV9QUFBPRV9TRVRNQVhQICAgPSAxNSwgLyogU2V0IFBQUC1NYXgtUGF5bG9hZCB2YWx1ZSAq LworCU5HTV9QUFBPRV9TRU5EX0hVUkwgPSAxNiwgLyogU2VuZCBQQURNIEhVUkwgbWVzc2FnZSAq LworCU5HTV9QUFBPRV9IVVJMICAgICAgPSAxNywgLyogSFVSTCBmb3IgaW5mb3JtYXRpb25hbCBw dXJwb3NlcyAqLworCU5HTV9QUFBPRV9TRU5EX01PVE0gPSAxOCwgLyogU2VuZCBQQURNIE1PVE0g bWVzc2FnZSAqLworCU5HTV9QUFBPRV9NT1RNICAgICAgPSAxOSAgLyogTU9UTSBmb3IgaW5mb3Jt YXRpb25hbCBwdXJwb3NlcyAqLwogfTsKIAogLyoqKioqKioqKioqKioqKioqKioqKioqCkBAIC0x NTcsNiArMTYzLDEzIEBACiAJdWludDE2X3QJZGF0YTsKIH07CiAKKy8qCisgKiBUaGlzIHN0cnVj dHVyZSBpcyB1c2VkIHRvIHNlbmQgUEFETSBtZXNzYWdlcyBmcm9tIHNlcnZlciB0byBjbGllbnQu CisgKi8KK3N0cnVjdCBuZ3BwcG9lX3BhZG0geworCWNoYXIJbXNnW1BQUE9FX1BBRE1fVkFMVUVf U0laRV07Cit9OworCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioKICAqIENvbnN0YW50cyBhbmQgZGVmaW5pdGlvbnMg c3BlY2lmaWMgdG8gcHBwb2UKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KQEAgLTE3MSw2ICsxODQsNyBAQAogI2Rl ZmluZSBQQURSX0NPREUJMHgxOQogI2RlZmluZSBQQURTX0NPREUJMHg2NQogI2RlZmluZSBQQURU X0NPREUJMHhhNworI2RlZmluZSBQQURNX0NPREUJMHhkMwogCiAvKiBUYWcgaWRlbnRpZmllcnMg Ki8KICNpZiBCWVRFX09SREVSID09IEJJR19FTkRJQU4KQEAgLTE4MSw2ICsxOTUsOCBAQAogI2Rl ZmluZSBQVFRfQUNfQ09PS0lFCSgweDAxMDQpCiAjZGVmaW5lIFBUVF9WRU5ET1IgCSgweDAxMDUp CiAjZGVmaW5lIFBUVF9SRUxBWV9TSUQJKDB4MDExMCkKKyNkZWZpbmUgUFRUX0hVUkwJKDB4MDEx MSkJLyogUFBQb0UgRXh0ZW5zaW9ucyAoQ0FSUkVMKSAqLworI2RlZmluZSBQVFRfTU9UTQkoMHgw MTEyKQkvKiBQUFBvRSBFeHRlbnNpb25zIChDQVJSRUwpICovCiAjZGVmaW5lCVBUVF9NQVhfUEFZ TAkoMHgwMTIwKQkvKiBQUFAtTWF4LVBheWxvYWQgKFJGQzQ2MzgpICovCiAjZGVmaW5lIFBUVF9T UlZfRVJSICAgICAoMHgwMjAxKQogI2RlZmluZSBQVFRfU1lTX0VSUiAgCSgweDAyMDIpCkBAIC0x OTgsNiArMjE0LDggQEAKICNkZWZpbmUgUFRUX0FDX0NPT0tJRQkoMHgwNDAxKQogI2RlZmluZSBQ VFRfVkVORE9SIAkoMHgwNTAxKQogI2RlZmluZSBQVFRfUkVMQVlfU0lECSgweDEwMDEpCisjZGVm aW5lIFBUVF9IVVJMCSgweDExMDEpCS8qIFBQUG9FIEV4dGVuc2lvbnMgKENBUlJFTCkgKi8KKyNk ZWZpbmUgUFRUX01PVE0JKDB4MTIwMSkJLyogUFBQb0UgRXh0ZW5zaW9ucyAoQ0FSUkVMKSAqLwog I2RlZmluZQlQVFRfTUFYX1BBWUwJKDB4MjAwMSkJLyogUFBQLU1heC1QYXlsb2FkIChSRkM0NjM4 KSAqLwogI2RlZmluZSBQVFRfU1JWX0VSUiAgICAgKDB4MDEwMikKICNkZWZpbmUgUFRUX1NZU19F UlIgIAkoMHgwMjAyKQpkaWZmIC0tZ2l0IGEvc3lzL25ldGdyYXBoL25nX3BwcG9lLmMgYi9zeXMv bmV0Z3JhcGgvbmdfcHBwb2UuYwotLS0gYS9zeXMvbmV0Z3JhcGgvbmdfcHBwb2UuYworKysgYi9z eXMvbmV0Z3JhcGgvbmdfcHBwb2UuYwpAQCAtMTc1LDYgKzE3NSwyMCBAQAogCSAgJm5nX3BhcnNl X3VpbnQxNl90eXBlLAogCSAgTlVMTAogCX0sCisgICAgICAgIHsKKwkgIE5HTV9QUFBPRV9DT09L SUUsCisJICBOR01fUFBQT0VfU0VORF9IVVJMLAorCSAgInNlbmRfaHVybCIsCisJICAmbmdwcHBv ZV9pbml0X2RhdGFfc3RhdGVfdHlwZSwKKwkgIE5VTEwKKyAgICAgICAgfSwKKyAgICAgICAgewor CSAgTkdNX1BQUE9FX0NPT0tJRSwKKwkgIE5HTV9QUFBPRV9TRU5EX01PVE0sCisJICAic2VuZF9t b3RtIiwKKwkgICZuZ3BwcG9lX2luaXRfZGF0YV9zdGF0ZV90eXBlLAorCSAgTlVMTAorICAgICAg ICB9LAogCXsgMCB9CiB9OwogCkBAIC0yMjYsOSArMjQwLDExIEBACiAJY29uc3Qgc3RydWN0IHBw cG9lX3RhZwkqdGFnc1tOVU1UQUdTXTsKIAl1X2ludAkJCXNlcnZpY2VfbGVuOwogCXVfaW50CQkJ YWNfbmFtZV9sZW47CisJdV9pbnQJCQlob3N0X3VuaXFfbGVuOwogCiAJc3RydWN0IGRhdGF0YWcJ CXNlcnZpY2U7CiAJc3RydWN0IGRhdGF0YWcJCWFjX25hbWU7CisJc3RydWN0IGRhdGF0YWcJCWhv c3RfdW5pcTsKIH07CiB0eXBlZGVmIHN0cnVjdCBzZXNzX25lZyAqbmVncDsKIApAQCAtNTg5LDE4 ICs2MDUsNDAgQEAKIHBwcG9lX2ZpbmR1bmlxKG5vZGVfcCBub2RlLCBjb25zdCBzdHJ1Y3QgcHBw b2VfdGFnICp0YWcpCiB7CiAJaG9va19wCWhvb2sgPSBOVUxMOwotCXVuaW9uIHVuaXEgdW5pcTsK KwlzZXNzcAlzcDsKIAotCWJjb3B5KHRhZyArIDEsIHVuaXEuYnl0ZXMsIHNpemVvZih2b2lkICop KTsKIAkvKiBDeWNsZSB0aHJvdWdoIGFsbCBrbm93biBob29rcy4gKi8KIAlMSVNUX0ZPUkVBQ0go aG9vaywgJm5vZGUtPm5kX2hvb2tzLCBoa19ob29rcykgewogCQkvKiBTa2lwIGFueSBub25zZXNz aW9uIGhvb2suICovCiAJCWlmIChOR19IT09LX1BSSVZBVEUoaG9vaykgPT0gTlVMTCkKIAkJCWNv bnRpbnVlOwotCQlpZiAodW5pcS5wb2ludGVyID09IE5HX0hPT0tfUFJJVkFURShob29rKSkKKwkJ c3AgPSBOR19IT09LX1BSSVZBVEUoaG9vayk7CisJCWlmIChzcC0+bmVnLT5ob3N0X3VuaXFfbGVu ID09IG50b2hzKHRhZy0+dGFnX2xlbikgJiYKKwkJICAgIGJjbXAoc3AtPm5lZy0+aG9zdF91bmlx LmRhdGEsIChjb25zdCBjaGFyICopKHRhZyArIDEpLAorCQkgICAgIHNwLT5uZWctPmhvc3RfdW5p cV9sZW4pID09IDApCiAJCQlicmVhazsKIAl9Ci0JQ1RSMyhLVFJfTkVULCAiJTIwczogbWF0Y2hl ZCAlcCBmb3IgJXAiLCBfX2Z1bmNfXywgaG9vaywgdW5pcS5wb2ludGVyKTsKKwlDVFIzKEtUUl9O RVQsICIlMjBzOiBtYXRjaGVkICVwIGZvciAlcCIsIF9fZnVuY19fLCBob29rLCBzcCk7CisKKwly ZXR1cm4gKGhvb2spOworfQorCitzdGF0aWMgaG9va19wCitwcHBvZV9maW5kY29va2llKG5vZGVf cCBub2RlLCBjb25zdCBzdHJ1Y3QgcHBwb2VfdGFnICp0YWcpCit7CisJaG9va19wCWhvb2sgPSBO VUxMOworCXVuaW9uIHVuaXEgY29va2llOworCisJYmNvcHkodGFnICsgMSwgY29va2llLmJ5dGVz LCBzaXplb2Yodm9pZCAqKSk7CisJLyogQ3ljbGUgdGhyb3VnaCBhbGwga25vd24gaG9va3MuICov CisJTElTVF9GT1JFQUNIKGhvb2ssICZub2RlLT5uZF9ob29rcywgaGtfaG9va3MpIHsKKwkJLyog U2tpcCBhbnkgbm9uc2Vzc2lvbiBob29rLiAqLworCQlpZiAoTkdfSE9PS19QUklWQVRFKGhvb2sp ID09IE5VTEwpCisJCQljb250aW51ZTsKKwkJaWYgKGNvb2tpZS5wb2ludGVyID09IE5HX0hPT0tf UFJJVkFURShob29rKSkKKwkJCWJyZWFrOworCX0KKwlDVFIzKEtUUl9ORVQsICIlMjBzOiBtYXRj aGVkICVwIGZvciAlcCIsIF9fZnVuY19fLCBob29rLCBjb29raWUucG9pbnRlcik7CiAKIAlyZXR1 cm4gKGhvb2spOwogfQpAQCAtNzQ0LDE3ICs3ODIsMjkgQEAKIAkJY2FzZSBOR01fUFBQT0VfTElT VEVOOgogCQljYXNlIE5HTV9QUFBPRV9PRkZFUjoKIAkJY2FzZSBOR01fUFBQT0VfU0VSVklDRToK KwkJY2FzZSBOR01fUFBQT0VfU0VORF9IVVJMOgorCQljYXNlIE5HTV9QUFBPRV9TRU5EX01PVE06 CiAJCQlvdXJtc2cgPSAoc3RydWN0IG5ncHBwb2VfaW5pdF9kYXRhICopbXNnLT5kYXRhOwogCQkJ aWYgKG1zZy0+aGVhZGVyLmFyZ2xlbiA8IHNpemVvZigqb3VybXNnKSkgewogCQkJCWxvZyhMT0df RVJSLCAibmdfcHBwb2VbJXhdOiBpbml0IGRhdGEgdG9vICIKIAkJCQkgICAgInNtYWxsXG4iLCBu b2RlLT5uZF9JRCk7CiAJCQkJTEVBVkUoRU1TR1NJWkUpOwogCQkJfQotCQkJaWYgKG1zZy0+aGVh ZGVyLmFyZ2xlbiAtIHNpemVvZigqb3VybXNnKSA+Ci0JCQkgICAgUFBQT0VfU0VSVklDRV9OQU1F X1NJWkUpIHsKLQkJCQlsb2coTE9HX0VSUiwgIm5nX3BwcG9lWyV4XTogc2VydmljZSBuYW1lICIK LQkJCQkgICAgInRvbyBiaWdcbiIsIG5vZGUtPm5kX0lEKTsKLQkJCQlMRUFWRShFTVNHU0laRSk7 CisJCQlpZiAobXNnLT5oZWFkZXIuY21kID09IE5HTV9QUFBPRV9TRU5EX0hVUkwgfHwKKwkJCSAg ICBtc2ctPmhlYWRlci5jbWQgPT0gTkdNX1BQUE9FX1NFTkRfTU9UTSkgeworCQkJCWlmIChtc2ct PmhlYWRlci5hcmdsZW4gLSBzaXplb2YoKm91cm1zZykgPgorCQkJCSAgICBQUFBPRV9QQURNX1ZB TFVFX1NJWkUpIHsKKwkJCQkJbG9nKExPR19FUlIsICJuZ19wcHBvZVsleF06IG1lc3NhZ2UgIgor CQkJCQkgICAgInRvbyBiaWdcbiIsIG5vZGUtPm5kX0lEKTsKKwkJCQkJTEVBVkUoRU1TR1NJWkUp OworCQkJCX0KKwkJCX0gZWxzZSB7CisJCQkJaWYgKG1zZy0+aGVhZGVyLmFyZ2xlbiAtIHNpemVv Zigqb3VybXNnKSA+CisJCQkJICAgIFBQUE9FX1NFUlZJQ0VfTkFNRV9TSVpFKSB7CisJCQkJCWxv ZyhMT0dfRVJSLCAibmdfcHBwb2VbJXhdOiBzZXJ2aWNlIG5hbWUgIgorCQkJCQkgICAgInRvbyBi aWdcbiIsIG5vZGUtPm5kX0lEKTsKKwkJCQkJTEVBVkUoRU1TR1NJWkUpOworCQkJCX0KIAkJCX0K IAkJCWlmIChtc2ctPmhlYWRlci5hcmdsZW4gLSBzaXplb2YoKm91cm1zZykgPAogCQkJICAgIG91 cm1zZy0+ZGF0YV9sZW4pIHsKQEAgLTc5NCw2ICs4NDQsMjAgQEAKIAkJCWlmIChtc2ctPmhlYWRl ci5jbWQgPT0gTkdNX1BQUE9FX1NFUlZJQ0UpCiAJCQkJYnJlYWs7CiAKKwkJCS8qCisJCQkgKiBQ QURNIG1lc3NhZ2VzIGFyZSBzZXQgdXAgb24gYWN0aXZlIHNlc3Npb25zLgorCQkJICovCisJCQlp ZiAobXNnLT5oZWFkZXIuY21kID09IE5HTV9QUFBPRV9TRU5EX0hVUkwgfHwKKwkJCSAgICBtc2ct PmhlYWRlci5jbWQgPT0gTkdNX1BQUE9FX1NFTkRfTU9UTSkgeworCQkJCWlmIChzcC0+c3RhdGUg IT0gUFBQT0VfTkVXQ09OTkVDVEVEICYmCisJCQkJICAgIHNwLT5zdGF0ZSAhPSBQUFBPRV9DT05O RUNURUQpIHsKKwkJCQkJbG9nKExPR19OT1RJQ0UsICJuZ19wcHBvZVsleF06IHNlc3Npb24gaXMg bm90ICIKKwkJCQkJICAgICJhY3RpdmVcbiIsIG5vZGUtPm5kX0lEKTsKKwkJCQkJTEVBVkUoRUlT Q09OTik7CisJCQkJfQorCQkJCWJyZWFrOworCQkJfQorCiAJCQlpZiAoc3AtPnN0YXRlICE9IFBQ UE9FX1NOT05FKSB7CiAJCQkJbG9nKExPR19OT1RJQ0UsICJuZ19wcHBvZVsleF06IFNlc3Npb24g YWxyZWFkeSAiCiAJCQkJICAgICJhY3RpdmVcbiIsIG5vZGUtPm5kX0lEKTsKQEAgLTg0OCwyOCAr OTEyLDcyIEBACiAJCQkgKiBDaGVjayB0aGUgaG9vayBleGlzdHMgYW5kIGlzIFVuaW5pdGlhbGlz ZWQuCiAJCQkgKiBTZW5kIGEgUEFESSByZXF1ZXN0LCBhbmQgc3RhcnQgdGhlIHRpbWVvdXQgbG9n aWMuCiAJCQkgKiBTdG9yZSB0aGUgb3JpZ2luYXRvciBvZiB0aGlzIG1lc3NhZ2Ugc28gd2UgY2Fu IHNlbmQKLQkJCSAqIGEgc3VjY2VzcyBvZiBmYWlsIG1lc3NhZ2UgdG8gdGhlbSBsYXRlci4KKwkJ CSAqIGEgc3VjY2VzcyBvciBmYWlsIG1lc3NhZ2UgdG8gdGhlbSBsYXRlci4KIAkJCSAqIE1vdmUg dGhlIHNlc3Npb24gdG8gU0lOSVQuCiAJCQkgKiBTZXQgdXAgdGhlIHNlc3Npb24gdG8gdGhlIGNv cnJlY3Qgc3RhdGUgYW5kCiAJCQkgKiBzdGFydCBpdC4KIAkJCSAqLwotCQkJaW50CWksIGFjbmxl biA9IDAsIGFjbnNlcCA9IDAsIHNydmxlbjsKKwkJCWludAlhY25wb3MsIGFjbmxlbiA9IDAsIGFj bnNlcCA9IDA7CisJCQlpbnQJaHVwb3MsIGh1bGVuID0gMCwgaHVzZXAgPSAwOworCQkJaW50CWks IHNydnBvcywgc3J2bGVuOworCQkJYWNucG9zID0gMDsKIAkJCWZvciAoaSA9IDA7IGkgPCBvdXJt c2ctPmRhdGFfbGVuOyBpKyspIHsKIAkJCQlpZiAob3VybXNnLT5kYXRhW2ldID09ICdcXCcpIHsK IAkJCQkJYWNubGVuID0gaTsKIAkJCQkJYWNuc2VwID0gMTsKIAkJCQkJYnJlYWs7CiAJCQkJfQog CQkJfQotCQkJc3J2bGVuID0gb3VybXNnLT5kYXRhX2xlbiAtIGFjbmxlbiAtIGFjbnNlcDsKKwkJ CWh1cG9zID0gYWNubGVuICsgYWNuc2VwOworCQkJZm9yIChpID0gaHVwb3M7IGkgPCBvdXJtc2ct PmRhdGFfbGVuOyBpKyspIHsKKwkJCQlpZiAob3VybXNnLT5kYXRhW2ldID09ICd8JykgeworCQkJ CQlodWxlbiA9IGkgLSBodXBvczsKKwkJCQkJaHVzZXAgPSAxOworCQkJCQlicmVhazsKKwkJCQl9 CisJCQl9CisJCQlzcnZwb3MgPSBodXBvcyArIGh1bGVuICsgaHVzZXA7CisJCQlzcnZsZW4gPSBv dXJtc2ctPmRhdGFfbGVuIC0gc3J2cG9zOwogCi0JCQliY29weShvdXJtc2ctPmRhdGEsIG5lZy0+ YWNfbmFtZS5kYXRhLCBhY25sZW4pOworCQkJYmNvcHkob3VybXNnLT5kYXRhICsgYWNucG9zLCBu ZWctPmFjX25hbWUuZGF0YSwgYWNubGVuKTsKIAkJCW5lZy0+YWNfbmFtZV9sZW4gPSBhY25sZW47 CiAKKwkJCW5lZy0+aG9zdF91bmlxLmhkci50YWdfdHlwZSA9IFBUVF9IT1NUX1VOSVE7CisJCQlp ZiAoaHVsZW4gPT0gMCkgeworCQkJCS8qIE5vdCBwcm92aWRlZCwgZ2VuZXJhdGUgb25lICovCisJ CQkJbmVnLT5ob3N0X3VuaXEuaGRyLnRhZ19sZW4gPSBodG9ucyhzaXplb2Yoc3ApKTsKKwkJCQli Y29weSgmc3AsIG5lZy0+aG9zdF91bmlxLmRhdGEsIHNpemVvZihzcCkpOworCQkJCW5lZy0+aG9z dF91bmlxX2xlbiA9IHNpemVvZihzcCk7CisJCQl9IGVsc2UgaWYgKGh1bGVuID4gMiAmJiBvdXJt c2ctPmRhdGFbaHVwb3NdID09ICcwJyAmJgorCQkJICBvdXJtc2ctPmRhdGFbaHVwb3MgKyAxXSA9 PSAneCcgJiYgaHVsZW4gJSAyID09IDApIHsKKwkJCQkvKiBIZXggZW5jb2RlZCAqLworCQkJCXN0 YXRpYyBjb25zdCBjaGFyIGhleGRpZ1sxNl0gPSAiMDEyMzQ1Njc4OWFiY2RlZiI7CisJCQkJaW50 IGo7CisKKwkJCQluZWctPmhvc3RfdW5pcS5oZHIudGFnX2xlbiA9IGh0b25zKCh1aW50MTZfdCko aHVsZW4gLyAyIC0gMSkpOworCQkJCWZvciAoaSA9IDA7IGkgPCBodWxlbiAtIDI7IGkrKykgewor CQkJCQlmb3IgKGogPSAwOworCQkJCQkgICAgIGogPCAxNiAmJgorCQkJCQkgICAgIG91cm1zZy0+ ZGF0YVtodXBvcyArIDIgKyBpXSAhPSBoZXhkaWdbal07CisJCQkJCSAgICAgaisrKTsKKwkJCQkJ aWYgKGogPT0gMTYpCisJCQkJCQlMRUFWRShFSU5WQUwpOworCQkJCQlpZiAoaSAlIDIgPT0gMCkK KwkJCQkJCW5lZy0+aG9zdF91bmlxLmRhdGFbaSAvIDJdID0gaiA8PCA0OworCQkJCQllbHNlCisJ CQkJCQluZWctPmhvc3RfdW5pcS5kYXRhW2kgLyAyXSB8PSBqOworCQkJCX0KKwkJCQluZWctPmhv c3RfdW5pcV9sZW4gPSBodWxlbiAvIDIgLSAxOworCQkJfSBlbHNlIHsKKwkJCQkvKiBQbGFpbiBz dHJpbmcgKi8KKwkJCQluZWctPmhvc3RfdW5pcS5oZHIudGFnX2xlbiA9IGh0b25zKCh1aW50MTZf dClodWxlbik7CisJCQkJYmNvcHkob3VybXNnLT5kYXRhICsgaHVwb3MsIG5lZy0+aG9zdF91bmlx LmRhdGEsIGh1bGVuKTsKKwkJCQluZWctPmhvc3RfdW5pcV9sZW4gPSBodWxlbjsKKwkJCX0KKwog CQkJbmVnLT5zZXJ2aWNlLmhkci50YWdfdHlwZSA9IFBUVF9TUlZfTkFNRTsKIAkJCW5lZy0+c2Vy dmljZS5oZHIudGFnX2xlbiA9IGh0b25zKCh1aW50MTZfdClzcnZsZW4pOwotCQkJYmNvcHkob3Vy bXNnLT5kYXRhICsgYWNubGVuICsgYWNuc2VwLAotCQkJICAgIG5lZy0+c2VydmljZS5kYXRhLCBz cnZsZW4pOworCQkJYmNvcHkob3VybXNnLT5kYXRhICsgc3J2cG9zLCBuZWctPnNlcnZpY2UuZGF0 YSwgc3J2bGVuKTsKIAkJCW5lZy0+c2VydmljZV9sZW4gPSBzcnZsZW47CiAJCQlwcHBvZV9zdGFy dChzcCk7CiAJCQlicmVhazsKQEAgLTg3OSw3ICs5ODcsNyBAQAogCQkJICogQ2hlY2sgdGhlIGhv b2sgZXhpc3RzIGFuZCBpcyBVbmluaXRpYWxpc2VkLgogCQkJICogSW5zdGFsbCB0aGUgc2Vydmlj ZSBtYXRjaGluZyBzdHJpbmcuCiAJCQkgKiBTdG9yZSB0aGUgb3JpZ2luYXRvciBvZiB0aGlzIG1l c3NhZ2Ugc28gd2UgY2FuIHNlbmQKLQkJCSAqIGEgc3VjY2VzcyBvZiBmYWlsIG1lc3NhZ2UgdG8g dGhlbSBsYXRlci4KKwkJCSAqIGEgc3VjY2VzcyBvciBmYWlsIG1lc3NhZ2UgdG8gdGhlbSBsYXRl ci4KIAkJCSAqIE1vdmUgdGhlIGhvb2sgdG8gJ0xJU1RFTklORycKIAkJCSAqLwogCQkJbmVnLT5z ZXJ2aWNlLmhkci50YWdfdHlwZSA9IFBUVF9TUlZfTkFNRTsKQEAgLTEwMTksNiArMTEyNyw5NiBA QAogCQkJcHJpdnAtPm1heF9wYXlsb2FkLmhkci50YWdfbGVuID0gaHRvbnMoc2l6ZW9mKHVpbnQx Nl90KSk7CiAJCQlwcml2cC0+bWF4X3BheWxvYWQuZGF0YSA9IGh0b25zKCooKHVpbnQxNl90ICop bXNnLT5kYXRhKSk7CiAJCQlicmVhazsKKwkJY2FzZSBOR01fUFBQT0VfU0VORF9IVVJMOgorCQkg ICAgeworCQkJc3RydWN0IG1idWYgKm07CisKKwkJCS8qIEdlbmVyYXRlIGEgcGFja2V0IG9mIHRo YXQgdHlwZS4gKi8KKwkJCU1HRVRIRFIobSwgTV9OT1dBSVQsIE1UX0RBVEEpOworCQkJaWYgKG0g PT0gTlVMTCkKKwkJCQlsb2coTE9HX05PVElDRSwgIm5nX3BwcG9lWyV4XTogc2Vzc2lvbiBvdXQg b2YgIgorCQkJCSAgICAibWJ1ZnNcbiIsIG5vZGUtPm5kX0lEKTsKKwkJCWVsc2UgeworCQkJCXN0 cnVjdCBwcHBvZV9mdWxsX2hkciAqd2g7CisJCQkJc3RydWN0IHBwcG9lX3RhZyAqdGFnOworCQkJ CWludCAgICAgZXJyb3IgPSAwOworCisJCQkJbS0+bV9wa3RoZHIucmN2aWYgPSBOVUxMOworCQkJ CW0tPm1fcGt0aGRyLmxlbiA9IG0tPm1fbGVuID0gc2l6ZW9mKCp3aCk7CisJCQkJd2ggPSBtdG9k KG0sIHN0cnVjdCBwcHBvZV9mdWxsX2hkciAqKTsKKwkJCQliY29weSgmc3AtPnBrdF9oZHIsIHdo LCBzaXplb2YoKndoKSk7CisKKwkJCQkvKiBSZXZlcnQgdGhlIHN0b3JlZCBoZWFkZXIgdG8gRElT Qy9QQURNIG1vZGUuICovCisJCQkJd2gtPnBoLmNvZGUgPSBQQURNX0NPREU7CisJCQkJLyoKKwkJ CQkgKiBDb25maWd1cmUgZXRoZXJ0eXBlIGRlcGVuZGluZyBvbiB3aGF0CisJCQkJICogd2FzIHVz ZWQgZHVyaW5nIHNlc3Npb25zIHN0YWdlLgorCQkJCSAqLworCQkJCWlmICh3aC0+ZWguZXRoZXJf dHlwZSA9PQorCQkJCSAgICBFVEhFUlRZUEVfUFBQT0VfM0NPTV9TRVNTKQorCQkJCQl3aC0+ZWgu ZXRoZXJfdHlwZSA9IEVUSEVSVFlQRV9QUFBPRV8zQ09NX0RJU0M7CisJCQkJZWxzZQorCQkJCQl3 aC0+ZWguZXRoZXJfdHlwZSA9IEVUSEVSVFlQRV9QUFBPRV9ESVNDOworCQkJCS8qCisJCQkJICog QWRkIFBBRE0gbWVzc2FnZSBhbmQgYWRqdXN0IHNpemVzLgorCQkJCSAqLworCQkJCXRhZyA9ICh2 b2lkICopKCZ3aC0+cGggKyAxKTsKKwkJCQl0YWctPnRhZ190eXBlID0gUFRUX0hVUkw7CisJCQkJ dGFnLT50YWdfbGVuID0gaHRvbnMob3VybXNnLT5kYXRhX2xlbik7CisJCQkJc3RybmNweSgoY2hh ciAqKSh0YWcgKyAxKSwgb3VybXNnLT5kYXRhLCBvdXJtc2ctPmRhdGFfbGVuKTsKKwkJCQltLT5t X3BrdGhkci5sZW4gPSAobS0+bV9sZW4gKz0gc2l6ZW9mKCp0YWcpICsKKwkJCQkgICAgb3VybXNn LT5kYXRhX2xlbik7CisJCQkJd2gtPnBoLmxlbmd0aCA9IGh0b25zKHNpemVvZigqdGFnKSArIG91 cm1zZy0+ZGF0YV9sZW4pOworCQkJCU5HX1NFTkRfREFUQV9PTkxZKGVycm9yLAorCQkJCSAgICBw cml2cC0+ZXRoZXJuZXRfaG9vaywgbSk7CisJCQl9CisJCQlicmVhazsKKwkJICAgIH0KKwkJY2Fz ZSBOR01fUFBQT0VfU0VORF9NT1RNOgorCQkgICAgeworCQkJc3RydWN0IG1idWYgKm07CisKKwkJ CS8qIEdlbmVyYXRlIGEgcGFja2V0IG9mIHRoYXQgdHlwZS4gKi8KKwkJCU1HRVRIRFIobSwgTV9O T1dBSVQsIE1UX0RBVEEpOworCQkJaWYgKG0gPT0gTlVMTCkKKwkJCQlsb2coTE9HX05PVElDRSwg Im5nX3BwcG9lWyV4XTogc2Vzc2lvbiBvdXQgb2YgIgorCQkJCSAgICAibWJ1ZnNcbiIsIG5vZGUt Pm5kX0lEKTsKKwkJCWVsc2UgeworCQkJCXN0cnVjdCBwcHBvZV9mdWxsX2hkciAqd2g7CisJCQkJ c3RydWN0IHBwcG9lX3RhZyAqdGFnOworCQkJCWludCAgICAgZXJyb3IgPSAwOworCisJCQkJbS0+ bV9wa3RoZHIucmN2aWYgPSBOVUxMOworCQkJCW0tPm1fcGt0aGRyLmxlbiA9IG0tPm1fbGVuID0g c2l6ZW9mKCp3aCk7CisJCQkJd2ggPSBtdG9kKG0sIHN0cnVjdCBwcHBvZV9mdWxsX2hkciAqKTsK KwkJCQliY29weSgmc3AtPnBrdF9oZHIsIHdoLCBzaXplb2YoKndoKSk7CisKKwkJCQkvKiBSZXZl cnQgdGhlIHN0b3JlZCBoZWFkZXIgdG8gRElTQy9QQURNIG1vZGUuICovCisJCQkJd2gtPnBoLmNv ZGUgPSBQQURNX0NPREU7CisJCQkJLyoKKwkJCQkgKiBDb25maWd1cmUgZXRoZXJ0eXBlIGRlcGVu ZGluZyBvbiB3aGF0CisJCQkJICogd2FzIHVzZWQgZHVyaW5nIHNlc3Npb25zIHN0YWdlLgorCQkJ CSAqLworCQkJCWlmICh3aC0+ZWguZXRoZXJfdHlwZSA9PQorCQkJCSAgICBFVEhFUlRZUEVfUFBQ T0VfM0NPTV9TRVNTKQorCQkJCQl3aC0+ZWguZXRoZXJfdHlwZSA9IEVUSEVSVFlQRV9QUFBPRV8z Q09NX0RJU0M7CisJCQkJZWxzZQorCQkJCQl3aC0+ZWguZXRoZXJfdHlwZSA9IEVUSEVSVFlQRV9Q UFBPRV9ESVNDOworCQkJCS8qCisJCQkJICogQWRkIFBBRE0gbWVzc2FnZSBhbmQgYWRqdXN0IHNp emVzLgorCQkJCSAqLworCQkJCXRhZyA9ICh2b2lkICopKCZ3aC0+cGggKyAxKTsKKwkJCQl0YWct PnRhZ190eXBlID0gUFRUX01PVE07CisJCQkJdGFnLT50YWdfbGVuID0gaHRvbnMob3VybXNnLT5k YXRhX2xlbik7CisJCQkJc3RybmNweSgoY2hhciAqKSh0YWcgKyAxKSwgb3VybXNnLT5kYXRhLCBv dXJtc2ctPmRhdGFfbGVuKTsKKwkJCQltLT5tX3BrdGhkci5sZW4gPSAobS0+bV9sZW4gKz0gc2l6 ZW9mKCp0YWcpICsKKwkJCQkgICAgb3VybXNnLT5kYXRhX2xlbik7CisJCQkJd2gtPnBoLmxlbmd0 aCA9IGh0b25zKHNpemVvZigqdGFnKSArIG91cm1zZy0+ZGF0YV9sZW4pOworCQkJCU5HX1NFTkRf REFUQV9PTkxZKGVycm9yLAorCQkJCSAgICBwcml2cC0+ZXRoZXJuZXRfaG9vaywgbSk7CisJCQl9 CisJCQlicmVhazsKKwkJICAgIH0KIAkJZGVmYXVsdDoKIAkJCUxFQVZFKEVJTlZBTCk7CiAJCX0K QEAgLTEwNjEsMTAgKzEyNTksNiBAQAogCW5vZGVfcAlub2RlID0gTkdfSE9PS19OT0RFKGhvb2sp OwogCXByaXZfcAlwcml2cCA9IE5HX05PREVfUFJJVkFURShub2RlKTsKIAluZWdwCW5lZyA9IHNw LT5uZWc7Ci0Jc3RydWN0IHsKLQkJc3RydWN0IHBwcG9lX3RhZyBoZHI7Ci0JCXVuaW9uCXVuaXEJ ZGF0YTsKLQl9IF9fcGFja2VkIHVuaXF0YWc7CiAJc3RydWN0ICBtYnVmICptMDsKIAlpbnQJZXJy b3I7CiAKQEAgLTEwODAsMTEgKzEyNzQsOCBAQAogCW1lbWNweSgodm9pZCAqKSZuZWctPnBrdC0+ cGt0X2hlYWRlci5laCwgJnByaXZwLT5laCwKIAkgICAgc2l6ZW9mKHN0cnVjdCBldGhlcl9oZWFk ZXIpKTsKIAluZWctPnBrdC0+cGt0X2hlYWRlci5waC5jb2RlID0gUEFESV9DT0RFOwotCXVuaXF0 YWcuaGRyLnRhZ190eXBlID0gUFRUX0hPU1RfVU5JUTsKLQl1bmlxdGFnLmhkci50YWdfbGVuID0g aHRvbnMoKHVfaW50MTZfdClzaXplb2YodW5pcXRhZy5kYXRhKSk7Ci0JdW5pcXRhZy5kYXRhLnBv aW50ZXIgPSBzcDsKIAlpbml0X3RhZ3Moc3ApOwotCWluc2VydF90YWcoc3AsICZ1bmlxdGFnLmhk cik7CisJaW5zZXJ0X3RhZyhzcCwgJm5lZy0+aG9zdF91bmlxLmhkcik7CiAJaW5zZXJ0X3RhZyhz cCwgJm5lZy0+c2VydmljZS5oZHIpOwogCWlmIChwcml2cC0+bWF4X3BheWxvYWQuZGF0YSAhPSAw KQogCQlpbnNlcnRfdGFnKHNwLCAmcHJpdnAtPm1heF9wYXlsb2FkLmhkcik7CkBAIC0xMTYzLDYg KzEzNTQsNTIgQEAKIAlyZXR1cm4gKGVycm9yKTsKIH0KIAorc3RhdGljIGludAorc2VuZF9odXJs KHNlc3NwIHNwLCBjb25zdCBzdHJ1Y3QgcHBwb2VfdGFnICp0YWcpCit7CisJaW50IGVycm9yLCB0 bGVuOworCXN0cnVjdCBuZ19tZXNnICptc2c7CisJc3RydWN0IG5ncHBwb2VfcGFkbSAqcGFkbTsK KworCUNUUjIoS1RSX05FVCwgIiUyMHM6IGNhbGxlZCAlZCIsIF9fZnVuY19fLCBzcC0+U2Vzc2lv bl9JRCk7CisKKwlOR19NS01FU1NBR0UobXNnLCBOR01fUFBQT0VfQ09PS0lFLCBOR01fUFBQT0Vf SFVSTCwKKwkgICAgc2l6ZW9mKHN0cnVjdCBuZ3BwcG9lX3BhZG0pLCBNX05PV0FJVCk7CisJaWYg KG1zZyA9PSBOVUxMKQorCQlyZXR1cm4gKEVOT01FTSk7CisKKwlwYWRtID0gKHN0cnVjdCBuZ3Bw cG9lX3BhZG0gKiltc2ctPmRhdGE7CisJdGxlbiA9IG1pbihQUFBPRV9QQURNX1ZBTFVFX1NJWkUg LSAxLCBudG9ocyh0YWctPnRhZ19sZW4pKTsKKwlzdHJuY3B5KHBhZG0tPm1zZywgKGNvbnN0IGNo YXIgKikodGFnICsgMSksIHRsZW4pOworCXBhZG0tPm1zZ1t0bGVuXSA9ICdcMCc7CisJTkdfU0VO RF9NU0dfSUQoZXJyb3IsIE5HX0hPT0tfTk9ERShzcC0+aG9vayksIG1zZywgc3AtPmNyZWF0b3Is IDApOworCisJcmV0dXJuIChlcnJvcik7Cit9CisKK3N0YXRpYyBpbnQKK3NlbmRfbW90bShzZXNz cCBzcCwgY29uc3Qgc3RydWN0IHBwcG9lX3RhZyAqdGFnKQoreworCWludCBlcnJvciwgdGxlbjsK KwlzdHJ1Y3QgbmdfbWVzZyAqbXNnOworCXN0cnVjdCBuZ3BwcG9lX3BhZG0gKnBhZG07CisKKwlD VFIyKEtUUl9ORVQsICIlMjBzOiBjYWxsZWQgJWQiLCBfX2Z1bmNfXywgc3AtPlNlc3Npb25fSUQp OworCisJTkdfTUtNRVNTQUdFKG1zZywgTkdNX1BQUE9FX0NPT0tJRSwgTkdNX1BQUE9FX01PVE0s CisJICAgIHNpemVvZihzdHJ1Y3QgbmdwcHBvZV9wYWRtKSwgTV9OT1dBSVQpOworCWlmIChtc2cg PT0gTlVMTCkKKwkJcmV0dXJuIChFTk9NRU0pOworCisJcGFkbSA9IChzdHJ1Y3QgbmdwcHBvZV9w YWRtICopbXNnLT5kYXRhOworCXRsZW4gPSBtaW4oUFBQT0VfUEFETV9WQUxVRV9TSVpFIC0gMSwg bnRvaHModGFnLT50YWdfbGVuKSk7CisJc3RybmNweShwYWRtLT5tc2csIChjb25zdCBjaGFyICop KHRhZyArIDEpLCB0bGVuKTsKKwlwYWRtLT5tc2dbdGxlbl0gPSAnXDAnOworCU5HX1NFTkRfTVNH X0lEKGVycm9yLCBOR19IT09LX05PREUoc3AtPmhvb2spLCBtc2csIHNwLT5jcmVhdG9yLCAwKTsK KworCXJldHVybiAoZXJyb3IpOworfQorCiAvKgogICogUmVjZWl2ZSBkYXRhIGZyb20gc2Vzc2lv biBob29rIGFuZCBkbyBzb21ldGhpbmcgd2l0aCBpdC4KICAqLwpAQCAtMTMyMCw2ICsxNTU3LDcg QEAKIAljb25zdCBwcml2X3AJCXByaXZwID0gTkdfTk9ERV9QUklWQVRFKG5vZGUpOwogCXNlc3Nw CQkJc3A7CiAJY29uc3Qgc3RydWN0IHBwcG9lX3RhZwkqdXRhZyA9IE5VTEwsICp0YWcgPSBOVUxM OworCWNvbnN0IHN0cnVjdCBwcHBvZV90YWcJc250YWcgPSB7IFBUVF9TUlZfTkFNRSwgMCB9Owog CWNvbnN0IHN0cnVjdCBwcHBvZV9mdWxsX2hkciAqd2g7CiAJY29uc3Qgc3RydWN0IHBwcG9lX2hk cgkqcGg7CiAJbmVncAkJCW5lZyA9IE5VTEw7CkBAIC0xNDA5LDExICsxNjQ3LDggQEAKIAkJCSAq IHByb2Nlc3NpbmcuCiAJCQkgKi8KIAkJCXRhZyA9IGdldF90YWcocGgsIFBUVF9TUlZfTkFNRSk7 Ci0JCQlpZiAodGFnID09IE5VTEwpIHsKLQkJCQlDVFIxKEtUUl9ORVQsICIlMjBzOiBQQURJIHcv byBTZXJ2aWNlLU5hbWUiLAotCQkJCSAgICBfX2Z1bmNfXyk7Ci0JCQkJTEVBVkUoRU5FVFVOUkVB Q0gpOwotCQkJfQorCQkJaWYgKHRhZyA9PSBOVUxMKQorCQkJCXRhZyA9ICZzbnRhZzsKIAogCQkJ LyoKIAkJCSAqIEZpcnN0LCB0cnkgdG8gbWF0Y2ggU2VydmljZS1OYW1lIGFnYWluc3Qgb3VyIApA QCAtMTQzOCw4ICsxNjczLDcgQEAKIAkJCSAqIEZvciBub3cgc2ltcGx5IGFjY2VwdCB0aGUgZmly c3Qgd2UgcmVjZWl2ZS4KIAkJCSAqLwogCQkJdXRhZyA9IGdldF90YWcocGgsIFBUVF9IT1NUX1VO SVEpOwotCQkJaWYgKCh1dGFnID09IE5VTEwpIHx8Ci0JCQkgICAgKG50b2hzKHV0YWctPnRhZ19s ZW4pICE9IHNpemVvZihzcCkpKSB7CisJCQlpZiAodXRhZyA9PSBOVUxMKSB7CiAJCQkJbG9nKExP R19OT1RJQ0UsICJuZ19wcHBvZVsleF06IG5vIGhvc3QgIgogCQkJCSAgICAidW5pcXVlIGZpZWxk XG4iLCBub2RlLT5uZF9JRCk7CiAJCQkJTEVBVkUoRU5FVFVOUkVBQ0gpOwpAQCAtMTUyOSw3ICsx NzYzLDcgQEAKIAkJCQlMRUFWRShFTkVUVU5SRUFDSCk7CiAJCQl9CiAKLQkJCXNlbmRob29rID0g cHBwb2VfZmluZHVuaXEobm9kZSwgdXRhZyk7CisJCQlzZW5kaG9vayA9IHBwcG9lX2ZpbmRjb29r aWUobm9kZSwgdXRhZyk7CiAJCQlpZiAoc2VuZGhvb2sgPT0gTlVMTCkKIAkJCQlMRUFWRShFTkVU VU5SRUFDSCk7CiAKQEAgLTE2MDUsOCArMTgzOSw3IEBACiAJCQkgKiBzZXQgdXMgaW50byBTZXNz aW9uIG1vZGUuCiAJCQkgKi8KIAkJCXV0YWcgPSBnZXRfdGFnKHBoLCBQVFRfSE9TVF9VTklRKTsK LQkJCWlmICgodXRhZyA9PSBOVUxMKSB8fAotCQkJICAgIChudG9ocyh1dGFnLT50YWdfbGVuKSAh PSBzaXplb2Yoc3ApKSkgeworCQkJaWYgKHV0YWcgPT0gTlVMTCkgewogCQkJCUxFQVZFIChFTkVU VU5SRUFDSCk7CiAJCQl9CiAJCQlzZW5kaG9vayA9IHBwcG9lX2ZpbmR1bmlxKG5vZGUsIHV0YWcp OwpAQCAtMTY1OSw2ICsxODkyLDE5IEBACiAJCQkvKiBEaXNjb25uZWN0IHRoYXQgaG9vay4gKi8K IAkJCW5nX3JtaG9va19zZWxmKHNwLT5ob29rKTsKIAkJCWJyZWFrOworCQljYXNlCVBBRE1fQ09E RToKKwkJCS8qCisJCQkgKiBXZSBhcmUgYSBjbGllbnQ6CisJCQkgKiBmaW5kIG1hdGNoaW5nIHBl ZXIvc2Vzc2lvbiBjb21iaW5hdGlvbi4KKwkJCSAqLworCQkJc3AgPSBwcHBvZV9maW5kc2Vzc2lv bihwcml2cCwgd2gpOworCQkJaWYgKHNwID09IE5VTEwpCisJCQkJTEVBVkUgKEVORVRVTlJFQUNI KTsKKwkJCWlmICgodGFnID0gZ2V0X3RhZyhwaCwgUFRUX0hVUkwpKSkKKwkJCQlzZW5kX2h1cmwo c3AsIHRhZyk7CisJCQlpZiAoKHRhZyA9IGdldF90YWcocGgsIFBUVF9NT1RNKSkpCisJCQkJc2Vu ZF9tb3RtKHNwLCB0YWcpOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQlMRUFWRShFUEZOT1NV UFBPUlQpOwogCQl9CkBAIC0xOTMzLDYgKzIxNzksOCBAQAogCQljYXNlCVBUVF9TWVNfRVJSOgog CQljYXNlCVBUVF9HRU5fRVJSOgogCQljYXNlCVBUVF9NQVhfUEFZTDoKKwkJY2FzZQlQVFRfSFVS TDoKKwkJY2FzZQlQVFRfTU9UTToKIAkJCWJyZWFrOwogCQl9CiAJCXB0ID0gKGNvbnN0IHN0cnVj dCBwcHBvZV90YWcqKXB0bjsKZGlmZiAtLWdpdCBhL3NoYXJlL21hbi9tYW40L25nX3BwcG9lLjQg Yi9zaGFyZS9tYW4vbWFuNC9uZ19wcHBvZS40Ci0tLSBhL3NoYXJlL21hbi9tYW40L25nX3BwcG9l LjQKKysrIGIvc2hhcmUvbWFuL21hbjQvbmdfcHBwb2UuNApAQCAtMzUsNyArMzUsNyBAQAogLlwi ICRGcmVlQlNEJAogLlwiICRXaGlzdGxlOiBuZ19wcHBvZS44LHYgMS4xIDE5OTkvMDEvMjUgMjM6 NDY6MjcgYXJjaGllIEV4cCAkCiAuXCIKLS5EZCBTZXB0ZW1iZXIgMTUsIDIwMTUKKy5EZCBNYXJj aCAxLCAyMDE3CiAuRHQgTkdfUFBQT0UgNAogLk9zCiAuU2ggTkFNRQpAQCAtMTA0LDEyICsxMDQs MjIgQEAKIEl0IG11c3QgYmUgbmV3bHkgY3JlYXRlZCBhbmQgYSBzZXJ2aWNlIG5hbWUgY2FuIGJl IGdpdmVuIGFzIGFuIGFyZ3VtZW50LgogSXQgaXMgbGVnYWwgdG8gc3BlY2lmeSBhIHplcm8tbGVu Z3RoIHNlcnZpY2UgbmFtZSwgdGhpcyBpcyBjb21tb24KIG9uIHNvbWUgRFNMIHNldHVwcy4KLUl0 IGlzIHBvc3NpYmxlIHRvIHJlcXVlc3QgYSBjb25uZWN0aW9uIHRvIGEgc3BlY2lmaWMKLWFjY2Vz cyBjb25jZW50cmF0b3IgYnkgaXRzIG5hbWUgdXNpbmcgdGhlICJBQy1OYW1lXFxTZXJ2aWNlLU5h bWUiIHN5bnRheC4KK0l0IGlzIHBvc3NpYmxlIHRvIHJlcXVlc3QgYSBjb25uZWN0aW9uIHRvIGEg c3BlY2lmaWMgYWNjZXNzIGNvbmNlbnRyYXRvciwKK2FuZC9vciBzZXQgYSBzcGVjaWZpYyBob3N0 IHVuaXEgdGFnLCByZXF1aXJlZCBieSBzb21lIEludGVybmV0IHByb3ZpZGVycywKK3VzaW5nIHRo ZSAiW0FDLU5hbWVcXF1bSG9zdC1VbmlxfF1TZXJ2aWNlLU5hbWUiIHN5bnRheC4KK1RvIHNldCBh IGJpbmFyeSBIb3N0LVVuaXEsIGl0IG11c3QgYmUgZW5jb2RlZCBhcyBhIGhleGFkZWNpbWFsIGxv d2VyY2FzZQorc3RyaW5nIGFuZCBwcmVmaXhlZCB3aXRoICIweCIsIGVnLiAiMHg2ZDc5MmQ3NDYx NjciIGlzIGVxdWl2YWxlbnQgdG8KKyJteS10YWciLgogQSBzZXNzaW9uIHJlcXVlc3QgcGFja2V0 IHdpbGwgYmUgYnJvYWRjYXN0ZWQgb24gdGhlIEV0aGVybmV0LgogVGhpcyBjb21tYW5kIHVzZXMg dGhlCiAuRHYgbmdwcHBvZV9pbml0X2RhdGEKIHN0cnVjdHVyZSBzaG93biBiZWxvdy4KK0ZvciBl eGFtcGxlLCB0aGUgZm9sbG93aW5nIGluaXQgZGF0YSBhcmd1bWVudCBjYW4gYmUgdXNlZCB0bwor Y29ubmVjdCB0byAibXktaXNwIiBzZXJ2aWNlIHdpdGggIm15LWhvc3QiIHVuaXEgdGFnLCBhY2Nl cHRpbmcgb25seQorInJlbW90ZS1hYyIgYXMgYWNjZXNzIGNvbmNlbnRyYXRvcjoKKy5CZCAtbGl0 ZXJhbCAtb2Zmc2V0IGluZGVudAorInJlbW90ZS1hY1xcbXktaG9zdHxteS1pc3AiCisuRWQKIC5J dCBEdiBOR01fUFBQT0VfTElTVEVOIFBxIEljIHBwcG9lX2xpc3RlbgogVGVsbCBhIG5vbWluYXRl ZCBuZXdseSBjcmVhdGVkIGhvb2sgdGhhdCBpdHMgc2Vzc2lvbiBzaG91bGQgZW50ZXIKIHRoZSBz dGF0ZSBtYWNoaW5lIGFzIGEgc2VydmVyIGxpc3RlbmVyLgpAQCAtMjU4LDcgKzI2OCw0MSBAQAog ICAgIHVpbnQxNl90IGRhdGE7CiB9OwogLkVkCisuSXQgRHYgTkdNX1BQUE9FX1NFTkRfSFVSTCBQ cSBJYyBzZW5kX2h1cmwKK1RlbGwgYSBub21pbmF0ZWQgaG9vayB3aXRoIGFuIGFjdGl2ZSBzZXNz aW9uIHRvIHNlbmQgYSBQQURNIG1lc3NhZ2Ugd2l0aAorYSBIVVJMIHRhZy4KK1RoZSBhcmd1bWVu dCBnaXZlbiBpcyB0aGUgVVJMIHRoYXQgd2lsbCBiZSBkZWxpdmVyZWQgdG8gdGhlIGNsaWVudDoK Ky5CZCAtbGl0ZXJhbCAtb2Zmc2V0IGluZGVudAorbmdjdGwgbXNnIGZ4cDA6b3JwaGFucyBzZW5k X2h1cmwgJ3sgaG9vaz0ibXlIb29rIiBkYXRhPSJodHRwOi8vZXhhbXBsZS5uZXQvY3BlIiB9Jwor LkVkCisuSXQgRHYgTkdNX1BQUE9FX1NFTkRfTU9UTSBQcSBJYyBzZW5kX21vdG0KK1RlbGwgYSBu b21pbmF0ZWQgaG9vayB3aXRoIGFuIGFjdGl2ZSBzZXNzaW9uIHRvIHNlbmQgYSBQQURNIG1lc3Nh Z2Ugd2l0aAorYSBNT1RNIHRhZy4KK1RoZSBhcmd1bWVudCBnaXZlbiBpcyB0aGUgbWVzc2FnZSB0 aGF0IHdpbGwgYmUgZGVsaXZlcmVkIHRvIHRoZSBjbGllbnQ6CisuQmQgLWxpdGVyYWwgLW9mZnNl dCBpbmRlbnQKK25nY3RsIG1zZyBmeHAwOm9ycGhhbnMgc2VuZF9tb3RtICd7IGhvb2s9Im15SG9v ayIgZGF0YT0iV2VsY29tZSBhYm9hcmQiIH0nCisuRWQKIC5FbAorLlBwCitUaGUgdHdvIGNvbW1h bmRzIGFib3ZlIHVzZSB0aGUgc2FtZSBuZ3BwcG9lX2luaXRfZGF0YSBzdHJ1Y3R1cmUgZGVzY3Jp YmVkCithYm92ZS4KKy5CbCAtdGFnIC13aWR0aCAzbgorLkl0IER2IE5HTV9QUFBPRV9IVVJMCitU aGlzIGNvbW1hbmQgaXMgc2VudCB0byB0aGUgbm9kZSB0aGF0IHN0YXJ0ZWQgdGhpcyBzZXNzaW9u IHdoZW4gYSBQQURNCittZXNzYWdlIHdpdGggYSBIVVJMIHRhZyBpcyByZWNlaXZlZCwgYW5kIGNv bnRhaW5zIGEgVVJMIHRoYXQgdGhlIEhvc3QgbWF5CitwYXNzIHRvIGEgd2ViIGJyb3dzZXIgZm9y IHByZXNlbnRhdGlvbiB0byB0aGUgdXNlci4KKy5JdCBEdiBOR01fUFBQT0VfTU9UTQorVGhpcyBj b21tYW5kIGlzIHNlbnQgdG8gdGhlIG5vZGUgdGhhdCBzdGFydGVkIHRoaXMgc2Vzc2lvbiB3aGVu IGEgUEFETQorbWVzc2FnZSB3aXRoIGEgTU9UTSB0YWcgaXMgcmVjZWl2ZWQsIGFuZCBjb250YWlu cyBhIE1lc3NhZ2UgT2YgVGhlCitNaW51dGUgdGhhdCB0aGUgSG9zdCBtYXkgZGlzcGxheSB0byB0 aGUgdXNlci4KKy5FbAorLlBwCitUaGUgdHdvIGNvbW1hbmRzIGFib3ZlIHVzZSBhIGNvbW1vbiBk YXRhIHN0cnVjdHVyZToKKy5CZCAtbGl0ZXJhbCAtb2Zmc2V0IDRuCitzdHJ1Y3QgbmdwcHBvZV9w YWRtIHsKKyAgICBjaGFyICAgIG1zZ1tQUFBPRV9QQURNX1ZBTFVFX1NJWkVdOworfTsKKy5FZAog LlNoIFNIVVRET1dOCiBUaGlzIG5vZGUgc2h1dHMgZG93biB1cG9uIHJlY2VpcHQgb2YgYQogLkR2 IE5HTV9TSFVURE9XTgoK --b1_5d0d17fed4f7ff51825b42ccacdc7321--