Return-Path: Message-ID: Date: Fri, 5 Oct 2007 16:36:24 -0300 From: thiagoss To: "BlueZ development" In-Reply-To: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_39479_22667444.1191612984961" References: Subject: Re: [Bluez-devel] Patch: inheritance problem in gsta2dpsink Reply-To: BlueZ development List-Id: BlueZ development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: bluez-devel-bounces@lists.sourceforge.net Errors-To: bluez-devel-bounces@lists.sourceforge.net ------=_Part_39479_22667444.1191612984961 Content-Type: multipart/alternative; boundary="----=_Part_39480_17261075.1191612984962" ------=_Part_39480_17261075.1191612984962 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline This patch adds the prerolling to the gsta2dpsink gstreamer plugin, it sends the configuration packet to the device and prepares the connection. It is currently only supporting sbc, needs to be extended to mp3. This patch includes the full set of changes the previous one did. I'll be waiting comments, reviews or sugestions. BR, Thiago On 10/1/07, thiagoss wrote: > > GstA2dpSink was extending GstAudioSink, but there is a problem in that, > GstAudioSink expects only > "audio/x-raw-int", "audio/x-raw-float", "audio/x-mulaw" or "audio/x-alaw" > as media types. GstA2dpSink should support mp3 and sbc, that's causing a > runtime error. This patch changes the base class from GstAudioSink to > GstBaseSink, changing the stub functions to be implemented also. > > > Best regards, > > > Thiago > > ------=_Part_39480_17261075.1191612984962 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline This patch adds the prerolling to the gsta2dpsink gstreamer plugin, it sends the configuration packet to the device and prepares the connection.

It is currently only supporting sbc, needs to be extended to mp3.

This patch includes the full set of changes the previous one did.

I'll be waiting comments, reviews or sugestions.

BR,

Thiago

On 10/1/07, thiagoss <thiagossantos@gmail.com> wrote:
GstA2dpSink was extending GstAudioSink, but there is a problem in that, GstAudioSink expects only
"audio/x-raw-int", "audio/x-raw-float", "audio/x-mulaw" or "audio/x-alaw" as media types. GstA2dpSink should support mp3 and sbc, that's causing a runtime error. This patch changes the base class from GstAudioSink to GstBaseSink, changing the stub functions to be implemented also.


Best regards,


Thiago


------=_Part_39480_17261075.1191612984962-- ------=_Part_39479_22667444.1191612984961 Content-Type: text/x-patch; name="gsta2dpsink_preroll.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="gsta2dpsink_preroll.patch"; filename="gsta2dpsink_preroll.patch"; filename="gsta2dpsink_preroll.patch"; filename="gsta2dpsink_preroll.patch"; filename="gsta2dpsink_preroll.patch"; filename="gsta2dpsink_preroll.patch"; filename="gsta2dpsink_preroll.patch" X-Attachment-Id: f_f7f375h6 SW5kZXg6IGF1ZGlvL2dzdGEyZHBzaW5rLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2c3Jvb3Qv Ymx1ZXovdXRpbHMvYXVkaW8vZ3N0YTJkcHNpbmsuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4z CmRpZmYgLXUgLXIxLjMgZ3N0YTJkcHNpbmsuYwotLS0gYXVkaW8vZ3N0YTJkcHNpbmsuYwkyNiBB dWcgMjAwNyAxNDoxNDozNCAtMDAwMAkxLjMKKysrIGF1ZGlvL2dzdGEyZHBzaW5rLmMJNSBPY3Qg MjAwNyAxODo0OTozOSAtMDAwMApAQCAtMjgsOCArMjgsMTEgQEAKICNpbmNsdWRlIDx1bmlzdGQu aD4KICNpbmNsdWRlIDxzeXMvdW4uaD4KICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjaW5jbHVk ZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDxwdGhyZWFkLmg+CiAKICNpbmNsdWRlICJpcGMuaCIKKyNp bmNsdWRlICJzYmMuaCIKIAogI2luY2x1ZGUgImdzdGEyZHBzaW5rLmgiCiAKQEAgLTM3LDEzICs0 MCwxMTcgQEAKICNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIGEyZHBfc2lua19kZWJ1ZwogCiAjZGVm aW5lIERFRkFVTFRfREVWSUNFICJkZWZhdWx0IgorI2RlZmluZSBCVUZGRVJfU0laRSAyMDQ4CisK KyNkZWZpbmUgR1NUX0EyRFBfU0lOS19NVVRFWF9MT0NLKHMpIEdfU1RNVF9TVEFSVCB7CVwKKwkJ Z19tdXRleF9sb2NrIChzLT5zaW5rX2xvY2spOwkJXAorCX0gR19TVE1UX0VORAorCisjZGVmaW5l IEdTVF9BMkRQX1NJTktfTVVURVhfVU5MT0NLKHMpIEdfU1RNVF9TVEFSVCB7CVwKKwkJZ19tdXRl eF91bmxvY2sgKHMtPnNpbmtfbG9jayk7CQlcCisJfSBHX1NUTVRfRU5ECisKKyNkZWZpbmUgR1NU X0EyRFBfU0lOS19XQUlUX0NPTl9FTkQocykgR19TVE1UX1NUQVJUIHsJCQlcCisJCXMtPndhaXRp bmdfY29uX2NvbmYgPSBUUlVFOwkJCQlcCisJCWdfY29uZF93YWl0IChzLT5jb25fY29uZl9lbmQs IHMtPnNpbmtfbG9jayk7CQlcCisJCXMtPndhaXRpbmdfY29uX2NvbmYgPSBGQUxTRTsJCQkJXAor CX0gR19TVE1UX0VORAorCisjZGVmaW5lIEdTVF9BMkRQX1NJTktfQ09ORklHVVJBVElPTl9GQUlM KHMpIEdfU1RNVF9TVEFSVCB7CQlcCisJCXMtPmNvbl9zdGF0ZSA9IE5PVF9DT05GSUdVUkVEOwkJ CQlcCisJCWdfY29uZF9zaWduYWwgKHMtPmNvbl9jb25mX2VuZCk7CQkJXAorCX0gR19TVE1UX0VO RAorCisjZGVmaW5lIEdTVF9BMkRQX1NJTktfQ09ORklHVVJBVElPTl9TVUNDRVNTKHMpIEdfU1RN VF9TVEFSVCB7CQlcCisJCXMtPmNvbl9zdGF0ZSA9IENPTkZJR1VSRUQ7CQkJCVwKKwkJZ19jb25k X3NpZ25hbCAocy0+Y29uX2NvbmZfZW5kKTsJCQlcCisJfSBHX1NUTVRfRU5ECisKK3N0cnVjdCBi bHVldG9vdGhfYTJkcCB7CisJc2JjX3Qgc2JjOwkJCS8qIENvZGVjIGRhdGEgKi8KKwlpbnQgY29k ZXNpemU7CQkJLyogU0JDIGNvZGVzaXplICovCisJaW50IHNhbXBsZXM7CQkJLyogTnVtYmVyIG9m IGVuY29kZWQgc2FtcGxlcyAqLworCXVpbnQ4X3QgYnVmZmVyW0JVRkZFUl9TSVpFXTsJLyogQ29k ZWMgdHJhbnNmZXIgYnVmZmVyICovCisJaW50IGNvdW50OwkJCS8qIENvZGVjIHRyYW5zZmVyIGJ1 ZmZlciBjb3VudGVyICovCisKKwlpbnQgbnNhbXBsZXM7CQkJLyogQ3VtdWxhdGl2ZSBudW1iZXIg b2YgY29kZWMgc2FtcGxlcyAqLworCXVpbnQxNl90IHNlcV9udW07CQkvKiBDdW11bGF0aXZlIHBh Y2tldCBzZXF1ZW5jZSAqLworCWludCBmcmFtZV9jb3VudDsJCS8qIEN1cnJlbnQgZnJhbWVzIGlu IGJ1ZmZlciovCit9Oworc3RydWN0IGJsdWV0b290aF9kYXRhIHsKKwlzdHJ1Y3QgaXBjX2RhdGFf Y2ZnIGNmZzsJLyogQmx1ZXRvb3RoIGRldmljZSBjb25maWcgKi8KKwl1aW50OF90IGJ1ZmZlcltC VUZGRVJfU0laRV07CS8qIEVuY29kZWQgdHJhbnNmZXIgYnVmZmVyICovCisJaW50IGNvdW50OwkJ CS8qIFRyYW5zZmVyIGJ1ZmZlciBjb3VudGVyICovCisJc3RydWN0IGJsdWV0b290aF9hMmRwIGEy ZHA7CS8qIEEyRFAgZGF0YSAqLworCisJcHRocmVhZF90IGh3X3RocmVhZDsJCS8qIE1ha2VzIHZp cnR1YWwgaHcgcG9pbnRlciBtb3ZlICovCisJaW50IHBpcGVmZFsyXTsJCQkvKiBJbnRlciB0aHJl YWQgY29tbXVuaWNhdGlvbiAqLworCWludCBzdG9wcGVkOworfTsKKworI2lmIF9fQllURV9PUkRF UiA9PSBfX0xJVFRMRV9FTkRJQU4KKworc3RydWN0IHJ0cF9oZWFkZXIgeworCXVpbnQ4X3QgY2M6 NDsKKwl1aW50OF90IHg6MTsKKwl1aW50OF90IHA6MTsKKwl1aW50OF90IHY6MjsKKworCXVpbnQ4 X3QgcHQ6NzsKKwl1aW50OF90IG06MTsKKworCXVpbnQxNl90IHNlcXVlbmNlX251bWJlcjsKKwl1 aW50MzJfdCB0aW1lc3RhbXA7CisJdWludDMyX3Qgc3NyYzsKKwl1aW50MzJfdCBjc3JjWzBdOwor fSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CisKK3N0cnVjdCBydHBfcGF5bG9hZCB7CisJdWlu dDhfdCBmcmFtZV9jb3VudDo0OworCXVpbnQ4X3QgcmZhMDoxOworCXVpbnQ4X3QgaXNfbGFzdF9m cmFnbWVudDoxOworCXVpbnQ4X3QgaXNfZmlyc3RfZnJhZ21lbnQ6MTsKKwl1aW50OF90IGlzX2Zy YWdtZW50ZWQ6MTsKK30gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOworCisjZWxpZiBfX0JZVEVf T1JERVIgPT0gX19CSUdfRU5ESUFOCisKK3N0cnVjdCBydHBfaGVhZGVyIHsKKwl1aW50OF90IHY6 MjsKKwl1aW50OF90IHA6MTsKKwl1aW50OF90IHg6MTsKKwl1aW50OF90IGNjOjQ7CisKKwl1aW50 OF90IG06MTsKKwl1aW50OF90IHB0Ojc7CisKKwl1aW50MTZfdCBzZXF1ZW5jZV9udW1iZXI7CisJ dWludDMyX3QgdGltZXN0YW1wOworCXVpbnQzMl90IHNzcmM7CisJdWludDMyX3QgY3NyY1swXTsK K30gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOworCitzdHJ1Y3QgcnRwX3BheWxvYWQgeworCXVp bnQ4X3QgaXNfZnJhZ21lbnRlZDoxOworCXVpbnQ4X3QgaXNfZmlyc3RfZnJhZ21lbnQ6MTsKKwl1 aW50OF90IGlzX2xhc3RfZnJhZ21lbnQ6MTsKKwl1aW50OF90IHJmYTA6MTsKKwl1aW50OF90IGZy YW1lX2NvdW50OjQ7Cit9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKKworI2Vsc2UKKyNlcnJv ciAiVW5rbm93biBieXRlIG9yZGVyIgorI2VuZGlmCisKKyNkZWZpbmUgSVNfU0JDKG4pIChzdHJj bXAobiwgImF1ZGlvL3gtc2JjIikgPT0gMCkKKyNkZWZpbmUgSVNfTVBFRyhuKSAoc3RyY21wKG4s ICJhdWRpby9tcGVnIikgPT0gMCkKIAogZW51bSB7CiAJUFJPUF8wLAogCVBST1BfREVWSUNFLAog fTsKIAotR1NUX0JPSUxFUlBMQVRFKEdzdEEyZHBTaW5rLCBnc3RfYTJkcF9zaW5rLCBHc3RBdWRp b1NpbmssIEdTVF9UWVBFX0FVRElPX1NJTkspOworR1NUX0JPSUxFUlBMQVRFKEdzdEEyZHBTaW5r LCBnc3RfYTJkcF9zaW5rLCBHc3RCYXNlU2luaywgR1NUX1RZUEVfQkFTRV9TSU5LKTsKIAogc3Rh dGljIGNvbnN0IEdzdEVsZW1lbnREZXRhaWxzIGEyZHBfc2lua19kZXRhaWxzID0KIAlHU1RfRUxF TUVOVF9ERVRBSUxTKCJCbHVldG9vdGggQTJEUCBzaW5rIiwKQEAgLTc3LDE0ICsxODQsNDUgQEAK IAlnc3RfZWxlbWVudF9jbGFzc19zZXRfZGV0YWlscyhlbGVtZW50X2NsYXNzLCAmYTJkcF9zaW5r X2RldGFpbHMpOwogfQogCitzdGF0aWMgdm9pZCBnc3RfYTJkcF9zaW5rX2JsdWV0b290aF9leGl0 KEdzdEEyZHBTaW5rICpzaW5rKQoreworCXN0cnVjdCBibHVldG9vdGhfYTJkcCAqYTJkcCA9ICZz aW5rLT5kYXRhLT5hMmRwOworCisJaWYgKHNpbmstPnN0cmVhbV9mZCA+PSAwKSB7CisJCWNsb3Nl KHNpbmstPnN0cmVhbV9mZCk7CisJCXNpbmstPnN0cmVhbV9mZCA9IC0xOworCX0KKworCWlmIChz aW5rLT5kYXRhLT5od190aHJlYWQpIHsKKwkJcHRocmVhZF9jYW5jZWwoc2luay0+ZGF0YS0+aHdf dGhyZWFkKTsKKwkJcHRocmVhZF9qb2luKHNpbmstPmRhdGEtPmh3X3RocmVhZCwgMCk7CisJfQor CisJaWYgKHNpbmstPmRhdGEtPmNmZy5jb2RlYyA9PSBDRkdfQ09ERUNfU0JDKQorCQlzYmNfZmlu aXNoKCZhMmRwLT5zYmMpOworCisJaWYgKHNpbmstPmRhdGEtPnBpcGVmZFswXSA+IDApCisJCWNs b3NlKHNpbmstPmRhdGEtPnBpcGVmZFswXSk7CisKKwlpZiAoc2luay0+ZGF0YS0+cGlwZWZkWzFd ID4gMCkKKwkJY2xvc2Uoc2luay0+ZGF0YS0+cGlwZWZkWzFdKTsKKworCWdfZnJlZShzaW5rLT5k YXRhKTsKK30KKwogc3RhdGljIHZvaWQgZ3N0X2EyZHBfc2lua19maW5hbGl6ZShHT2JqZWN0ICpv YmplY3QpCiB7CiAJR3N0QTJkcFNpbmsgKnNpbmsgPSBHU1RfQTJEUF9TSU5LKG9iamVjdCk7CiAK IAlnX2lvX2NoYW5uZWxfY2xvc2Uoc2luay0+c2VydmVyKTsKKwlnX2lvX2NoYW5uZWxfdW5yZWYo c2luay0+c2VydmVyKTsKKwlnc3RfYTJkcF9zaW5rX2JsdWV0b290aF9leGl0KHNpbmspOwogCiAJ Z19mcmVlKHNpbmstPmRldmljZSk7CiAKKwlnX2NvbmRfZnJlZShzaW5rLT5jb25fY29uZl9lbmQp OworCWdfbXV0ZXhfZnJlZShzaW5rLT5zaW5rX2xvY2spOworCiAJR19PQkpFQ1RfQ0xBU1MocGFy ZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKIH0KIApAQCAtMTI0LDYyICsyNjIsNDQ3IEBA CiAJfQogfQogCi1zdGF0aWMgZ2Jvb2xlYW4gZ3N0X2EyZHBfc2lua19vcGVuKEdzdEF1ZGlvU2lu ayAqc2VsZikKK3N0YXRpYyBnaW50IGdzdF9hMmRwX3NpbmtfYmx1ZXRvb3RoX3JlY3Ztc2dfZmQo R3N0QTJkcFNpbmsgKnNpbmspCit7CisJY2hhciBjbXNnX2JbQ01TR19TUEFDRShzaXplb2YoaW50 KSldLCBtOworCWludCBlcnIsIHJldDsKKwlzdHJ1Y3QgaW92ZWMgaW92ID0geyAmbSwgc2l6ZW9m KG0pIH07CisJc3RydWN0IG1zZ2hkciBtc2doOworCXN0cnVjdCBjbXNnaGRyICpjbXNnOworCisJ bWVtc2V0KCZtc2doLCAwLCBzaXplb2YobXNnaCkpOworCW1zZ2gubXNnX2lvdiA9ICZpb3Y7CisJ bXNnaC5tc2dfaW92bGVuID0gMTsKKwltc2doLm1zZ19jb250cm9sID0gJmNtc2dfYjsKKwltc2do Lm1zZ19jb250cm9sbGVuID0gQ01TR19MRU4oc2l6ZW9mKGludCkpOworCisJcmV0ID0gcmVjdm1z ZyhnX2lvX2NoYW5uZWxfdW5peF9nZXRfZmQoc2luay0+c2VydmVyKSwgJm1zZ2gsIDApOworCWlm IChyZXQgPCAwKSB7CisJCWVyciA9IGVycm5vOworCQlHU1RfRVJST1JfT0JKRUNUKHNpbmssICJV bmFibGUgdG8gcmVjZWl2ZSBmZDogJXMgKCVkKSIsIAorCQkJCXN0cmVycm9yKGVyciksIGVycik7 CisJCXJldHVybiAtZXJyOworCX0KKworCS8qIFJlY2VpdmUgYXV4aWxpYXJ5IGRhdGEgaW4gbXNn aCAqLworCWZvciAoY21zZyA9IENNU0dfRklSU1RIRFIoJm1zZ2gpOyBjbXNnICE9IE5VTEw7CisJ CQljbXNnID0gQ01TR19OWFRIRFIoJm1zZ2gsIGNtc2cpKSB7CisJCWlmIChjbXNnLT5jbXNnX2xl dmVsID09IFNPTF9TT0NLRVQKKwkJCQkmJiBjbXNnLT5jbXNnX3R5cGUgPT0gU0NNX1JJR0hUUykg eworCQkJc2luay0+c3RyZWFtX2ZkID0gKCooaW50ICopIENNU0dfREFUQShjbXNnKSk7CisJCQlH U1RfREVCVUdfT0JKRUNUKHNpbmssICJzdHJlYW1fZmQ9JWQiLCAKKwkJCQlzaW5rLT5zdHJlYW1f ZmQpOworCQkJcmV0dXJuIDA7CisJCX0KKwl9CisKKwlyZXR1cm4gLUVJTlZBTDsKK30KKworc3Rh dGljIGludCBnc3RfYTJkcF9zaW5rX2JsdWV0b290aF9hMmRwX2luaXQoR3N0QTJkcFNpbmsgKnNp bmssIAorCQkJc3RydWN0IGlwY19jb2RlY19zYmMgKnNiYykKIHsKLQlHc3RBMmRwU2luayAqc2lu ayA9IEdTVF9BMkRQX1NJTksoc2VsZik7CisJc3RydWN0IGJsdWV0b290aF9hMmRwICphMmRwID0g JnNpbmstPmRhdGEtPmEyZHA7CisJc3RydWN0IGlwY19kYXRhX2NmZyAqY2ZnID0gJnNpbmstPmRh dGEtPmNmZzsKKworCWlmIChjZmcgPT0gTlVMTCkgeworCQlHU1RfRVJST1JfT0JKRUNUKHNpbmss ICJFcnJvciBnZXR0aW5nIGNvZGVjIHBhcmFtZXRlcnMiKTsKKwkJcmV0dXJuIC0xOworCX0KKwor CWlmIChjZmctPmNvZGVjICE9IENGR19DT0RFQ19TQkMpCisJCXJldHVybiAtMTsKIAotCXByaW50 ZigiZGV2aWNlICVzXG4iLCBzaW5rLT5kZXZpY2UpOwotCXByaW50Zigib3BlblxuIik7CisJLyog RklYTUU6IGluaXQgdXNpbmcgZmxhZ3M/ICovCisJc2JjX2luaXQoJmEyZHAtPnNiYywgMCk7CisJ YTJkcC0+c2JjLnJhdGUgPSBjZmctPnJhdGU7CisJYTJkcC0+c2JjLmNoYW5uZWxzID0gY2ZnLT5t b2RlID09IENGR19NT0RFX01PTk8gPyAxIDogMjsKKwlpZiAoY2ZnLT5tb2RlID09IENGR19NT0RF X01PTk8gfHwgY2ZnLT5tb2RlID09IENGR19NT0RFX0pPSU5UX1NURVJFTykKKwkJYTJkcC0+c2Jj LmpvaW50ID0gMTsKKwlhMmRwLT5zYmMuYWxsb2NhdGlvbiA9IHNiYy0+YWxsb2NhdGlvbjsKKwlh MmRwLT5zYmMuc3ViYmFuZHMgPSBzYmMtPnN1YmJhbmRzOworCWEyZHAtPnNiYy5ibG9ja3MgPSBz YmMtPmJsb2NrczsKKwlhMmRwLT5zYmMuYml0cG9vbCA9IHNiYy0+Yml0cG9vbDsKKwlhMmRwLT5j b2Rlc2l6ZSA9IGEyZHAtPnNiYy5zdWJiYW5kcyAqIGEyZHAtPnNiYy5ibG9ja3MgKgorCQkJCQkJ YTJkcC0+c2JjLmNoYW5uZWxzICogMjsKKwlhMmRwLT5jb3VudCA9IHNpemVvZihzdHJ1Y3QgcnRw X2hlYWRlcikgKyBzaXplb2Yoc3RydWN0IHJ0cF9wYXlsb2FkKTsKKworCUdTVF9ERUJVR19PQkpF Q1Qoc2luaywgIkNvZGVjIHBhcmFtZXRlcnM6IFwKKwkJCQlcdGFsbG9jYXRpb249JXVcblx0c3Vi YmFuZHM9JXVcbiBcCisJCQkJXHRibG9ja3M9JXVcblx0Yml0cG9vbD0ldVxuIiwKKwkJYTJkcC0+ c2JjLmFsbG9jYXRpb24sIGEyZHAtPnNiYy5zdWJiYW5kcywgYTJkcC0+c2JjLmJsb2NrcywKKwkJ YTJkcC0+c2JjLmJpdHBvb2wpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBnYm9vbGVhbiBn c3RfYTJkcF9zaW5rX2luaXRfcGt0X2NvbmYoR3N0QTJkcFNpbmsgKnNpbmssIAorCQlHc3RDYXBz ICpjYXBzLCBzdHJ1Y3QgaXBjX3BhY2tldCAqcGt0KQoreworCisJc3RydWN0IGlwY19kYXRhX2Nm ZyAqY2ZnID0gKHZvaWQgKikgcGt0LT5kYXRhOworCXN0cnVjdCBpcGNfY29kZWNfc2JjICpzYmMg PSAodm9pZCAqKSBjZmctPmRhdGE7CisJY29uc3QgR1ZhbHVlICp2YWx1ZSA9IE5VTEw7CisJY29u c3QgY2hhciAqcHJlZiwgKm5hbWU7CisJR3N0U3RydWN0dXJlICpzdHJ1Y3R1cmUgPSBnc3RfY2Fw c19nZXRfc3RydWN0dXJlKGNhcHMsMCk7CisKKwluYW1lID0gZ3N0X3N0cnVjdHVyZV9nZXRfbmFt ZShzdHJ1Y3R1cmUpOworCS8qIEZJWE1FIG9ubHkgc2JjIHN1cHBvcnRlZCBoZXJlLCBzaG91bGQg c3Vwb3J0IG1wMyAqLworCWlmICghKElTX1NCQyhuYW1lKSkpIHsKKwkJR1NUX0VSUk9SX09CSkVD VChzaW5rLCAiVW5zdXBwb3J0ZWQgZm9ybWF0ICVzIiwgbmFtZSk7CisJCXJldHVybiBGQUxTRTsK Kwl9CisKKwlzdHJuY3B5KHBrdC0+ZGV2aWNlLCBzaW5rLT5kZXZpY2UsIDE4KTsKKwlwa3QtPnJv bGUgPSBQS1RfUk9MRV9ISUZJOworCisJdmFsdWUgPSBnc3Rfc3RydWN0dXJlX2dldF92YWx1ZShz dHJ1Y3R1cmUsICJyYXRlIik7CisJY2ZnLT5yYXRlID0gZ192YWx1ZV9nZXRfaW50KHZhbHVlKTsK KworCXZhbHVlID0gZ3N0X3N0cnVjdHVyZV9nZXRfdmFsdWUoc3RydWN0dXJlLCAibW9kZSIpOwor CXByZWYgPSBnX3ZhbHVlX2dldF9zdHJpbmcodmFsdWUpOworCWlmIChzdHJjbXAocHJlZiwgImF1 dG8iKSA9PSAwKQorCQljZmctPm1vZGUgPSBDRkdfTU9ERV9BVVRPOworCWVsc2UgaWYgKHN0cmNt cChwcmVmLCAibW9ubyIpID09IDApCisJCWNmZy0+bW9kZSA9IENGR19NT0RFX01PTk87CisJZWxz ZSBpZiAoc3RyY21wKHByZWYsICJkdWFsIikgPT0gMCkKKwkJY2ZnLT5tb2RlID0gQ0ZHX01PREVf RFVBTF9DSEFOTkVMOworCWVsc2UgaWYgKHN0cmNtcChwcmVmLCAic3RlcmVvIikgPT0gMCkKKwkJ Y2ZnLT5tb2RlID0gQ0ZHX01PREVfU1RFUkVPOworCWVsc2UgaWYgKHN0cmNtcChwcmVmLCAiam9p bnQiKSA9PSAwKQorCQljZmctPm1vZGUgPSBDRkdfTU9ERV9KT0lOVF9TVEVSRU87CisJZWxzZSB7 CisJCUdTVF9FUlJPUl9PQkpFQ1Qoc2luaywgIkludmFsaWQgbW9kZSAlcyIsIHByZWYpOworCQly ZXR1cm4gRkFMU0U7CisJfQorCisJdmFsdWUgPSBnc3Rfc3RydWN0dXJlX2dldF92YWx1ZShzdHJ1 Y3R1cmUsICJhbGxvY2F0aW9uIik7CisJcHJlZiA9IGdfdmFsdWVfZ2V0X3N0cmluZyh2YWx1ZSk7 CisJaWYgKHN0cmNtcChwcmVmLCAiYXV0byIpID09IDApCisJCXNiYy0+YWxsb2NhdGlvbiA9IENG R19BTExPQ0FUSU9OX0FVVE87CisJZWxzZSBpZiAoc3RyY21wKHByZWYsICJsb3VkbmVzcyIpID09 IDApCisJCXNiYy0+YWxsb2NhdGlvbiA9IENGR19BTExPQ0FUSU9OX0xPVURORVNTOworCWVsc2Ug aWYgKHN0cmNtcChwcmVmLCAic25yIikgPT0gMCkKKwkJc2JjLT5hbGxvY2F0aW9uID0gQ0ZHX0FM TE9DQVRJT05fU05SOworCWVsc2UgeworCQlHU1RfRVJST1JfT0JKRUNUKHNpbmssICJJbnZhbGlk IGFsbG9jYXRpb246ICVzIiwgcHJlZik7CisJCXJldHVybiBGQUxTRTsKKwl9CisKKwl2YWx1ZSA9 IGdzdF9zdHJ1Y3R1cmVfZ2V0X3ZhbHVlKHN0cnVjdHVyZSwgInN1YmJhbmRzIik7CisJc2JjLT5z dWJiYW5kcyA9IGdfdmFsdWVfZ2V0X2ludCh2YWx1ZSk7CisKKwl2YWx1ZSA9IGdzdF9zdHJ1Y3R1 cmVfZ2V0X3ZhbHVlKHN0cnVjdHVyZSwgImJsb2NrcyIpOworCXNiYy0+YmxvY2tzID0gZ192YWx1 ZV9nZXRfaW50KHZhbHVlKTsKKy8qIEZJWE1FIGhvdyBjYW4gSSBvYnRhaW4gdGhlIGJpdHBvb2wg PworCQlpZiAoc3RyY21wKGlkLCAiYml0cG9vbCIpID09IDApIHsKKwkJCWlmIChzbmRfY29uZmln X2dldF9zdHJpbmcobiwgJmJpdHBvb2wpIDwgMCkgeworCQkJCVNOREVSUigiSW52YWxpZCB0eXBl IGZvciAlcyIsIGlkKTsKKwkJCQlyZXR1cm4gLUVJTlZBTDsKKwkJCX0KKworCQkJc2JjLT5iaXRw b29sID0gYXRvaShiaXRwb29sKTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJU05ERVJSKCJVbmtu b3duIGZpZWxkICVzIiwgaWQpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisqLworCXNiYy0+Yml0 cG9vbCA9IDMyOworCisJcGt0LT5sZW5ndGggPSBzaXplb2YoKmNmZykgKyBzaXplb2YoKnNiYyk7 CisJcGt0LT50eXBlID0gUEtUX1RZUEVfQ0ZHX1JFUTsKKwlwa3QtPmVycm9yID0gUEtUX0VSUk9S X05PTkU7CiAKIAlyZXR1cm4gVFJVRTsKKwogfQogCi1zdGF0aWMgZ2Jvb2xlYW4gZ3N0X2EyZHBf c2lua19wcmVwYXJlKEdzdEF1ZGlvU2luayAqc2VsZiwKLQkJCQkJCUdzdFJpbmdCdWZmZXJTcGVj ICpzcGVjKQorc3RhdGljIGdib29sZWFuIGdzdF9hMmRwX3Npbmtfc3RhcnQoR3N0QmFzZVNpbmsg KmJhc2VzaW5rKQogewotCXByaW50ZigicGVycGFyZVxuIik7Ci0JcHJpbnRmKCJyYXRlICVkXG4i LCBzcGVjLT5yYXRlKTsKLQlwcmludGYoImNoYW5uZWxzICVkXG4iLCBzcGVjLT5jaGFubmVscyk7 CisJZ19wcmludCgic3RhcnRcbiIpOwogCiAJcmV0dXJuIFRSVUU7CiB9CiAKLXN0YXRpYyBnYm9v bGVhbiBnc3RfYTJkcF9zaW5rX3VucHJlcGFyZShHc3RBdWRpb1NpbmsgKnNlbGYpCitzdGF0aWMg Z2Jvb2xlYW4gZ3N0X2EyZHBfc2lua19zdG9wKEdzdEJhc2VTaW5rICpiYXNlc2luaykKIHsKLQlw cmludGYoInVucHJlcGFyZVxuIik7CisJZ19wcmludCgic3RvcFxuIik7CiAKIAlyZXR1cm4gVFJV RTsKIH0KIAotc3RhdGljIGdib29sZWFuIGdzdF9hMmRwX3NpbmtfY2xvc2UoR3N0QXVkaW9TaW5r ICpzZWxmKQorc3RhdGljIGdib29sZWFuIGdzdF9hMmRwX3Npbmtfc2VuZF9jb25mX3BrdChHc3RB MmRwU2luayAqc2luaywgR3N0Q2FwcyAqY2FwcykKIHsKLQlwcmludGYoImNsb3NlXG4iKTsKKwln Y2hhciBidWZbSVBDX01UVV07CisJc3RydWN0IGlwY19wYWNrZXQgKnBrdCA9ICh2b2lkICopIGJ1 ZjsKKwlnYm9vbGVhbiByZXQ7CisJR0lPRXJyb3IgaW9fZXJyb3I7CisKKwlnX2Fzc2VydChzaW5r LT5jb25fc3RhdGUgPT0gTk9UX0NPTkZJR1VSRUQpOworCisJcGt0ID0gKHZvaWQqKSBidWY7CisJ cmV0ID0gZ3N0X2EyZHBfc2lua19pbml0X3BrdF9jb25mKHNpbmssIGNhcHMsIHBrdCk7CisJaWYg KCFyZXQpIHsKKwkJR1NUX0VSUk9SX09CSkVDVChzaW5rLCAiQ291bGRuJ3QgaW5pdGlhbGl6ZSBw YXJzZSBjYXBzIFwKKwkJCQl0byBwYWNrZXQgY29uZmlndXJhdGlvbiIpOworCQlyZXR1cm4gRkFM U0U7CisJfQorCisJc2luay0+Y29uX3N0YXRlID0gQ09ORklHVVJJTkdfSU5JVDsKKworCWlvX2Vy cm9yID0gZ19pb19jaGFubmVsX3dyaXRlKHNpbmstPnNlcnZlciwgKGdjaGFyKilwa3QsIAorCQkJ c2l6ZW9mKCpwa3QpICsgcGt0LT5sZW5ndGgsICZyZXQpOworCWlmIChpb19lcnJvciAhPSBHX0lP X0VSUk9SX05PTkUpIHsKKwkJR1NUX0VSUk9SX09CSkVDVChzaW5rLCAiRXJyb3Igb2N1cnJlZCB3 aGlsZSBzZW5kaW5nIFwKKwkJCQkJY29uZmlndXJhcmlvbiBwYWNrZXQiKTsKKwkJc2luay0+Y29u X3N0YXRlID0gTk9UX0NPTkZJR1VSRUQ7CisJCXJldHVybiBGQUxTRTsKKwl9CisKKwlHU1RfREVC VUdfT0JKRUNUKHNpbmssICIlZCBieXRlcyBzZW50IiwgcmV0KTsKKwlzaW5rLT5jb25fc3RhdGUg PSBDT05GSUdVUklOR19TRU5UX0NPTkY7CiAKIAlyZXR1cm4gVFJVRTsKIH0KIAotc3RhdGljIGd1 aW50IGdzdF9hMmRwX3Npbmtfd3JpdGUoR3N0QXVkaW9TaW5rICpzZWxmLAotCQkJCQlncG9pbnRl ciBkYXRhLCBndWludCBsZW5ndGgpCitzdGF0aWMgZ2Jvb2xlYW4gZ3N0X2EyZHBfc2lua19zdGFy dF9kZXZfY29uZihHc3RBMmRwU2luayAqc2luaywgR3N0Q2FwcyAqY2FwcykKIHsKLQlyZXR1cm4g MDsKKwlnYm9vbGVhbiByZXQ7CisKKwlnX2Fzc2VydChzaW5rLT5jb25fc3RhdGUgPT0gTk9UX0NP TkZJR1VSRUQpOworCisJR1NUX0RFQlVHX09CSkVDVChzaW5rLCAic3RhcnRpbmcgZGV2aWNlIGNv bmZpZ3VyYXRpb24iKTsKKworCXJldCA9IGdzdF9hMmRwX3Npbmtfc2VuZF9jb25mX3BrdChzaW5r LCBjYXBzKTsKKworCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyBndWludCBnc3RfYTJkcF9zaW5r X2RlbGF5KEdzdEF1ZGlvU2luayAqYXVkaW9zaW5rKQorc3RhdGljIEdzdEZsb3dSZXR1cm4gZ3N0 X2EyZHBfc2lua19wcmVyb2xsKEdzdEJhc2VTaW5rICpiYXNlc2luaywgCisJCQkJCUdzdEJ1ZmZl ciAqYnVmZmVyKQogewotCXByaW50ZigiZGVsYXlcbiIpOworCUdzdEEyZHBTaW5rICpzaW5rOwor CXNpbmsgPSBHU1RfQTJEUF9TSU5LKGJhc2VzaW5rKTsKIAotCXJldHVybiAwOworCUdTVF9BMkRQ X1NJTktfTVVURVhfTE9DSyhzaW5rKTsKKworCWlmIChzaW5rLT5jb25fc3RhdGUgPT0gTk9UX0NP TkZJR1VSRUQpCisJCWdzdF9hMmRwX3Npbmtfc3RhcnRfZGV2X2NvbmYoc2luaywgR1NUX0JVRkZF Ul9DQVBTKGJ1ZmZlcikpOworCisJLyogd2FpdCBmb3IgdGhlIGNvbm5lY3Rpb24gcHJvY2VzcyB0 byBmaW5pc2ggKi8KKwlpZiAoc2luay0+Y29uX3N0YXRlICE9IENPTkZJR1VSRUQpCisJCUdTVF9B MkRQX1NJTktfV0FJVF9DT05fRU5EKHNpbmspOworCisJR1NUX0EyRFBfU0lOS19NVVRFWF9VTkxP Q0soc2luayk7CisKKwlpZiAoc2luay0+Y29uX3N0YXRlICE9IENPTkZJR1VSRUQpCisJCXJldHVy biBHU1RfRkxPV19FUlJPUjsKKworCXJldHVybiBHU1RfRkxPV19PSzsKIH0KIAotc3RhdGljIHZv aWQgZ3N0X2EyZHBfc2lua19yZXNldChHc3RBdWRpb1NpbmsgKmF1ZGlvc2luaykKK3N0YXRpYyBH c3RGbG93UmV0dXJuIGdzdF9hMmRwX3NpbmtfcmVuZGVyKEdzdEJhc2VTaW5rICpiYXNlc2luaywK KwkJCQkJR3N0QnVmZmVyICpidWZmZXIpCiB7Ci0JcHJpbnRmKCJyZXNldFxuIik7CisJZ19wcmlu dCgicmVuZGVyXG4iKTsKKworCXJldHVybiBHU1RfRkxPV19PSzsKK30KKworc3RhdGljIGdib29s ZWFuIGdzdF9hMmRwX3NpbmtfY29uZl9yZXNwKEdzdEEyZHBTaW5rICpzaW5rKQoreworCWdjaGFy IGJ1ZltJUENfTVRVXTsKKwlHSU9FcnJvciBpb19lcnJvcjsKKwlndWludCByZXQ7CisJc3RydWN0 IGlwY19wYWNrZXQgKnBrdCA9ICh2b2lkICopIGJ1ZjsKKwlzdHJ1Y3QgaXBjX2RhdGFfY2ZnICpj ZmcgPSAodm9pZCAqKSBwa3QtPmRhdGE7CisKKwltZW1zZXQoYnVmLCAwLCBzaXplb2YoYnVmKSk7 CisKKwlpb19lcnJvciA9IGdfaW9fY2hhbm5lbF9yZWFkKHNpbmstPnNlcnZlciwgKGdjaGFyKili dWYsIAorCQkJc2l6ZW9mKCpwa3QpICsgc2l6ZW9mKCpjZmcpLCAmcmV0KTsKKwlpZiAoaW9fZXJy b3IgIT0gR19JT19FUlJPUl9OT05FICYmIHJldCA+IDApIHsKKwkJR1NUX0VSUk9SX09CSkVDVChz aW5rLCAiRXJyb3Igb2N1cnJlZCB3aGlsZSByZWNlaXZpbmcgXAorCQkJCQljb25maWd1cmFyaW9u IHBhY2tldCBhbnN3ZXIiKTsKKwkJcmV0dXJuIEZBTFNFOworCX0KKworCXNpbmstPnRvdGFsID0g cmV0OworCWlmIChwa3QtPnR5cGUgIT0gUEtUX1RZUEVfQ0ZHX1JTUCkgeworCQlHU1RfRVJST1Jf T0JKRUNUKHNpbmssICJVbmV4cGVjdGVkIHBhY2tldCB0eXBlICVkIFwKKwkJCQkJcmVjZWl2ZWQi LCBwa3QtPnR5cGUpOworCQlyZXR1cm4gRkFMU0U7CisJfQorCisJaWYgKHBrdC0+ZXJyb3IgIT0g UEtUX0VSUk9SX05PTkUpIHsKKwkJR1NUX0VSUk9SX09CSkVDVChzaW5rLCAiRXJyb3IgJWQgd2hp bGUgY29uZmlndXJpbmcgXAorCQkJCQlkZXZpY2UiLCBwa3QtPmVycm9yKTsKKwkJcmV0dXJuIEZB TFNFOworCX0KKworCWlmIChjZmctPmNvZGVjICE9IENGR19DT0RFQ19TQkMpIHsKKwkJR1NUX0VS Uk9SX09CSkVDVChzaW5rLCAiVW5zdXBwb3J0ZWQgZm9ybWF0Iik7CisJCXJldHVybiBGQUxTRTsK Kwl9CisKKwlyZXR1cm4gVFJVRTsKK30KKworc3RhdGljIGdib29sZWFuIGdzdF9hMmRwX3Npbmtf Y29uZl9yZWN2X2Rldl9jb25mKEdzdEEyZHBTaW5rICpzaW5rKQoreworCWdjaGFyIGJ1ZltJUENf TVRVXTsKKwlHSU9FcnJvciBpb19lcnJvcjsKKwlndWludCByZXQ9MDsKKwlzdHJ1Y3QgaXBjX3Bh Y2tldCAqcGt0ID0gKHZvaWQgKikgYnVmOworCXN0cnVjdCBpcGNfZGF0YV9jZmcgKmNmZyA9ICh2 b2lkICopIHBrdC0+ZGF0YTsKKwlzdHJ1Y3QgaXBjX2NvZGVjX3NiYyAqc2JjID0gKHZvaWQgKikg Y2ZnLT5kYXRhOworCisJaW9fZXJyb3IgPSBnX2lvX2NoYW5uZWxfcmVhZChzaW5rLT5zZXJ2ZXIs IChnY2hhciopc2JjLCAKKwkJCXNpemVvZigqc2JjKSwgJnJldCk7CisJaWYgKGlvX2Vycm9yICE9 IEdfSU9fRVJST1JfTk9ORSkgeworCQlHU1RfRVJST1JfT0JKRUNUKHNpbmssICJFcnJvciB3aGls ZSByZWFkaW5nIGRhdGEgZnJvbSBzb2NrZXQgXAorCQkJCSVzICglZCkiLCBzdHJlcnJvcihlcnJu byksIGVycm5vKTsgCisJCXJldHVybiBGQUxTRTsKKwl9IGVsc2UgaWYgKHJldCA9PSAwKSB7CisJ CUdTVF9FUlJPUl9PQkpFQ1Qoc2luaywgIlJlYWQgMCBieXRlcyBmcm9tIHNvY2tldCIpOyAKKwkJ cmV0dXJuIEZBTFNFOworCX0KKworCXNpbmstPnRvdGFsICs9IHJldDsKKwlHU1RfREVCVUdfT0JK RUNUKHNpbmssICJPSyAtICVkIGJ5dGVzIHJlY2VpdmVkIiwgc2luay0+dG90YWwpOworCisJaWYg KHBrdC0+bGVuZ3RoICE9IChzaW5rLT50b3RhbCAtIHNpemVvZihzdHJ1Y3QgaXBjX3BhY2tldCkp KSB7CisJCUdTVF9FUlJPUl9PQkpFQ1Qoc2luaywgIkVycm9yIHdoaWxlIGNvbmZpZ3VyaW5nIGRl dmljZTogXAorCQkJCXBhY2tldCBzaXplIGRvZXNuJ3QgbWF0Y2giKTsKKwkJcmV0dXJuIEZBTFNF OworCX0KKworCW1lbWNweSgmc2luay0+ZGF0YS0+Y2ZnLCBjZmcsIHNpemVvZigqY2ZnKSk7CisK KwlHU1RfREVCVUdfT0JKRUNUKHNpbmssICJEZXZpY2UgY29uZmlndXJhdGlvbjpcblx0ZmQ9JWRc blx0ZmRfb3B0PSV1XG5cCisJCQlcdHBrdF9sZW49JXVcblx0c2FtcGxlX3NpemU9JXVcblx0cmF0 ZT0ldSIsCisJCQlzaW5rLT5zdHJlYW1fZmQsIHNpbmstPmRhdGEtPmNmZy5mZF9vcHQsIFwKKwkJ CXNpbmstPmRhdGEtPmNmZy5wa3RfbGVuLCBzaW5rLT5kYXRhLT5jZmcuc2FtcGxlX3NpemUsIFwK KwkJCXNpbmstPmRhdGEtPmNmZy5yYXRlKTsKKworCWlmIChzaW5rLT5kYXRhLT5jZmcuY29kZWMg PT0gQ0ZHX0NPREVDX1NCQykgeworCQlyZXQgPSBnc3RfYTJkcF9zaW5rX2JsdWV0b290aF9hMmRw X2luaXQoc2luaywgc2JjKTsKKwkJaWYgKHJldCA8IDApCisJCQlyZXR1cm4gRkFMU0U7CisKKwl9 CisJcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBnYm9vbGVhbiBnc3RfYTJkcF9zaW5rX2NvbmZf cmVjdl9zdHJlYW1fZmQoR3N0QTJkcFNpbmsgKnNpbmspCit7CisJZ3VpbnQgcmV0PTA7CisJcmV0 ID0gZ3N0X2EyZHBfc2lua19ibHVldG9vdGhfcmVjdm1zZ19mZChzaW5rKTsKKwlpZiAocmV0IDwg MCkKKwkJcmV0dXJuIEZBTFNFOworCisJaWYgKHNpbmstPnN0cmVhbV9mZCA9PSAtMSkgeworCQlH U1RfRVJST1JfT0JKRUNUKHNpbmssICJFcnJvciB3aGlsZSBjb25maWd1cmluZyBkZXZpY2U6IFwK KwkJCQljb3VsZCBub3QgYWNxdWlyZSBhdWRpbyBzb2NrZXQiKTsKKwkJcmV0dXJuIEZBTFNFOwor CX0KKworCS8qIEl0IGlzIHBvc3NpYmxlIHRoZXJlIGlzIHNvbWUgb3V0c3RhbmRpbmcKKwlkYXRh IGluIHRoZSBwaXBlIC0gd2UgaGF2ZSB0byBlbXB0eSBpdCAqLworCXdoaWxlIChyZWN2KHNpbmst PnN0cmVhbV9mZCwgc2luay0+ZGF0YS0+YnVmZmVyLCAKKwkJCQlzaW5rLT5kYXRhLT5jZmcucGt0 X2xlbiwgTVNHX0RPTlRXQUlUKSA+IDApOworCisJbWVtc2V0KHNpbmstPmRhdGEtPmJ1ZmZlciwg MCwgc2l6ZW9mKHNpbmstPmRhdGEtPmJ1ZmZlcikpOworCisJcmV0dXJuIFRSVUU7Cit9CisKK3N0 YXRpYyB2b2lkIGdzdF9hMmRwX3NpbmtfY29uZl9yZWN2X2RhdGEoR3N0QTJkcFNpbmsgKnNpbmsp Cit7CisJLyogCisJICogV2UgaG9sZCB0aGUgbG9jaywgc2luY2Ugd2UgY2FuIHNlbmQgYSBzaWdu YWwuCisJICogSXQgaXMgYSBnb29kIHByYWN0aWNlLCBhY2NvcmRpbmcgdG8gdGhlIGdsaWIgYXBp LgorCSAqLworCUdTVF9BMkRQX1NJTktfTVVURVhfTE9DSyhzaW5rKTsKKworCXN3aXRjaCAoc2lu ay0+Y29uX3N0YXRlKSB7CisJCWNhc2UgQ09ORklHVVJJTkdfU0VOVF9DT05GOgorCQkJaWYgKGdz dF9hMmRwX3NpbmtfY29uZl9yZXNwKHNpbmspKSB7CisJCQkJc2luay0+Y29uX3N0YXRlID0gQ09O RklHVVJJTkdfUkNWRF9DT05GX1JTUDsKKwkJCX0gZWxzZSB7CisJCQkJR1NUX0EyRFBfU0lOS19D T05GSUdVUkFUSU9OX0ZBSUwoc2luayk7CisJCQl9CisJCWJyZWFrOworCQljYXNlIENPTkZJR1VS SU5HX1JDVkRfQ09ORl9SU1A6CisJCQlpZiAoZ3N0X2EyZHBfc2lua19jb25mX3JlY3ZfZGV2X2Nv bmYoc2luaykpIHsKKwkJCQlzaW5rLT5jb25fc3RhdGUgPSBDT05GSUdVUklOR19SQ1ZEX0RFVl9D T05GOworCQkJfSBlbHNlIHsKKwkJCQlHU1RfQTJEUF9TSU5LX0NPTkZJR1VSQVRJT05fRkFJTChz aW5rKTsKKwkJCX0KKwkJY2FzZSBDT05GSUdVUklOR19SQ1ZEX0RFVl9DT05GOgorCQkJaWYgKGdz dF9hMmRwX3NpbmtfY29uZl9yZWN2X3N0cmVhbV9mZChzaW5rKSkgeworCQkJCUdTVF9BMkRQX1NJ TktfQ09ORklHVVJBVElPTl9TVUNDRVNTKHNpbmspOworCQkJfSBlbHNlIHsKKwkJCQlHU1RfQTJE UF9TSU5LX0NPTkZJR1VSQVRJT05fRkFJTChzaW5rKTsKKwkJCX0KKwkJYnJlYWs7CisJfQorCisJ R1NUX0EyRFBfU0lOS19NVVRFWF9VTkxPQ0soc2luayk7CisKK30KKworc3RhdGljIGdib29sZWFu IGdzdF9hMmRwX3Npbmtfc2V0X2NhcHMoR3N0QmFzZVNpbmsgKnNlbGYsIEdzdENhcHMgKmNhcHMp Cit7CisJR3N0QTJkcFNpbmsgKnNpbms7CisKKwlzaW5rID0gR1NUX0EyRFBfU0lOSyhzZWxmKTsK KworCUdTVF9BMkRQX1NJTktfTVVURVhfTE9DSyhzaW5rKTsKKwlpZiAoc2luay0+Y29uX3N0YXRl ID09IE5PVF9DT05GSUdVUkVEKSB7CisJCWdzdF9hMmRwX3Npbmtfc3RhcnRfZGV2X2NvbmYoc2lu aywgY2Fwcyk7CisJfQorCUdTVF9BMkRQX1NJTktfTVVURVhfVU5MT0NLKHNpbmspOworCisJcmV0 dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBnYm9vbGVhbiBnc3RfYTJkcF9zaW5rX3VubG9jayhHc3RC YXNlU2luayAqc2VsZikKK3sKKwlnX3ByaW50KCJ1bmxvY2tcbiIpOworCisJcmV0dXJuIEZBTFNF OwogfQogCiBzdGF0aWMgZ2Jvb2xlYW4gc2VydmVyX2NhbGxiYWNrKEdJT0NoYW5uZWwgKmNoYW4s CiAJCQkJCUdJT0NvbmRpdGlvbiBjb25kLCBncG9pbnRlciBkYXRhKQogewotCXByaW50ZigiY2Fs bGJhY2tcbiIpOworCUdzdEEyZHBTaW5rICpzaW5rID0gR1NUX0EyRFBfU0lOSyhkYXRhKTsKKwor CXN3aXRjaCAoY29uZCkgeworCQljYXNlIEdfSU9fSU46CisJCQlpZiAoc2luay0+Y29uX3N0YXRl ICE9IE5PVF9DT05GSUdVUkVEICYmIAorCQkJCQlzaW5rLT5jb25fc3RhdGUgIT0gQ09ORklHVVJF RCkKKwkJCQlnc3RfYTJkcF9zaW5rX2NvbmZfcmVjdl9kYXRhKHNpbmspOworCQkJZWxzZQorCQkJ CUdTVF9XQVJOSU5HX09CSkVDVChzaW5rLCAiVW5leHBlY3RlZCBkYXRhIHJlY2VpdmVkIik7CisJ CQlicmVhazsKKwkJY2FzZSBHX0lPX0hVUDoKKwkJCWdfcHJpbnQoImNhbGxiYWNrIEdfSU9fSFVQ XG4iKTsKKwkJCWJyZWFrOworCQljYXNlIEdfSU9fRVJSOgorCQkJZ19wcmludCgiY2FsbGJhY2sg R19JT19FUlJcbiIpOworCQkJYnJlYWs7CisJCWNhc2UgR19JT19OVkFMOgorCQkJZ19wcmludCgi Y2FsbGJhY2sgR19JT19OVkFMXG4iKTsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJZ19wcmlu dCgidW5leHBlY3RlZCBjYWxsYmFja1xuIik7CisJCQlicmVhazsKKworCX0KIAogCXJldHVybiBU UlVFOwogfQpAQCAtMTg3LDIxICs3MTAsMjIgQEAKIHN0YXRpYyB2b2lkIGdzdF9hMmRwX3Npbmtf Y2xhc3NfaW5pdChHc3RBMmRwU2lua0NsYXNzICprbGFzcykKIHsKIAlHT2JqZWN0Q2xhc3MgKm9i amVjdF9jbGFzcyA9IEdfT0JKRUNUX0NMQVNTKGtsYXNzKTsKLQlHc3RBdWRpb1NpbmtDbGFzcyAq YXVkaW9zaW5rX2NsYXNzID0gR1NUX0FVRElPX1NJTktfQ0xBU1Moa2xhc3MpOworCUdzdEJhc2VT aW5rQ2xhc3MgKmJhc2VzaW5rX2NsYXNzID0gR1NUX0JBU0VfU0lOS19DTEFTUyhrbGFzcyk7CiAK IAlwYXJlbnRfY2xhc3MgPSBnX3R5cGVfY2xhc3NfcGVla19wYXJlbnQoa2xhc3MpOwogCiAJb2Jq ZWN0X2NsYXNzLT5maW5hbGl6ZSA9IEdTVF9ERUJVR19GVU5DUFRSKGdzdF9hMmRwX3NpbmtfZmlu YWxpemUpOwotCW9iamVjdF9jbGFzcy0+c2V0X3Byb3BlcnR5ID0gR1NUX0RFQlVHX0ZVTkNQVFIo Z3N0X2EyZHBfc2lua19zZXRfcHJvcGVydHkpOwotCW9iamVjdF9jbGFzcy0+Z2V0X3Byb3BlcnR5 ID0gR1NUX0RFQlVHX0ZVTkNQVFIoZ3N0X2EyZHBfc2lua19nZXRfcHJvcGVydHkpOwotCi0JYXVk aW9zaW5rX2NsYXNzLT5vcGVuID0gR1NUX0RFQlVHX0ZVTkNQVFIoZ3N0X2EyZHBfc2lua19vcGVu KTsKLQlhdWRpb3NpbmtfY2xhc3MtPnByZXBhcmUgPSBHU1RfREVCVUdfRlVOQ1BUUihnc3RfYTJk cF9zaW5rX3ByZXBhcmUpOwotCWF1ZGlvc2lua19jbGFzcy0+dW5wcmVwYXJlID0gR1NUX0RFQlVH X0ZVTkNQVFIoZ3N0X2EyZHBfc2lua191bnByZXBhcmUpOwotCWF1ZGlvc2lua19jbGFzcy0+Y2xv c2UgPSBHU1RfREVCVUdfRlVOQ1BUUihnc3RfYTJkcF9zaW5rX2Nsb3NlKTsKLQlhdWRpb3Npbmtf Y2xhc3MtPndyaXRlID0gR1NUX0RFQlVHX0ZVTkNQVFIoZ3N0X2EyZHBfc2lua193cml0ZSk7Ci0J YXVkaW9zaW5rX2NsYXNzLT5kZWxheSA9IEdTVF9ERUJVR19GVU5DUFRSKGdzdF9hMmRwX3Npbmtf ZGVsYXkpOwotCWF1ZGlvc2lua19jbGFzcy0+cmVzZXQgPSBHU1RfREVCVUdfRlVOQ1BUUihnc3Rf YTJkcF9zaW5rX3Jlc2V0KTsKKwlvYmplY3RfY2xhc3MtPnNldF9wcm9wZXJ0eSA9IEdTVF9ERUJV R19GVU5DUFRSKAorCQkJCQlnc3RfYTJkcF9zaW5rX3NldF9wcm9wZXJ0eSk7CisJb2JqZWN0X2Ns YXNzLT5nZXRfcHJvcGVydHkgPSBHU1RfREVCVUdfRlVOQ1BUUigKKwkJCQkJZ3N0X2EyZHBfc2lu a19nZXRfcHJvcGVydHkpOworCisJYmFzZXNpbmtfY2xhc3MtPnN0YXJ0ID0gR1NUX0RFQlVHX0ZV TkNQVFIoZ3N0X2EyZHBfc2lua19zdGFydCk7CisJYmFzZXNpbmtfY2xhc3MtPnN0b3AgPSBHU1Rf REVCVUdfRlVOQ1BUUihnc3RfYTJkcF9zaW5rX3N0b3ApOworCWJhc2VzaW5rX2NsYXNzLT5yZW5k ZXIgPSBHU1RfREVCVUdfRlVOQ1BUUihnc3RfYTJkcF9zaW5rX3JlbmRlcik7CisJYmFzZXNpbmtf Y2xhc3MtPnByZXJvbGwgPSBHU1RfREVCVUdfRlVOQ1BUUihnc3RfYTJkcF9zaW5rX3ByZXJvbGwp OworCWJhc2VzaW5rX2NsYXNzLT5zZXRfY2FwcyA9IEdTVF9ERUJVR19GVU5DUFRSKGdzdF9hMmRw X3Npbmtfc2V0X2NhcHMpOworCWJhc2VzaW5rX2NsYXNzLT51bmxvY2sgPSBHU1RfREVCVUdfRlVO Q1BUUihnc3RfYTJkcF9zaW5rX3VubG9jayk7CiAKIAlnX29iamVjdF9jbGFzc19pbnN0YWxsX3By b3BlcnR5KG9iamVjdF9jbGFzcywgUFJPUF9ERVZJQ0UsCiAJCQkJZ19wYXJhbV9zcGVjX3N0cmlu ZygiZGV2aWNlIiwgIkRldmljZSIsCkBAIC0yMTUsMTUgKzczOSwyMyBAQAogc3RhdGljIHZvaWQg Z3N0X2EyZHBfc2lua19pbml0KEdzdEEyZHBTaW5rICpzZWxmLCBHc3RBMmRwU2lua0NsYXNzICpr bGFzcykKIHsKIAlzdHJ1Y3Qgc29ja2FkZHJfdW4gYWRkciA9IHsgQUZfVU5JWCwgSVBDX1NPQ0tF VF9OQU1FIH07Ci0JaW50IHNrOworCWdpbnQgc2s7CisJZ2ludCBlcnI7CiAKIAlzZWxmLT5kZXZp Y2UgPSBnX3N0cmR1cChERUZBVUxUX0RFVklDRSk7CiAKIAlzayA9IHNvY2tldChQRl9MT0NBTCwg U09DS19TVFJFQU0sIDApOwotCWlmIChzayA8IDApCisJaWYgKHNrIDwgMCkgeworCQllcnIgPSBl cnJubzsKKwkJR1NUX0VSUk9SX09CSkVDVChzZWxmLCAiQ2Fubm90IG9wZW4gc29ja2V0OiAlcyAo JWQpIiwgCisJCQlzdHJlcnJvcihlcnIpLCBlcnIpOwogCQlyZXR1cm47CisJfQogCiAJaWYgKGNv bm5lY3Qoc2ssIChzdHJ1Y3Qgc29ja2FkZHIgKikgJmFkZHIsIHNpemVvZihhZGRyKSkgPCAwKSB7 CisJCWVyciA9IGVycm5vOworCQlHU1RfRVJST1JfT0JKRUNUKHNlbGYsICJDb25uZWN0aW9uIGZh aWwgJXMgKCVkKSIsIAorCQkJc3RyZXJyb3IoZXJyKSwgZXJyKTsKIAkJY2xvc2Uoc2spOwogCQly ZXR1cm47CiAJfQpAQCAtMjMzLDUgKzc2NSwyNCBAQAogCWdfaW9fYWRkX3dhdGNoKHNlbGYtPnNl cnZlciwgR19JT19JTiB8IEdfSU9fSFVQIHwgR19JT19FUlIgfCBHX0lPX05WQUwsCiAJCQkJCQkJ c2VydmVyX2NhbGxiYWNrLCBzZWxmKTsKIAotCWdfaW9fY2hhbm5lbF91bnJlZihzZWxmLT5zZXJ2 ZXIpOworCXNlbGYtPmRhdGEgPSBnX25ldzAoc3RydWN0IGJsdWV0b290aF9kYXRhLCAxKTsKKwlt ZW1zZXQoc2VsZi0+ZGF0YSwgMCwgc2l6ZW9mKHN0cnVjdCBibHVldG9vdGhfZGF0YSkpOworCisJ c2VsZi0+ZGF0YS0+cGlwZWZkWzBdID0gLTE7CisJc2VsZi0+ZGF0YS0+cGlwZWZkWzFdID0gLTE7 CisKKwlpZiAocGlwZShzZWxmLT5kYXRhLT5waXBlZmQpIDwgMCkKKwkJR1NUX0VSUk9SX09CSkVD VChzZWxmLCAiJXMgKCVkKSIsIHN0cmVycm9yKGVycm5vKSwgZXJybm8pOworCWlmIChmY250bChz ZWxmLT5kYXRhLT5waXBlZmRbMF0sIEZfU0VURkwsIE9fTk9OQkxPQ0spIDwgMCkKKwkJR1NUX0VS Uk9SX09CSkVDVChzZWxmLCAiJXMgKCVkKSIsIHN0cmVycm9yKGVycm5vKSwgZXJybm8pOworCWlm IChmY250bChzZWxmLT5kYXRhLT5waXBlZmRbMV0sIEZfU0VURkwsIE9fTk9OQkxPQ0spIDwgMCkK KwkJR1NUX0VSUk9SX09CSkVDVChzZWxmLCAiJXMgKCVkKSIsIHN0cmVycm9yKGVycm5vKSwgZXJy bm8pOworCisJc2VsZi0+c3RyZWFtX2ZkID0gLTE7CisJc2VsZi0+Y29uX3N0YXRlID0gTk9UX0NP TkZJR1VSRUQ7CisKKwlzZWxmLT5jb25fY29uZl9lbmQgPSBnX2NvbmRfbmV3KCk7CisJc2VsZi0+ d2FpdGluZ19jb25fY29uZiA9IEZBTFNFOworCXNlbGYtPnNpbmtfbG9jayA9IGdfbXV0ZXhfbmV3 KCk7CisKIH0KSW5kZXg6IGF1ZGlvL2dzdGEyZHBzaW5rLmgKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTog L2N2c3Jvb3QvYmx1ZXovdXRpbHMvYXVkaW8vZ3N0YTJkcHNpbmsuaCx2CnJldHJpZXZpbmcgcmV2 aXNpb24gMS4zCmRpZmYgLXUgLXIxLjMgZ3N0YTJkcHNpbmsuaAotLS0gYXVkaW8vZ3N0YTJkcHNp bmsuaAkyNiBBdWcgMjAwNyAxNDoxNDozNCAtMDAwMAkxLjMKKysrIGF1ZGlvL2dzdGEyZHBzaW5r LmgJNSBPY3QgMjAwNyAxODo0OTo0MCAtMDAwMApAQCAtMjIsNyArMjIsNyBAQAogICovCiAKICNp bmNsdWRlIDxnc3QvZ3N0Lmg+Ci0jaW5jbHVkZSA8Z3N0L2F1ZGlvL2dzdGF1ZGlvc2luay5oPgor I2luY2x1ZGUgPGdzdC9iYXNlL2dzdGJhc2VzaW5rLmg+CiAKIEdfQkVHSU5fREVDTFMKIApAQCAt MzcsMTkgKzM3LDQxIEBACiAjZGVmaW5lIEdTVF9JU19BMkRQX1NJTktfQ0xBU1Mob2JqKSBcCiAJ KEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksR1NUX1RZUEVfQTJEUF9TSU5LKSkKIAor ZW51bSB7CisJTk9UX0NPTkZJR1VSRUQsCisJQ09ORklHVVJJTkdfSU5JVCwKKwlDT05GSUdVUklO R19TRU5UX0NPTkYsCisJQ09ORklHVVJJTkdfUkNWRF9DT05GX1JTUCwKKwlDT05GSUdVUklOR19S Q1ZEX0RFVl9DT05GLAorCUNPTkZJR1VSRUQKK307CisKIHR5cGVkZWYgc3RydWN0IF9Hc3RBMmRw U2luayBHc3RBMmRwU2luazsKIHR5cGVkZWYgc3RydWN0IF9Hc3RBMmRwU2lua0NsYXNzIEdzdEEy ZHBTaW5rQ2xhc3M7CiAKK3N0cnVjdCBibHVldG9vdGhfZGF0YTsKKwogc3RydWN0IF9Hc3RBMmRw U2luayB7Ci0JR3N0QXVkaW9TaW5rIHNpbms7CisJR3N0QmFzZVNpbmsgc2luazsKIAogCWdjaGFy ICpkZXZpY2U7CisJZ2ludCBzdHJlYW1fZmQ7CiAKKwlzdHJ1Y3QgYmx1ZXRvb3RoX2RhdGEgKmRh dGE7CiAJR0lPQ2hhbm5lbCAqc2VydmVyOworCisJZ2ludCBjb25fc3RhdGU7CisKKwlHQ29uZCAq Y29uX2NvbmZfZW5kOworCWdib29sZWFuIHdhaXRpbmdfY29uX2NvbmY7CisJR011dGV4ICpzaW5r X2xvY2s7CisKKwlnaW50IHRvdGFsOworCiB9OwogCiBzdHJ1Y3QgX0dzdEEyZHBTaW5rQ2xhc3Mg ewotCUdzdEF1ZGlvU2lua0NsYXNzIHBhcmVudF9jbGFzczsKKwlHc3RCYXNlU2lua0NsYXNzIHBh cmVudF9jbGFzczsKIH07CiAKIEdUeXBlIGdzdF9hMmRwX3NpbmtfZ2V0X3R5cGUodm9pZCk7Cg== ------=_Part_39479_22667444.1191612984961 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline ------------------------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/ ------=_Part_39479_22667444.1191612984961 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Bluez-devel mailing list Bluez-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/bluez-devel ------=_Part_39479_22667444.1191612984961--