Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 13 Feb 2009 17:17:53 -0800
From:      Maksim Yevmenkin <maksim.yevmenkin@gmail.com>
To:        Iain Hibbert <plunky@rya-online.net>
Cc:        "freebsd-bluetooth@freebsd.org" <freebsd-bluetooth@freebsd.org>
Subject:   Re: libhci
Message-ID:  <bb4a86c70902131717o2ccc1fd2nd73f84b1a7765152@mail.gmail.com>
In-Reply-To: <1233919880.530235.10843.nullmailer@galant.ukfsn.org>
References:  <1233365217.00068654.1233354838@10.7.7.3> <4988DCCC.80201@mavhome.dp.ua> <bb4a86c70902031622hdc5231g1c9ce33f17842a1e@mail.gmail.com> <4988EBAC.3080202@mavhome.dp.ua> <bb4a86c70902031731q83bf261s49e5812a3c208f81@mail.gmail.com> <1233758519.360141.162.nullmailer@galant.ukfsn.org> <bb4a86c70902041000t26ad9b66q94a32ff37cfb7f4b@mail.gmail.com> <1233845167.798942.24919.nullmailer@galant.ukfsn.org> <bb4a86c70902051001j53f52e3dhb2e80e393b936f16@mail.gmail.com> <1233919880.530235.10843.nullmailer@galant.ukfsn.org>

next in thread | previous in thread | raw e-mail | index | archive | help
--00151750e7f008ccc00462d6b947
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

Iain,

>> anyway, what would you suggest to use instead of dev_id? device name
>> (i.e. ubt0)? anything else? cant use bd_addr because (in freebsd at
>> least) device has to be "initialized" before bd_addr is known.
>
> for sure, a generic API would need to use the device name. Internally it
> can translate to whatever the local hardware control API uses.
>
>> i will take a look at ms api. but surely we have ability to send and
>> receive hci commands/events and enumerate all radios in the system in
>> addition to inquiry, dont you think?
>
> enumerating the radios is useful, yes, but having a function to set the
> afh_map or some other setting?  I think that this is only required by the
> administrator program (hccontrol in your case) so why does it need to be
> in a shared library?
>
> In a way, its similar for the string functions. What program needs to be
> able to print the features list?  Only a shell based admin tool in
> reality, even a graphical program might want to provide such a feature
> list in a different format anyway..

i kinda started to work on hci/bluetooth shims. please take a look at
the attached patch. this is basically to implement bt_devname() and
bt_devaddr() similar to netbsd and i also added bt_hci_devinfo() and
bt_hci_devenum() inspired by linux-bluez.

i also plan to add bt_hci_devinquiry() and possibly bt_hci_devreq(),
bt_hci_devsend() and bt_hci_devrecv(). the later 2 are to send command
and receive event only.

thanks,
max

--00151750e7f008ccc00462d6b947
Content-Type: text/plain; charset=US-ASCII; name="bluetooth.diff.txt"
Content-Disposition: attachment; filename="bluetooth.diff.txt"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_fr5liqvf0

SW5kZXg6IGRldi5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGRldi5jCShyZXZpc2lvbiAwKQorKysgZGV2LmMJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBkZXYuYworICovCisKKy8qLQor
ICogQ29weXJpZ2h0IChjKSAyMDA5IE1ha3NpbSBZZXZtZW5raW4gPG1fZXZtZW5raW5AeWFob28u
Y29tPgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICoKKyAqICRGcmVlQlNEJAorICovCisKKyNpbmNs
dWRlIDxibHVldG9vdGguaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5o
PgorCitzdHJ1Y3QgYnRfZGV2YWRkcl9tYXRjaF9hcmcKK3sKKwljaGFyCQlkZXZuYW1lW0hDSV9E
RVZOQU1FX1NJWkVdOworCWJkYWRkcl90IGNvbnN0CSpiZGFkZHI7Cit9OworCitzdGF0aWMgYnRf
aGNpX2RldmVudW1fY2JfdAlidF9kZXZhZGRyX21hdGNoOworCitpbnQKK2J0X2RldmFkZHIoY2hh
ciBjb25zdCAqZGV2bmFtZSwgYmRhZGRyX3QgKmFkZHIpCit7CisJc3RydWN0IGJ0X2hjaV9kZXZp
bmZvCWRpOworCisJaWYgKGJ0X2hjaV9kZXZpbmZvKGRldm5hbWUsICZkaSkgPCAwKQorCQlyZXR1
cm4gKDApOworCisJaWYgKGFkZHIgIT0gTlVMTCkKKwkJYmRhZGRyX2NvcHkoYWRkciwgJmRpLmJk
YWRkcik7CisKKwlyZXR1cm4gKDEpOworfQorCitpbnQKK2J0X2Rldm5hbWUoY2hhciAqZGV2bmFt
ZSwgYmRhZGRyX3QgY29uc3QgKmFkZHIpCit7CisJc3RydWN0IGJ0X2RldmFkZHJfbWF0Y2hfYXJn
CWFyZzsKKworCW1lbXNldCgmYXJnLCAwLCBzaXplb2YoYXJnKSk7CisJYXJnLmJkYWRkciA9IGFk
ZHI7CisKKwlpZiAoYnRfaGNpX2RldmVudW0oMCwgJmJ0X2RldmFkZHJfbWF0Y2gsICZhcmcpIDwg
MCkKKwkJcmV0dXJuICgwKTsKKwkKKwlpZiAoYXJnLmRldm5hbWVbMF0gPT0gJ1wwJykgeworCQll
cnJubyA9IEVOWElPOworCQlyZXR1cm4gKDApOworCX0KKworCWlmIChkZXZuYW1lICE9IE5VTEwp
CisJCXN0cmxjcHkoZGV2bmFtZSwgYXJnLmRldm5hbWUsIEhDSV9ERVZOQU1FX1NJWkUpOworCisJ
cmV0dXJuICgxKTsKK30KKworc3RhdGljIGludAorYnRfZGV2YWRkcl9tYXRjaChpbnQgcywgc3Ry
dWN0IGJ0X2hjaV9kZXZpbmZvIGNvbnN0ICpkaSwgdm9pZCAqYXJnKQoreworCXN0cnVjdCBidF9k
ZXZhZGRyX21hdGNoX2FyZwkqbSA9IChzdHJ1Y3QgYnRfZGV2YWRkcl9tYXRjaF9hcmcgKilhcmc7
CisKKwlpZiAoIWJkYWRkcl9zYW1lKCZkaS0+YmRhZGRyLCBtLT5iZGFkZHIpKQorCQlyZXR1cm4g
KDApOworCisJc3RybGNweShtLT5kZXZuYW1lLCBkaS0+ZGV2bmFtZSwgc2l6ZW9mKG0tPmRldm5h
bWUpKTsKKworCXJldHVybiAoMSk7Cit9CisKSW5kZXg6IGhjaS5jCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGhj
aS5jCShyZXZpc2lvbiAwKQorKysgaGNpLmMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjQ2IEBA
CisvKgorICogaGNpLmMKKyAqLworCisvKi0KKyAqIENvcHlyaWdodCAoYykgMjAwOSBNYWtzaW0g
WWV2bWVua2luIDxtX2V2bWVua2luQHlhaG9vLmNvbT4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9S
IEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBB
VVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAq
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisg
KiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAq
CisgKiAkRnJlZUJTRCQKKyAqLworCisjaW5jbHVkZSA8Ymx1ZXRvb3RoLmg+CisjaW5jbHVkZSA8
c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNs
dWRlIDx1bmlzdGQuaD4KKworc3RhdGljIGNoYXIgKiBidF9oY2lfZGV2Mm5vZGUgKGNoYXIgY29u
c3QgKmRldm5hbWUsIGNoYXIgKm5vZGVuYW1lLCBpbnQgbm5sZW4pOworCitpbnQKK2J0X2hjaV9k
ZXZpbmZvKGNoYXIgY29uc3QgKmRldm5hbWUsIHN0cnVjdCBidF9oY2lfZGV2aW5mbyAqZGkpCit7
CisJdW5pb24geworCQlzdHJ1Y3QgbmdfYnRzb2NrZXRfaGNpX3Jhd19ub2RlX3N0YXRlCQlyMDsK
KwkJc3RydWN0IG5nX2J0c29ja2V0X2hjaV9yYXdfbm9kZV9iZGFkZHIJCXIxOworCQlzdHJ1Y3Qg
bmdfYnRzb2NrZXRfaGNpX3Jhd19ub2RlX2ZlYXR1cmVzCXIyOworCQlzdHJ1Y3QgbmdfYnRzb2Nr
ZXRfaGNpX3Jhd19ub2RlX2J1ZmZlcgkJcjM7CisJCXN0cnVjdCBuZ19idHNvY2tldF9oY2lfcmF3
X25vZGVfc3RhdAkJcjQ7CisJCXN0cnVjdCBuZ19idHNvY2tldF9oY2lfcmF3X25vZGVfbGlua19w
b2xpY3lfbWFzayByNTsKKwkJc3RydWN0IG5nX2J0c29ja2V0X2hjaV9yYXdfbm9kZV9wYWNrZXRf
bWFzawlyNjsKKwkJc3RydWN0IG5nX2J0c29ja2V0X2hjaV9yYXdfbm9kZV9yb2xlX3N3aXRjaAly
NzsKKwkJc3RydWN0IG5nX2J0c29ja2V0X2hjaV9yYXdfbm9kZV9kZWJ1ZwkJcjg7CisJfQkJCQkJ
CXJwOworCXN0cnVjdCBzb2NrYWRkcl9oY2kJCQkJaGE7CisJaW50CQkJCQkJcywgc3VjY2VzczsK
KworCWlmIChkZXZuYW1lID09IE5VTEwgfHwgZGkgPT0gTlVMTCkgeworCQllcnJubyA9IEVJTlZB
TDsKKwkJcmV0dXJuICgwKTsKKwl9CisKKwltZW1zZXQoJmhhLCAwLCBzaXplb2YoaGEpKTsKKwlo
YS5oY2lfbGVuID0gc2l6ZW9mKGhhKTsKKwloYS5oY2lfZmFtaWx5ID0gQUZfQkxVRVRPT1RIOwor
CisJaWYgKGJ0X2F0b24oZGV2bmFtZSwgJnJwLnIxLmJkYWRkcikpIHsKKwkJaWYgKCFidF9kZXZu
YW1lKGhhLmhjaV9ub2RlLCAmcnAucjEuYmRhZGRyKSkKKwkJCXJldHVybiAoMCk7CisJfSBlbHNl
IGlmIChidF9oY2lfZGV2Mm5vZGUoZGV2bmFtZSwgaGEuaGNpX25vZGUsCisJCQkJCXNpemVvZiho
YS5oY2lfbm9kZSkpID09IE5VTEwpIHsKKwkJZXJybm8gPSBFTlhJTzsKKwkJcmV0dXJuICgwKTsK
Kwl9CisKKwlzID0gc29ja2V0KFBGX0JMVUVUT09USCwgU09DS19SQVcsIEJMVUVUT09USF9QUk9U
T19IQ0kpOworCWlmIChzIDwgMCkKKwkJcmV0dXJuICgwKTsKKworCXN1Y2Nlc3MgPSAwOworCisJ
aWYgKGJpbmQocywgKHN0cnVjdCBzb2NrYWRkciAqKSAmaGEsIHNpemVvZihoYSkpIDwgMCB8fAor
CSAgICBjb25uZWN0KHMsIChzdHJ1Y3Qgc29ja2FkZHIgKikgJmhhLCBzaXplb2YoaGEpKSA8IDAp
CisJCWdvdG8gYmFkOworCXN0cmxjcHkoZGktPmRldm5hbWUsIGhhLmhjaV9ub2RlLCBzaXplb2Yo
ZGktPmRldm5hbWUpKTsKKworCWlmIChpb2N0bChzLCBTSU9DX0hDSV9SQVdfTk9ERV9HRVRfU1RB
VEUsICZycC5yMCwgc2l6ZW9mKHJwLnIwKSkgPCAwKQorCQlnb3RvIGJhZDsKKwlkaS0+c3RhdGUg
PSBycC5yMC5zdGF0ZTsKKworCWlmIChpb2N0bChzLCBTSU9DX0hDSV9SQVdfTk9ERV9HRVRfQkRB
RERSLCAmcnAucjEsIHNpemVvZihycC5yMSkpIDwgMCkKKwkJZ290byBiYWQ7CisJYmRhZGRyX2Nv
cHkoJmRpLT5iZGFkZHIsICZycC5yMS5iZGFkZHIpOworCQorCWlmIChpb2N0bChzLCBTSU9DX0hD
SV9SQVdfTk9ERV9HRVRfRkVBVFVSRVMsICZycC5yMiwgc2l6ZW9mKHJwLnIyKSkgPCAwKQorCQln
b3RvIGJhZDsKKwltZW1jcHkoZGktPmZlYXR1cmVzLCBycC5yMi5mZWF0dXJlcywgc2l6ZW9mKGRp
LT5mZWF0dXJlcykpOworCisJaWYgKGlvY3RsKHMsIFNJT0NfSENJX1JBV19OT0RFX0dFVF9CVUZG
RVIsICZycC5yMywgc2l6ZW9mKHJwLnIzKSkgPCAwKQorCQlnb3RvIGJhZDsKKwlkaS0+Y21kX2Zy
ZWUgPSBycC5yMy5idWZmZXIuY21kX2ZyZWU7CisJZGktPnNjb19zaXplID0gcnAucjMuYnVmZmVy
LnNjb19zaXplOworCWRpLT5zY29fcGt0cyA9IHJwLnIzLmJ1ZmZlci5zY29fcGt0czsKKwlkaS0+
c2NvX2ZyZWUgPSBycC5yMy5idWZmZXIuc2NvX2ZyZWU7CisJZGktPmFjbF9zaXplID0gcnAucjMu
YnVmZmVyLmFjbF9zaXplOworCWRpLT5hY2xfcGt0cyA9IHJwLnIzLmJ1ZmZlci5hY2xfcGt0czsK
KwlkaS0+YWNsX2ZyZWUgPSBycC5yMy5idWZmZXIuYWNsX2ZyZWU7CisKKwlpZiAoaW9jdGwocywg
U0lPQ19IQ0lfUkFXX05PREVfR0VUX1NUQVQsICZycC5yNCwgc2l6ZW9mKHJwLnI0KSkgPCAwKQor
CQlnb3RvIGJhZDsKKwlkaS0+Y21kX3NlbnQgPSBycC5yNC5zdGF0LmNtZF9zZW50OworCWRpLT5l
dm50X3JlY3YgPSBycC5yNC5zdGF0LmV2bnRfcmVjdjsKKwlkaS0+YWNsX3JlY3YgPSBycC5yNC5z
dGF0LmFjbF9yZWN2OworCWRpLT5hY2xfc2VudCA9IHJwLnI0LnN0YXQuYWNsX3NlbnQ7CisJZGkt
PnNjb19yZWN2ID0gcnAucjQuc3RhdC5zY29fcmVjdjsKKwlkaS0+c2NvX3NlbnQgPSBycC5yNC5z
dGF0LnNjb19zZW50OworCWRpLT5ieXRlc19yZWN2ID0gcnAucjQuc3RhdC5ieXRlc19yZWN2Owor
CWRpLT5ieXRlc19zZW50ID0gcnAucjQuc3RhdC5ieXRlc19zZW50OworCisJaWYgKGlvY3RsKHMs
IFNJT0NfSENJX1JBV19OT0RFX0dFVF9MSU5LX1BPTElDWV9NQVNLLAorCQkJJnJwLnI1LCBzaXpl
b2YocnAucjUpKSA8IDApCisJCWdvdG8gYmFkOworCWRpLT5saW5rX3BvbGljeV9pbmZvID0gcnAu
cjUucG9saWN5X21hc2s7CisKKwlpZiAoaW9jdGwocywgU0lPQ19IQ0lfUkFXX05PREVfR0VUX1BB
Q0tFVF9NQVNLLAorCQkJJnJwLnI2LCBzaXplb2YocnAucjYpKSA8IDApCisJCWdvdG8gYmFkOwor
CWRpLT5wYWNrZXRfdHlwZV9pbmZvID0gcnAucjYucGFja2V0X21hc2s7CisKKwkgaWYgKGlvY3Rs
KHMsIFNJT0NfSENJX1JBV19OT0RFX0dFVF9ST0xFX1NXSVRDSCwKKwkJCSZycC5yNywgc2l6ZW9m
KHJwLnI3KSkgPCAwKQorCQlnb3RvIGJhZDsKKwlkaS0+cm9sZV9zd2l0Y2hfaW5mbyA9IHJwLnI3
LnJvbGVfc3dpdGNoOworCisJaWYgKGlvY3RsKHMsIFNJT0NfSENJX1JBV19OT0RFX0dFVF9ERUJV
RywgJnJwLnI4LCBzaXplb2YocnAucjgpKSA8IDApCisJCWdvdG8gYmFkOworCWRpLT5kZWJ1ZyA9
IHJwLnI4LmRlYnVnOworCisJc3VjY2VzcyA9IDE7CitiYWQ6CisJY2xvc2Uocyk7CisKKwlyZXR1
cm4gKHN1Y2Nlc3MpOworfQorCitpbnQKK2J0X2hjaV9kZXZlbnVtKGludCBsaW1pdCwgYnRfaGNp
X2RldmVudW1fY2JfdCBjYiwgdm9pZCAqYXJnKQoreworCXN0cnVjdCBuZ19idHNvY2tldF9oY2lf
cmF3X25vZGVfbGlzdF9uYW1lcwlycDsKKwlzdHJ1Y3QgYnRfaGNpX2RldmluZm8JCQkJZGk7CisJ
c3RydWN0IHNvY2thZGRyX2hjaQkJCQloYTsKKwlpbnQJCQkJCQlzLCBpOworCisJaWYgKGNiID09
IE5VTEwgfHwgbGltaXQgPCAwKSB7CisJCWVycm5vID0gRUlOVkFMOworCQlyZXR1cm4gKDApOwor
CX0KKworCXJwLm51bV9uYW1lcyA9IChsaW1pdCA+IDApPyBsaW1pdCA6IDE2OwkvKiBYWFggd2h5
IDE2Pz8gKi8KKwlycC5uYW1lcyA9IChzdHJ1Y3Qgbm9kZWluZm8gKikgY2FsbG9jKHJwLm51bV9u
YW1lcywKKwkJCQkJCXNpemVvZihzdHJ1Y3Qgbm9kZWluZm8pKTsKKwlpZiAocnAubmFtZXMgPT0g
TlVMTCkgeworCQllcnJubyA9IEVOT01FTTsKKwkJcmV0dXJuICgwKTsKKwl9CisKKwltZW1zZXQo
JmhhLCAwLCBzaXplb2YoaGEpKTsKKwloYS5oY2lfbGVuID0gc2l6ZW9mKGhhKTsKKwloYS5oY2lf
ZmFtaWx5ID0gQUZfQkxVRVRPT1RIOworCWhhLmhjaV9ub2RlWzBdID0gJ3gnOworCisJcyA9IHNv
Y2tldChQRl9CTFVFVE9PVEgsIFNPQ0tfUkFXLCBCTFVFVE9PVEhfUFJPVE9fSENJKTsKKwlpZiAo
cyA8IDApIHsKKwkJZnJlZShycC5uYW1lcyk7CisKKwkJcmV0dXJuICgwKTsKKwl9CisKKwlpZiAo
YmluZChzLCAoc3RydWN0IHNvY2thZGRyICopICZoYSwgc2l6ZW9mKGhhKSkgPCAwIHx8CisJICAg
IGNvbm5lY3QocywgKHN0cnVjdCBzb2NrYWRkciAqKSAmaGEsIHNpemVvZihoYSkpIDwgMCB8fAor
CSAgICBpb2N0bChzLCBTSU9DX0hDSV9SQVdfTk9ERV9MSVNUX05BTUVTLCAmcnAsIHNpemVvZihy
cCkpIDwgMCkgeworCQljbG9zZShzKTsKKwkJZnJlZShycC5uYW1lcyk7CisKKwkJcmV0dXJuICgw
KTsKKwl9CisKKwlmb3IgKGkgPSAwOyBpIDwgcnAubnVtX25hbWVzOyBpICsrKSB7CisJCWlmIChi
dF9oY2lfZGV2aW5mbyhycC5uYW1lc1tpXS5uYW1lLCAmZGkpIDwgMCkKKwkJCWNvbnRpbnVlOwor
CisJCXN0cmxjcHkoaGEuaGNpX25vZGUsIHJwLm5hbWVzW2ldLm5hbWUsIHNpemVvZihoYS5oY2lf
bm9kZSkpOworCisJCWlmIChiaW5kKHMsIChzdHJ1Y3Qgc29ja2FkZHIgKikgJmhhLCBzaXplb2Yo
aGEpKSA8IDAgfHwKKwkJICAgIGNvbm5lY3QocywgKHN0cnVjdCBzb2NrYWRkciAqKSAmaGEsIHNp
emVvZihoYSkpIDwgMCkKKwkJCWNvbnRpbnVlOworCisJCWlmICgoKmNiKShzLCAmZGksIGFyZykg
PiAwKQorCQkJYnJlYWs7CisJfQorCisJY2xvc2UgKHMpOworCWZyZWUocnAubmFtZXMpOworCisJ
cmV0dXJuICgxKTsKK30KKworc3RhdGljIGNoYXIgKgorYnRfaGNpX2RldjJub2RlKGNoYXIgY29u
c3QgKmRldm5hbWUsIGNoYXIgKm5vZGVuYW1lLCBpbnQgbm5sZW4pCit7CisJc3RhdGljIGNoYXIg
Y29uc3QgKgkgYnRfZGV2X3ByZWZpeFtdID0geworCQkiYnRjY2MiLAkvKiAzQ29tIEJsdWV0b290
aCBQQy1DQVJEICovCisJCSJoNCIsCQkvKiBVQVJUL3NlcmlhbCBCbHVldG9vdGggZGV2aWNlcyAq
LworCQkidWJ0IiwJCS8qIEJsdWV0b290aCBVU0IgZGV2aWNlcyAqLworCQlOVUxMCQkvKiBzaG91
bGQgYmUgbGFzdCAqLworCX07CisKKwlzdGF0aWMgY2hhcgkJX25vZGVuYW1lW0hDSV9ERVZOQU1F
X1NJWkVdOworCWNoYXIgY29uc3QJCSoqcDsKKwljaGFyCQkJKmVwOworCWludAkJCXBsZW4sIHVu
aXQ7CisKKwlpZiAobm9kZW5hbWUgPT0gTlVMTCkgeworCQlub2RlbmFtZSA9IF9ub2RlbmFtZTsK
KwkJbm5sZW4gPSBIQ0lfREVWTkFNRV9TSVpFOworCX0KKworCWZvciAocCA9IGJ0X2Rldl9wcmVm
aXg7ICpwICE9IE5VTEw7IHAgKyspIHsKKwkJcGxlbiA9IHN0cmxlbigqcCk7CisJCWlmIChzdHJu
Y21wKGRldm5hbWUsICpwLCBwbGVuKSAhPSAwKQorCQkJY29udGludWU7CisKKwkJdW5pdCA9IHN0
cnRvdWwoZGV2bmFtZSArIHBsZW4sICZlcCwgMTApOworCQlpZiAoKmVwICE9ICdcMCcgJiYKKwkJ
ICAgIHN0cmNtcChlcCwgImhjaSIpICE9IDAgJiYKKwkJICAgIHN0cmNtcChlcCwgImwyY2FwIikg
IT0gMCkKKwkJCXJldHVybiAoTlVMTCk7CS8qIGNhbid0IG1ha2Ugc2Vuc2Ugb2YgZGV2aWNlIG5h
bWUgKi8KKworCQlzbnByaW50Zihub2RlbmFtZSwgbm5sZW4sICIlcyV1aGNpIiwgKnAsIHVuaXQp
OworCisJCXJldHVybiAobm9kZW5hbWUpOworCX0KKworCXJldHVybiAoTlVMTCk7Cit9CisKSW5k
ZXg6IGJsdWV0b290aC4zCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGJsdWV0b290aC4zCShyZXZpc2lvbiAxODgx
MDgpCisrKyBibHVldG9vdGguMwkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLS5cIiBD
b3B5cmlnaHQgKGMpIDIwMDMgTWFrc2ltIFlldm1lbmtpbiA8bV9ldm1lbmtpbkB5YWhvby5jb20+
CisuIENvcHlyaWdodCAoYykgMjAwMy0yMDA5IE1ha3NpbSBZZXZtZW5raW4gPG1fZXZtZW5raW5A
eWFob28uY29tPgogLlwiIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAuXCIKIC5cIiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
QEAgLTI1LDcgKzI1LDcgQEAKIC5cIiAkSWQ6IGJsdWV0b290aC4zLHYgMS41IDIwMDMvMDUvMjAg
MjM6MDQ6MzAgbWF4IEV4cCAkCiAuXCIgJEZyZWVCU0QkCiAuXCIKLS5EZCBBdWd1c3QgMTMsIDIw
MDgKKy5EZCBGZWJydWFyeSAxMywgMjAwOQogLkR0IEJMVUVUT09USCAzCiAuT3MKIC5TaCBOQU1F
CkBAIC03NCw2ICs3NCwxNiBAQAogLkZ0IGNvbnN0IGNoYXIgKgogLkZuIGJ0X250b2EgImNvbnN0
IGJkYWRkcl90ICpiYSIgImNoYXIgKnN0ciIKIC5GdCBpbnQKKy5GbiBidF9kZXZhZGRyICJjb25z
dCBjaGFyICpkZXZuYW1lIiAiYmRhZGRyX3QgKmFkZHIiCisuRnQgaW50CisuRm4gYnRfZGV2bmFt
ZSAiY2hhciAqZGV2bmFtZSIgImNvbnN0IGJkYWRkcl90ICphZGRyIgorLkZ0IGludAorLkZuIChi
dF9oY2lfZGV2ZW51bV9jYl90KSAiaW50IHMiICJzdHJ1Y3QgYnRfaGNpX2RldmluZm8gY29uc3Qg
KmRpIiAidm9pZCAqYXJnIgorLkZ0IGludAorLkZuIGJ0X2hjaV9kZXZpbmZvICJjaGFyIGNvbnN0
ICpkZXZuYW1lIiAic3RydWN0IGJ0X2hjaV9kZXZpbmZvICpkaSIKKy5GdCBpbnQKKy5GbiBidF9o
Y2lfZGV2ZW51bSAiaW50IGxpbWl0IiAiYnRfaGNpX2RldmVudW1fY2JfdCAqY2IiICJ2b2lkICph
cmciCisuRnQgaW50CiAuRm4gYmRhZGRyX3NhbWUgImNvbnN0IGJkYWRkcl90ICphIiAiY29uc3Qg
YmRhZGRyX3QgKmIiCiAuRnQgaW50CiAuRm4gYmRhZGRyX2FueSAiY29uc3QgYmRhZGRyX3QgKmEi
CkBAIC0xOTcsNiArMjA3LDExMyBAQAogSWYgbm8gYnVmZmVyIHdhcyBwcm92aWRlZCB0aGVuIGlu
dGVybmFsIHN0YXRpYyBidWZmZXIgd2lsbCBiZSB1c2VkLgogLlBwCiBUaGUKKy5GbiBidF9kZXZh
ZGRyCitmdW5jdGlvbiBpbnRlcnByZXRzIHRoZSBzcGVjaWZpZWQKKy5GYSBkZXZuYW1lCitzdHJp
bmcgYXMgdGhlIGFkZHJlc3Mgb3IgZGV2aWNlIG5hbWUgb2YgYSBCbHVldG9vdGggZGV2aWNlIG9u
IHRoZSBsb2NhbCBzeXN0ZW0sCithbmQgcGxhY2VzIHRoZSBkZXZpY2UgYWRkcmVzcyBpbiB0aGUg
cHJvdmlkZWQKKy5GYSBiZGFkZHIgLAoraWYgYW55LgorVGhlIGZ1bmN0aW9uIHJldHVybnMgMSBp
ZiB0aGUgc3RyaW5nIHdhcyBzdWNjZXNzZnVsbHkgaW50ZXJwcmV0ZWQsCitvciAwIGlmIHRoZSBz
dHJpbmcgZGlkIG5vdCBtYXRjaCBhbnkgbG9jYWwgZGV2aWNlLgorVGhlCisuRm4gYnRfZGV2bmFt
ZQorZnVuY3Rpb24gdGFrZXMgYSBCbHVldG9vdGggZGV2aWNlIGFkZHJlc3MgYW5kIGNvcGllcyB0
aGUgbG9jYWwgZGV2aWNlCituYW1lIGFzc29jaWF0ZWQgd2l0aCB0aGF0IGFkZHJlc3MgaW50byB0
aGUgYnVmZmVyIHByb3ZpZGVkLAoraWYgYW55LgorQ2FsbGVyIG11c3QgZW5zdXJlIHRoYXQgcHJv
dmlkZWQgYnVmZmVyIGlzIGF0IGxlYXN0CisuRHYgSENJX0RFVk5BTUVfU0laRQorY2hhcmFjdGVy
cyBpbiBzaXplLgorVGhlIGZ1bmN0aW9uIHJldHVybnMgMSB3aGVuIHRoZSBkZXZpY2Ugd2FzIGZv
dW5kLAorb3RoZXJ3aXNlIDAuCisuUHAKK1RoZQorLkZuIGJ0X2hjaV9kZXZpbmZvCitmdW5jdGlv
biBwb3B1bGF0ZXMgcHJvZGl2ZGVkCisuVnQgYnRfaGNpX2RldmluZm8KK3N0cnVjdHVyZSB3aXRo
IHRoZSBpbmZvcm1hdGlvbiBhYm91dCBCbHVldG9vdGggZGV2aWNlCisuRmEgZGV2bmFtZSAuCitU
aGUgZnVuY3Rpb24gcmV0dXJucyAxIHdoZW4gc3VjY2Vzc2Z1bCBvdGhlcndpc2UgMC4KK1RoZQor
LlZ0IGJ0X2hjaV9kZXZpbmZvCitzdHJ1Y3R1cmUgaXMgZGVmaW5lZCBhcyBmb2xsb3dzCisuQmQg
LWxpdGVyYWwgLW9mZnNldCBpbmRlbnQKK3N0cnVjdCBidF9oY2lfZGV2aW5mbworeworICAgICAg
ICBjaGFyICAgICAgICAgICAgZGV2bmFtZVtIQ0lfREVWTkFNRV9TSVpFXTsKKworICAgICAgICB1
aW50MzJfdCAgICAgICAgc3RhdGU7CisKKyAgICAgICAgYmRhZGRyX3QgICAgICAgIGJkYWRkcjsK
KyAgICAgICAgdWludDE2X3QgICAgICAgIF9yZXNlcnZlZDA7CisKKyAgICAgICAgdWludDhfdCAg
ICAgICAgIGZlYXR1cmVzW0hDSV9ERVZGRUFUVVJFU19TSVpFXTsKKworICAgICAgICAvKiBidWZm
ZXIgaW5mbyAqLworICAgICAgICB1aW50MTZfdCAgICAgICAgX3Jlc2VydmVkMTsKKyAgICAgICAg
dWludDE2X3QgICAgICAgIGNtZF9mcmVlOworICAgICAgICB1aW50MTZfdCAgICAgICAgc2NvX3Np
emU7CisgICAgICAgIHVpbnQxNl90ICAgICAgICBzY29fcGt0czsKKyAgICAgICAgdWludDE2X3Qg
ICAgICAgIHNjb19mcmVlOworICAgICAgICB1aW50MTZfdCAgICAgICAgYWNsX3NpemU7CisgICAg
ICAgIHVpbnQxNl90ICAgICAgICBhY2xfcGt0czsKKyAgICAgICAgdWludDE2X3QgICAgICAgIGFj
bF9mcmVlOworCisgICAgICAgIC8qIHN0YXRzICovCisgICAgICAgIHVpbnQzMl90ICAgICAgICBj
bWRfc2VudDsKKyAgICAgICAgdWludDMyX3QgICAgICAgIGV2bnRfcmVjdjsKKyAgICAgICAgdWlu
dDMyX3QgICAgICAgIGFjbF9yZWN2OworICAgICAgICB1aW50MzJfdCAgICAgICAgYWNsX3NlbnQ7
CisgICAgICAgIHVpbnQzMl90ICAgICAgICBzY29fcmVjdjsKKyAgICAgICAgdWludDMyX3QgICAg
ICAgIHNjb19zZW50OworICAgICAgICB1aW50MzJfdCAgICAgICAgYnl0ZXNfcmVjdjsKKyAgICAg
ICAgdWludDMyX3QgICAgICAgIGJ5dGVzX3NlbnQ7CisKKyAgICAgICAgLyogbWlzYy9zcGVjaWZp
YyAqLworICAgICAgICB1aW50MzJfdCAgICAgICAgbGlua19wb2xpY3lfaW5mbzsKKyAgICAgICAg
dWludDMyX3QgICAgICAgIHBhY2tldF90eXBlX2luZm87CisgICAgICAgIHVpbnQzMl90ICAgICAg
ICByb2xlX3N3aXRjaF9pbmZvOworICAgICAgICB1aW50MzJfdCAgICAgICAgZGVidWc7Cit9Owor
LkVkCisuUHAKK1RoZQorLkZuIGJ0X2hjaV9kZXZlbnVtCitmdW5jdGlvbiBlbnVtZXJhdGVzIHVw
IHRvCisuRmEgbGltaXQKK0JsdWV0b290aCBkZXZpY2VzIHByZXNlbnQgaW4gdGhlIHN5c3RlbS4K
K0lmIHBhc3NlZAorLkZhIGxpbWl0CitpcyB6ZXJvLCB0aGUgaW50ZXJuYWwgZGVmYXVsdCBsaW1p
dCB3aWxsIGJlIHVzZWQuCitGb3IgZXZlcnkgZGV2aWNlIGZvdW5kLAordGhlIGZ1bmN0aW9uIHdp
bGwgY2FsbCBwcm92aWRlZAorLkZhIGNiCitjYWxsYmFjayBmdW5jdGlvbiB3aGljaCBzaG91bGQg
YmUgb2YKKy5WdCBidF9oY2lfZGV2ZW51bV9jYl90Cit0eXBlLgorVGhlIGNhbGxiYWNrIGZ1bmN0
aW9uIGlzIHBhc3NlZCBhIGNvbm5lY3RlZAorLkR2IEhDSQorc29ja2V0CisuRmEgcyAsCitmdWxs
eSBwb3B1bGF0ZWQKKy5WdCBidF9oY2lfZGV2aW5mbworc3RydWN0dXJlCisuRmEgZGkKK2FuZAor
LkZhIGFyZworYXJndW1lbnQgcHJvdmlkZWQgdG8gdGhlCisuRm4gYnRfaGNpX2RldmVudW0gLgor
VGhlIGNhbGxiYWNrIGZ1bmN0aW9uIGNhbiBzdG9wIGVudW1lcmF0aW9uIGJ5IHJldHVybmluZyBh
IHZhbHVlIG9mIGxlc3MKK29yIGVxdWFsIHRvIHplcm8uCitUaGUKKy5GbiBidF9oY2lfZGV2ZW51
bQordXNlcyB0aGUgc2FtZSBzb2NrZXQgZm9yIHRoZSBkdXJhdGlvbiBvZiBlbnVtZXJhdGlvbi4K
K1RoZSBmdW5jdGlvbiBndWFyYW50ZWVzIHRoYXQgdGhlIHNvY2tldCwKK3Bhc3NlZCB0byB0aGUg
Y2FsbGJhY2sgZnVuY3Rpb24sCit3aWxsIGJlIGJvdW5kIGFuZCBjb25uZWN0ZWQgdG8gdGhlIEJs
dWV0b290aCBkZXZpY2UgYmVpbmcgZW51bWVyYXRlZC4KK1RoZSBmdW5jdGlvbiByZXR1cm5zIDEg
d2hlbiBlbnVtZXJhdGlvbiB3YXMgc3VjY2Vzc2Z1bCBvdGhlcndpc2UgMC4KKy5QcAorVGhlCiAu
Rm4gYmRhZGRyX3NhbWUgLAogLkZuIGJkYWRkcl9hbnkKIGFuZApAQCAtMjg3LDcgKzQwNCw4IEBA
CiAuWHIgZ2V0cHJvdG9ieW51bWJlciAzICwKIC5YciBoZXJyb3IgMyAsCiAuWHIgaW5ldF9hdG9u
IDMgLAotLlhyIGluZXRfbnRvYSAzCisuWHIgaW5ldF9udG9hIDMgLAorLlhyIG5nX2hjaSA0CiAu
U2ggQ0FWRUFUCiBUaGUKIC5GbiBidF9nZXRob3N0ZW50CkluZGV4OiBibHVldG9vdGguYwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBibHVldG9vdGguYwkocmV2aXNpb24gMTg4MTA4KQorKysgYmx1ZXRvb3RoLmMJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw5IEBACiAvKgogICogYmx1ZXRvb3RoLmMKLSAqCi0g
KiBDb3B5cmlnaHQgKGMpIDIwMDEtMjAwMyBNYWtzaW0gWWV2bWVua2luIDxtX2V2bWVua2luQHlh
aG9vLmNvbT4KKyAqLworCisvKi0KKyAqIENvcHlyaWdodCAoYykgMjAwMS0yMDA5IE1ha3NpbSBZ
ZXZtZW5raW4gPG1fZXZtZW5raW5AeWFob28uY29tPgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKSW5kZXg6IGJsdWV0b290aC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGJsdWV0
b290aC5oCShyZXZpc2lvbiAxODgxMDgpCisrKyBibHVldG9vdGguaAkod29ya2luZyBjb3B5KQpA
QCAtMSw3ICsxLDkgQEAKIC8qCiAgKiBibHVldG9vdGguaAotICoKLSAqIENvcHlyaWdodCAoYykg
MjAwMS0yMDAzIE1ha3NpbSBZZXZtZW5raW4gPG1fZXZtZW5raW5AeWFob28uY29tPgorICovCisK
Ky8qLQorICogQ29weXJpZ2h0IChjKSAyMDAxLTIwMDkgTWFrc2ltIFlldm1lbmtpbiA8bV9ldm1l
bmtpbkB5YWhvby5jb20+CiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dApAQCAtMzUsOSArMzcsMTIgQEAKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDxz
eXMvYml0c3RyaW5nLmg+CiAjaW5jbHVkZSA8c3lzL2VuZGlhbi5oPgorI2luY2x1ZGUgPHN5cy9p
b2N0bC5oPgogI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KICNpbmNsdWRlIDxzeXMvdW4uaD4KKyNp
bmNsdWRlIDxlcnJuby5oPgogI2luY2x1ZGUgPG5ldGRiLmg+CisjaW5jbHVkZSA8bmV0Z3JhcGgv
bmdfbWVzc2FnZS5oPgogI2luY2x1ZGUgPG5ldGdyYXBoL2JsdWV0b290aC9pbmNsdWRlL25nX2hj
aS5oPgogI2luY2x1ZGUgPG5ldGdyYXBoL2JsdWV0b290aC9pbmNsdWRlL25nX2wyY2FwLmg+CiAj
aW5jbHVkZSA8bmV0Z3JhcGgvYmx1ZXRvb3RoL2luY2x1ZGUvbmdfYnRzb2NrZXQuaD4KQEAgLTcy
LDYgKzc3LDYwIEBACiBjaGFyIGNvbnN0ICogICAgICBidF9udG9hICAgICAgICAgICAgIChiZGFk
ZHJfdCBjb25zdCAqYmEsIGNoYXIgKnN0cik7CiBpbnQgICAgICAgICAgICAgICBidF9hdG9uICAg
ICAgICAgICAgIChjaGFyIGNvbnN0ICpzdHIsIGJkYWRkcl90ICpiYSk7CiAKKy8qIGJ0X2RldlhY
WFgoKSBmdW5jdGlvbnMgKGluc3BpcmVkIGJ5IE5ldEJTRCkgKi8KK2ludCAgICAgICAgICAgICAg
IGJ0X2RldmFkZHIgICAgICAgICAgKGNoYXIgY29uc3QgKmRldm5hbWUsIGJkYWRkcl90ICphZGRy
KTsKK2ludCAgICAgICAgICAgICAgIGJ0X2Rldm5hbWUgICAgICAgICAgKGNoYXIgKmRldm5hbWUs
IGJkYWRkcl90IGNvbnN0ICphZGRyKTsKKworLyogCisgKiBCbHVldG9vdGggSENJIGZ1bmN0aW9u
cworICovCisKKyNkZWZpbmUJSENJX0RFVk5BTUVfU0laRQkJTkdfTk9ERVNJWgorI2RlZmluZQlI
Q0lfREVWRkVBVFVSRVNfU0laRQkJTkdfSENJX0ZFQVRVUkVTX1NJWkUKKworc3RydWN0IGJ0X2hj
aV9kZXZpbmZvCit7CisJY2hhcgkJZGV2bmFtZVtIQ0lfREVWTkFNRV9TSVpFXTsKKworCXVpbnQz
Ml90CXN0YXRlOworCisJYmRhZGRyX3QJYmRhZGRyOworCXVpbnQxNl90CV9yZXNlcnZlZDA7CisK
Kwl1aW50OF90CQlmZWF0dXJlc1tIQ0lfREVWRkVBVFVSRVNfU0laRV07CisKKwkvKiBidWZmZXIg
aW5mbyAqLworCXVpbnQxNl90CV9yZXNlcnZlZDE7CisJdWludDE2X3QJY21kX2ZyZWU7CisJdWlu
dDE2X3QJc2NvX3NpemU7CisJdWludDE2X3QJc2NvX3BrdHM7CisJdWludDE2X3QJc2NvX2ZyZWU7
CisJdWludDE2X3QJYWNsX3NpemU7CisJdWludDE2X3QJYWNsX3BrdHM7CisJdWludDE2X3QJYWNs
X2ZyZWU7CisKKwkvKiBzdGF0cyAqLworCXVpbnQzMl90CWNtZF9zZW50OworCXVpbnQzMl90CWV2
bnRfcmVjdjsKKwl1aW50MzJfdAlhY2xfcmVjdjsKKwl1aW50MzJfdAlhY2xfc2VudDsKKwl1aW50
MzJfdAlzY29fcmVjdjsKKwl1aW50MzJfdAlzY29fc2VudDsKKwl1aW50MzJfdAlieXRlc19yZWN2
OworCXVpbnQzMl90CWJ5dGVzX3NlbnQ7CisKKwkvKiBtaXNjL3NwZWNpZmljICovCisJdWludDMy
X3QJbGlua19wb2xpY3lfaW5mbzsKKwl1aW50MzJfdAlwYWNrZXRfdHlwZV9pbmZvOworCXVpbnQz
Ml90CXJvbGVfc3dpdGNoX2luZm87CisJdWludDMyX3QJZGVidWc7Cit9OworCit0eXBlZGVmIGlu
dAkoYnRfaGNpX2RldmVudW1fY2JfdCkoaW50LHN0cnVjdCBidF9oY2lfZGV2aW5mbyBjb25zdCAq
LHZvaWQgKik7CisKK2ludAkJYnRfaGNpX2RldmluZm8gKGNoYXIgY29uc3QgKmRldm5hbWUsIHN0
cnVjdCBidF9oY2lfZGV2aW5mbyAqZGkpOworaW50CQlidF9oY2lfZGV2ZW51bSAoaW50IGxpbWl0
LCBidF9oY2lfZGV2ZW51bV9jYl90ICpjYiwgdm9pZCAqYXJnKTsKKwogLyoKICAqIGJkYWRkciB1
dGlsaXR5IGZ1bmN0aW9ucyAoZnJvbSBOZXRCU0QpCiAgKi8KSW5kZXg6IE1ha2VmaWxlCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIE1ha2VmaWxlCShyZXZpc2lvbiAxODgxMDgpCisrKyBNYWtlZmlsZQkod29ya2lu
ZyBjb3B5KQpAQCAtNyw5ICs3LDExIEBACiBXQVJOUz89CQkyCiBDRkxBR1MrPQktSSR7LkNVUkRJ
Un0gLUkkey5DVVJESVJ9Ly4uLy4uL3N5cwogCitERUJVR19GTEFHUz0JLWcKKwogU0hMSUJfTUFK
T1I9CTMKIAotU1JDUz0JCWJsdWV0b290aC5jCitTUkNTPQkJYmx1ZXRvb3RoLmMgZGV2LmMgaGNp
LmMKIElOQ1M9CQlibHVldG9vdGguaAogCiBNTElOS1MrPQlibHVldG9vdGguMyBidF9nZXRob3N0
YnluYW1lLjMKQEAgLTI3LDYgKzI5LDEyIEBACiBNTElOS1MrPQlibHVldG9vdGguMyBidF9udG9h
LjMKIE1MSU5LUys9CWJsdWV0b290aC4zIGJ0X2F0b24uMwogCitNTElOS1MrPQlibHVldG9vdGgu
MyBidF9kZXZhZGRyLjMKK01MSU5LUys9CWJsdWV0b290aC4zIGJ0X2Rldm5hbWUuMworCitNTElO
S1MrPQlibHVldG9vdGguMyBidF9oY2lfZGV2aW5mby4zCitNTElOS1MrPQlibHVldG9vdGguMyBi
dF9oY2lfZGV2ZW51bS4zCisKIE1MSU5LUys9CWJsdWV0b290aC4zIGJkYWRkcl9zYW1lLjMKIE1M
SU5LUys9CWJsdWV0b290aC4zIGJkYWRkcl9hbnkuMwogTUxJTktTKz0JYmx1ZXRvb3RoLjMgYmRh
ZGRyX2NvcHkuMwo=
--00151750e7f008ccc00462d6b947--



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