RE: [Ebtables-devel] [PATCH 1/2] Add IPv6 support

"Tseng, Kuo-Lang" <[email protected]> Tue, 19 Feb 2008 10:24:45 -0800
Newsgroups gmane.comp.security.firewalls.netfilter.devel,gmane.linux.network.bridge.ebtables.devel
Message-ID <3F25FE8C477E9E4FB3D42C2FF937C08A8D0B66@orsmsx423.amr.corp.intel.com>
This is a multi-part message in MIME format.

------_=_NextPart_001_01C87324.B51F11FC
Content-Type: text/plain;
	charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

Tseng, Kuo-Lang wrote on Monday, February 18, 2008 5:50 PM:

> This is the userspace ebtables patch that implements IPv6 header field
> checking and parsing.
>=20
> Signed-off-by: Kuo-lang Tseng <[email protected]>
>=20

Reposting the patch as an attachment (earlier one had line split. Sorry
about that)






------_=_NextPart_001_01C87324.B51F11FC
Content-Type: application/octet-stream;
	name="ebtables.patch"
Content-Transfer-Encoding: base64
Content-Description: ebtables.patch
Content-Disposition: attachment;
	filename="ebtables.patch"

ZGlmZiAtdXJOcCBlYnRhYmxlcy12Mi4wLjgtMi5vcmlnL2VidGFibGVzLjggZWJ0YWJsZXMtdjIu
MC44LTIuaXB2Ni9lYnRhYmxlcy44Ci0tLSBlYnRhYmxlcy12Mi4wLjgtMi5vcmlnL2VidGFibGVz
LjgJMjAwNy0wOS0yMSAxMDoyNzoyMC4wMDAwMDAwMDAgLTA3MDAKKysrIGVidGFibGVzLXYyLjAu
OC0yLmlwdjYvZWJ0YWJsZXMuOAkyMDA4LTAyLTE4IDE1OjQwOjMxLjAwMDAwMDAwMCAtMDgwMApA
QCAtNjUyLDYgKzY1Miw1NCBAQCBJZgogVGhlIGZsYWcKIC5CIC0taXAtZHBvcnQKIGlzIGFuIGFs
aWFzIGZvciB0aGlzIG9wdGlvbi4KKy5TUyBpcHY2CitTcGVjaWZ5IElQdjYgZmllbGRzLiBUaGUg
cHJvdG9jb2wgbXVzdCBiZSBzcGVjaWZpZWQgYXMKKy5JUiBJUHY2IC4KKy5UUAorLkJSICItLWlw
Ni1zb3VyY2UgIiAiWyFdIFxmSWFkZHJlc3NcZlBbL1xmSW1hc2tcZlBdIgorVGhlIHNvdXJjZSBJ
UHY2IGFkZHJlc3MuCitUaGUgZmxhZworLkIgLS1pcDYtc3JjCitpcyBhbiBhbGlhcyBmb3IgdGhp
cyBvcHRpb24uCisuVFAKKy5CUiAiLS1pcDYtZGVzdGluYXRpb24gIiAiWyFdIFxmSWFkZHJlc3Nc
ZlBbL1xmSW1hc2tcZlBdIgorVGhlIGRlc3RpbmF0aW9uIElQdjYgYWRkcmVzcy4KK1RoZSBmbGFn
CisuQiAtLWlwNi1kc3QKK2lzIGFuIGFsaWFzIGZvciB0aGlzIG9wdGlvbi4KKy5UUAorLkJSICIt
LWlwNi10Y2xhc3MgIiAiWyFdIFxmSXRjbGFzc1xmUCIKK1RoZSBJUHY2IHRyYWZmaWMgY2xhc3Ms
IGluIGhleGFkZWNpbWFsIG51bWJlcnMuCisuVFAKKy5CUiAiLS1pcDYtcHJvdG9jb2wgIiAiWyFd
IFxmSXByb3RvY29sXGZQIgorVGhlIElQIHByb3RvY29sLgorVGhlIGZsYWcKKy5CIC0taXA2LXBy
b3RvCitpcyBhbiBhbGlhcyBmb3IgdGhpcyBvcHRpb24uCisuVFAKKy5CUiAiLS1pcDYtc291cmNl
LXBvcnQgIiAiWyFdIFxmSXBvcnQxXGZQWzpcZklwb3J0MlxmUF0iCitUaGUgc291cmNlIHBvcnQg
b3IgcG9ydCByYW5nZSBmb3IgdGhlIElQdjYgcHJvdG9jb2xzIDYgKFRDUCksIDE3CisoVURQKSwg
MzMgKERDQ1ApIG9yIDEzMiAoU0NUUCkuIFRoZQorLkIgLS1pcDYtcHJvdG9jb2wKK29wdGlvbiBt
dXN0IGJlIHNwZWNpZmllZCBhcworLklSIFRDUCAiLCAiIFVEUCAiLCAiIERDQ1AgIiBvciAiIFND
VFAgLgorSWYKKy5JUiBwb3J0MSAiIGlzIG9taXR0ZWQsICIgMDpwb3J0MiAiIGlzIHVzZWQ7IGlm
ICIgcG9ydDIgIiBpcyBvbWl0dGVkIGJ1dCBhIGNvbG9uIGlzIHNwZWNpZmllZCwgIiBwb3J0MTo2
NTUzNSAiIGlzIHVzZWQuIgorVGhlIGZsYWcKKy5CIC0taXA2LXNwb3J0CitpcyBhbiBhbGlhcyBm
b3IgdGhpcyBvcHRpb24uCisuVFAKKy5CUiAiLS1pcDYtZGVzdGluYXRpb24tcG9ydCAiICJbIV0g
XGZJcG9ydDFcZlBbOlxmSXBvcnQyXGZQXSIKK1RoZSBkZXN0aW5hdGlvbiBwb3J0IG9yIHBvcnQg
cmFuZ2UgZm9yIElQdjYgcHJvdG9jb2xzIDYgKFRDUCksIDE3CisoVURQKSwgMzMgKERDQ1ApIG9y
IDEzMiAoU0NUUCkuIFRoZQorLkIgLS1pcDYtcHJvdG9jb2wKK29wdGlvbiBtdXN0IGJlIHNwZWNp
ZmllZCBhcworLklSIFRDUCAiLCAiIFVEUCAiLCAiIERDQ1AgIiBvciAiIFNDVFAgLgorSWYKKy5J
UiBwb3J0MSAiIGlzIG9taXR0ZWQsICIgMDpwb3J0MiAiIGlzIHVzZWQ7IGlmICIgcG9ydDIgIiBp
cyBvbWl0dGVkIGJ1dCBhIGNvbG9uIGlzIHNwZWNpZmllZCwgIiBwb3J0MTo2NTUzNSAiIGlzIHVz
ZWQuIgorVGhlIGZsYWcKKy5CIC0taXA2LWRwb3J0CitpcyBhbiBhbGlhcyBmb3IgdGhpcyBvcHRp
b24uCiAuU1MgbGltaXQKIFRoaXMgbW9kdWxlIG1hdGNoZXMgYXQgYSBsaW1pdGVkIHJhdGUgdXNp
bmcgYSB0b2tlbiBidWNrZXQgZmlsdGVyLgogQSBydWxlIHVzaW5nIHRoaXMgZXh0ZW5zaW9uIHdp
bGwgbWF0Y2ggdW50aWwgdGhpcyBsaW1pdCBpcyByZWFjaGVkLgpAQCAtODAwLDYgKzg0OCwxMSBA
QCB0byBiZSBwcmludGVkIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGxpCiBXaWxsIGxvZyB0aGUg
aXAgaW5mb3JtYXRpb24gd2hlbiBhIGZyYW1lIG1hZGUgYnkgdGhlIGlwIHByb3RvY29sIG1hdGNo
ZXMgCiB0aGUgcnVsZS4gVGhlIGRlZmF1bHQgaXMgbm8gaXAgaW5mb3JtYXRpb24gbG9nZ2luZy4K
IC5UUAorLkIgLS1sb2ctaXA2IAorLmJyCitXaWxsIGxvZyB0aGUgaXB2NiBpbmZvcm1hdGlvbiB3
aGVuIGEgZnJhbWUgbWFkZSBieSB0aGUgaXB2NiBwcm90b2NvbCBtYXRjaGVzIAordGhlIHJ1bGUu
IFRoZSBkZWZhdWx0IGlzIG5vIGlwdjYgaW5mb3JtYXRpb24gbG9nZ2luZy4KKy5UUAogLkIgLS1s
b2ctYXJwCiAuYnIKIFdpbGwgbG9nIHRoZSAocilhcnAgaW5mb3JtYXRpb24gd2hlbiBhIGZyYW1l
IG1hZGUgYnkgdGhlIChyKWFycCBwcm90b2NvbHMKZGlmZiAtdXJOcCBlYnRhYmxlcy12Mi4wLjgt
Mi5vcmlnL2V4dGVuc2lvbnMvZWJ0X2lwNi5jIGVidGFibGVzLXYyLjAuOC0yLmlwdjYvZXh0ZW5z
aW9ucy9lYnRfaXA2LmMKLS0tIGVidGFibGVzLXYyLjAuOC0yLm9yaWcvZXh0ZW5zaW9ucy9lYnRf
aXA2LmMJMTk2OS0xMi0zMSAxNjowMDowMC4wMDAwMDAwMDAgLTA4MDAKKysrIGVidGFibGVzLXYy
LjAuOC0yLmlwdjYvZXh0ZW5zaW9ucy9lYnRfaXA2LmMJMjAwOC0wMi0xOCAxNToyNDoyMS4wMDAw
MDAwMDAgLTA4MDAKQEAgLTAsMCArMSwzMzkgQEAKKy8qIGVidF9pcDYKKyAqIAorICogQXV0aG9y
czoKKyAqIEt1by1MYW5nIFRzZW5nIDxrdW8tbGFuZy50c2VuZ0BpbnRlbC5jb20+CisgKiBNYW5v
aGFyIENhc3RlbGlubyA8bWFub2hhci5jYXN0ZWxpbm9AaW50ZWwuY29tPgorICoKKyAqIFN1bW1h
cnk6CisgKiBUaGlzIGlzIGp1c3QgYSBtb2RpZmljYXRpb24gb2YgdGhlIElQdjQgY29kZSB3cml0
dGVuIGJ5IAorICogQmFydCBEZSBTY2h1eW1lciA8YmRzY2h1eW1AcGFuZG9yYS5iZT4KKyAqIHdp
dGggdGhlIGNoYW5nZXMgcmVxdWlyZWQgdG8gc3VwcG9ydCBJUHY2CisgKgorICovCisKKyNpbmNs
dWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgor
I2luY2x1ZGUgPGdldG9wdC5oPgorI2luY2x1ZGUgPG5ldGRiLmg+CisjaW5jbHVkZSAiLi4vaW5j
bHVkZS9lYnRhYmxlc191LmgiCisjaW5jbHVkZSA8bGludXgvbmV0ZmlsdGVyX2JyaWRnZS9lYnRf
aXA2Lmg+CisKKworCisjZGVmaW5lIElQX1NPVVJDRSAnMScKKyNkZWZpbmUgSVBfREVTVCAgICcy
JworI2RlZmluZSBJUF9UQ0xBU1MgJzMnCisjZGVmaW5lIElQX1BST1RPICAnNCcKKyNkZWZpbmUg
SVBfU1BPUlQgICc1JworI2RlZmluZSBJUF9EUE9SVCAgJzYnCisKK3N0YXRpYyBzdHJ1Y3Qgb3B0
aW9uIG9wdHNbXSA9Cit7CisJeyAiaXA2LXNvdXJjZSIgICAgICAgICAgICwgcmVxdWlyZWRfYXJn
dW1lbnQsIDAsIElQX1NPVVJDRSB9LAorCXsgImlwNi1zcmMiICAgICAgICAgICAgICAsIHJlcXVp
cmVkX2FyZ3VtZW50LCAwLCBJUF9TT1VSQ0UgfSwKKwl7ICJpcDYtZGVzdGluYXRpb24iICAgICAg
LCByZXF1aXJlZF9hcmd1bWVudCwgMCwgSVBfREVTVCAgIH0sCisJeyAiaXA2LWRzdCIgICAgICAg
ICAgICAgICwgcmVxdWlyZWRfYXJndW1lbnQsIDAsIElQX0RFU1QgICB9LAorCXsgImlwNi10cmFm
ZmljLWNsYXNzIiAgICAsIHJlcXVpcmVkX2FyZ3VtZW50LCAwLCBJUF9UQ0xBU1MgfSwKKwl7ICJp
cDYtdGNsYXNzIiAgICAgICAgICAgLCByZXF1aXJlZF9hcmd1bWVudCwgMCwgSVBfVENMQVNTIH0s
CisJeyAiaXA2LXByb3RvY29sIiAgICAgICAgICwgcmVxdWlyZWRfYXJndW1lbnQsIDAsIElQX1BS
T1RPICB9LAorCXsgImlwNi1wcm90byIgICAgICAgICAgICAsIHJlcXVpcmVkX2FyZ3VtZW50LCAw
LCBJUF9QUk9UTyAgfSwKKwl7ICJpcDYtc291cmNlLXBvcnQiICAgICAgLCByZXF1aXJlZF9hcmd1
bWVudCwgMCwgSVBfU1BPUlQgIH0sCisJeyAiaXA2LXNwb3J0IiAgICAgICAgICAgICwgcmVxdWly
ZWRfYXJndW1lbnQsIDAsIElQX1NQT1JUICB9LAorCXsgImlwNi1kZXN0aW5hdGlvbi1wb3J0IiAs
IHJlcXVpcmVkX2FyZ3VtZW50LCAwLCBJUF9EUE9SVCAgfSwKKwl7ICJpcDYtZHBvcnQiICAgICAg
ICAgICAgLCByZXF1aXJlZF9hcmd1bWVudCwgMCwgSVBfRFBPUlQgIH0sCisJeyAwIH0KK307CisK
Ky8qIHRyYW5zZm9ybSBhIHByb3RvY29sIGFuZCBzZXJ2aWNlIG5hbWUgaW50byBhIHBvcnQgbnVt
YmVyICovCitzdGF0aWMgdWludDE2X3QgcGFyc2VfcG9ydChjb25zdCBjaGFyICpwcm90b2NvbCwg
Y29uc3QgY2hhciAqbmFtZSkKK3sKKwlzdHJ1Y3Qgc2VydmVudCAqc2VydmljZTsKKwljaGFyICpl
bmQ7CisJaW50IHBvcnQ7CisKKwlwb3J0ID0gc3RydG9sKG5hbWUsICZlbmQsIDEwKTsKKwlpZiAo
KmVuZCAhPSAnXDAnKSB7CisJCWlmIChwcm90b2NvbCAmJiAKKwkJICAgIChzZXJ2aWNlID0gZ2V0
c2VydmJ5bmFtZShuYW1lLCBwcm90b2NvbCkpICE9IE5VTEwpCisJCQlyZXR1cm4gbnRvaHMoc2Vy
dmljZS0+c19wb3J0KTsKKwl9CisJZWxzZSBpZiAocG9ydCA+PSAwIHx8IHBvcnQgPD0gMHhGRkZG
KSB7CisJCXJldHVybiBwb3J0OworCX0KKwllYnRfcHJpbnRfZXJyb3IoIlByb2JsZW0gd2l0aCBz
cGVjaWZpZWQgJXMgcG9ydCAnJXMnIiwgCisJCQlwcm90b2NvbD9wcm90b2NvbDoiIiwgbmFtZSk7
CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkCitwYXJzZV9wb3J0X3JhbmdlKGNvbnN0IGNo
YXIgKnByb3RvY29sLCBjb25zdCBjaGFyICpwb3J0c3RyaW5nLCB1aW50MTZfdCAqcG9ydHMpCit7
CisJY2hhciAqYnVmZmVyOworCWNoYXIgKmNwOworCQorCWJ1ZmZlciA9IHN0cmR1cChwb3J0c3Ry
aW5nKTsKKwlpZiAoKGNwID0gc3RyY2hyKGJ1ZmZlciwgJzonKSkgPT0gTlVMTCkKKwkJcG9ydHNb
MF0gPSBwb3J0c1sxXSA9IHBhcnNlX3BvcnQocHJvdG9jb2wsIGJ1ZmZlcik7CisJZWxzZSB7CisJ
CSpjcCA9ICdcMCc7CisJCWNwKys7CisJCXBvcnRzWzBdID0gYnVmZmVyWzBdID8gcGFyc2VfcG9y
dChwcm90b2NvbCwgYnVmZmVyKSA6IDA7CisJCWlmIChlYnRfZXJyb3Jtc2dbMF0gIT0gJ1wwJykK
KwkJCXJldHVybjsKKwkJcG9ydHNbMV0gPSBjcFswXSA/IHBhcnNlX3BvcnQocHJvdG9jb2wsIGNw
KSA6IDB4RkZGRjsKKwkJaWYgKGVidF9lcnJvcm1zZ1swXSAhPSAnXDAnKQorCQkJcmV0dXJuOwor
CQkKKwkJaWYgKHBvcnRzWzBdID4gcG9ydHNbMV0pCisJCQllYnRfcHJpbnRfZXJyb3IoIkludmFs
aWQgcG9ydHJhbmdlIChtaW4gPiBtYXgpIik7CisJfQorCWZyZWUoYnVmZmVyKTsKK30KKworc3Rh
dGljIHZvaWQgcHJpbnRfcG9ydF9yYW5nZSh1aW50MTZfdCAqcG9ydHMpCit7CisJaWYgKHBvcnRz
WzBdID09IHBvcnRzWzFdKQorCQlwcmludGYoIiVkICIsIHBvcnRzWzBdKTsKKwllbHNlCisJCXBy
aW50ZigiJWQ6JWQgIiwgcG9ydHNbMF0sIHBvcnRzWzFdKTsKK30KKworc3RhdGljIHZvaWQgcHJp
bnRfaGVscCgpCit7CisJcHJpbnRmKAorImlwNiBvcHRpb25zOlxuIgorIi0taXA2LXNyYyAgICBb
IV0gYWRkcmVzc1svbWFza106IGlwdjYgc291cmNlIHNwZWNpZmljYXRpb25cbiIKKyItLWlwNi1k
c3QgICAgWyFdIGFkZHJlc3NbL21hc2tdOiBpcHY2IGRlc3RpbmF0aW9uIHNwZWNpZmljYXRpb25c
biIKKyItLWlwNi10Y2xhc3MgWyFdIHRjbGFzcyAgICAgICAgOiBpcHY2IHRyYWZmaWMgY2xhc3Mg
c3BlY2lmaWNhdGlvblxuIgorIi0taXA2LXByb3RvICBbIV0gcHJvdG9jb2wgICAgICA6IGlwdjYg
cHJvdG9jb2wgc3BlY2lmaWNhdGlvblxuIgorIi0taXA2LXNwb3J0ICBbIV0gcG9ydFs6cG9ydF0g
ICA6IHRjcC91ZHAgc291cmNlIHBvcnQgb3IgcG9ydCByYW5nZVxuIgorIi0taXA2LWRwb3J0ICBb
IV0gcG9ydFs6cG9ydF0gICA6IHRjcC91ZHAgZGVzdGluYXRpb24gcG9ydCBvciBwb3J0IHJhbmdl
XG4iKTsKK30KKworc3RhdGljIHZvaWQgaW5pdChzdHJ1Y3QgZWJ0X2VudHJ5X21hdGNoICptYXRj
aCkKK3sKKwlzdHJ1Y3QgZWJ0X2lwNl9pbmZvICppcGluZm8gPSAoc3RydWN0IGVidF9pcDZfaW5m
byAqKW1hdGNoLT5kYXRhOworCisJaXBpbmZvLT5pbnZmbGFncyA9IDA7CisJaXBpbmZvLT5iaXRt
YXNrID0gMDsKK30KKworI2RlZmluZSBPUFRfU09VUkNFIDB4MDEKKyNkZWZpbmUgT1BUX0RFU1Qg
ICAweDAyCisjZGVmaW5lIE9QVF9UQ0xBU1MgMHgwNAorI2RlZmluZSBPUFRfUFJPVE8gIDB4MDgK
KyNkZWZpbmUgT1BUX1NQT1JUICAweDEwCisjZGVmaW5lIE9QVF9EUE9SVCAgMHgyMAorc3RhdGlj
IGludCBwYXJzZShpbnQgYywgY2hhciAqKmFyZ3YsIGludCBhcmdjLCBjb25zdCBzdHJ1Y3QgZWJ0
X3VfZW50cnkgKmVudHJ5LAorICAgdW5zaWduZWQgaW50ICpmbGFncywgc3RydWN0IGVidF9lbnRy
eV9tYXRjaCAqKm1hdGNoKQoreworCXN0cnVjdCBlYnRfaXA2X2luZm8gKmlwaW5mbyA9IChzdHJ1
Y3QgZWJ0X2lwNl9pbmZvICopKCptYXRjaCktPmRhdGE7CisJY2hhciAqZW5kOworCWxvbmcgaW50
IGk7CisKKwlzd2l0Y2ggKGMpIHsKKwljYXNlIElQX1NPVVJDRToKKwkJZWJ0X2NoZWNrX29wdGlv
bjIoZmxhZ3MsIE9QVF9TT1VSQ0UpOworCQlpcGluZm8tPmJpdG1hc2sgfD0gRUJUX0lQNl9TT1VS
Q0U7CisJCWlmIChlYnRfY2hlY2tfaW52ZXJzZTIob3B0YXJnKSkgeworCQkgICAgaXBpbmZvLT5p
bnZmbGFncyB8PSBFQlRfSVA2X1NPVVJDRTsKKwkJfQorCQllYnRfcGFyc2VfaXA2X2FkZHJlc3Mo
b3B0YXJnLCAmaXBpbmZvLT5zYWRkciwgJmlwaW5mby0+c21zayk7CisJCWJyZWFrOworCisJY2Fz
ZSBJUF9ERVNUOgorCQllYnRfY2hlY2tfb3B0aW9uMihmbGFncywgT1BUX0RFU1QpOworCQlpcGlu
Zm8tPmJpdG1hc2sgfD0gRUJUX0lQNl9ERVNUOworCQlpZiAoZWJ0X2NoZWNrX2ludmVyc2UyKG9w
dGFyZykpIHsKKwkJCWlwaW5mby0+aW52ZmxhZ3MgfD0gRUJUX0lQNl9ERVNUOworCQl9CisJCWVi
dF9wYXJzZV9pcDZfYWRkcmVzcyhvcHRhcmcsICZpcGluZm8tPmRhZGRyLCAmaXBpbmZvLT5kbXNr
KTsKKwkJYnJlYWs7CisKKwljYXNlIElQX1NQT1JUOgorCWNhc2UgSVBfRFBPUlQ6CisJCWlmIChj
ID09IElQX1NQT1JUKSB7CisJCQllYnRfY2hlY2tfb3B0aW9uMihmbGFncywgT1BUX1NQT1JUKTsK
KwkJCWlwaW5mby0+Yml0bWFzayB8PSBFQlRfSVA2X1NQT1JUOworCQkJaWYgKGVidF9jaGVja19p
bnZlcnNlMihvcHRhcmcpKQorCQkJCWlwaW5mby0+aW52ZmxhZ3MgfD0gRUJUX0lQNl9TUE9SVDsK
KwkJfSBlbHNlIHsKKwkJCWVidF9jaGVja19vcHRpb24yKGZsYWdzLCBPUFRfRFBPUlQpOworCQkJ
aXBpbmZvLT5iaXRtYXNrIHw9IEVCVF9JUDZfRFBPUlQ7CisJCQlpZiAoZWJ0X2NoZWNrX2ludmVy
c2UyKG9wdGFyZykpCisJCQkJaXBpbmZvLT5pbnZmbGFncyB8PSBFQlRfSVA2X0RQT1JUOworCQl9
CisJCWlmIChjID09IElQX1NQT1JUKQorCQkJcGFyc2VfcG9ydF9yYW5nZShOVUxMLCBvcHRhcmcs
IGlwaW5mby0+c3BvcnQpOworCQllbHNlCisJCQlwYXJzZV9wb3J0X3JhbmdlKE5VTEwsIG9wdGFy
ZywgaXBpbmZvLT5kcG9ydCk7CisJCWJyZWFrOworCisJY2FzZSBJUF9UQ0xBU1M6CisJCWVidF9j
aGVja19vcHRpb24yKGZsYWdzLCBPUFRfVENMQVNTKTsKKwkJaWYgKGVidF9jaGVja19pbnZlcnNl
MihvcHRhcmcpKQorCQkJaXBpbmZvLT5pbnZmbGFncyB8PSBFQlRfSVA2X1RDTEFTUzsKKwkJaSA9
IHN0cnRvbChvcHRhcmcsICZlbmQsIDE2KTsKKwkJaWYgKGkgPCAwIHx8IGkgPiAyNTUgfHwgKmVu
ZCAhPSAnXDAnKQorCQkJZWJ0X3ByaW50X2Vycm9yMigiUHJvYmxlbSB3aXRoIHNwZWNpZmllZCBJ
UHY2IHRyYWZmaWMgY2xhc3MiKTsKKwkJaXBpbmZvLT50Y2xhc3MgPSBpOworCQlpcGluZm8tPmJp
dG1hc2sgfD0gRUJUX0lQNl9UQ0xBU1M7CisJCWJyZWFrOworCisJY2FzZSBJUF9QUk9UTzoKKwkJ
ZWJ0X2NoZWNrX29wdGlvbjIoZmxhZ3MsIE9QVF9QUk9UTyk7CisJCWlmIChlYnRfY2hlY2tfaW52
ZXJzZTIob3B0YXJnKSkKKwkJCWlwaW5mby0+aW52ZmxhZ3MgfD0gRUJUX0lQNl9QUk9UTzsKKwkJ
aSA9IHN0cnRvdWwob3B0YXJnLCAmZW5kLCAxMCk7CisJCWlmICgqZW5kICE9ICdcMCcpIHsKKwkJ
CXN0cnVjdCBwcm90b2VudCAqcGU7CisKKwkJCXBlID0gZ2V0cHJvdG9ieW5hbWUob3B0YXJnKTsK
KwkJCWlmIChwZSA9PSBOVUxMKQorCQkJCWVidF9wcmludF9lcnJvcigiVW5rbm93biBzcGVjaWZp
ZWQgSVAgcHJvdG9jb2wgLSAlcyIsIGFyZ3Zbb3B0aW5kIC0gMV0pOworCQkJaXBpbmZvLT5wcm90
b2NvbCA9IHBlLT5wX3Byb3RvOworCQl9IGVsc2UgeworCQkJaXBpbmZvLT5wcm90b2NvbCA9ICh1
bnNpZ25lZCBjaGFyKSBpOworCQl9CisJCWlwaW5mby0+Yml0bWFzayB8PSBFQlRfSVA2X1BST1RP
OworCQlicmVhazsKKwlkZWZhdWx0OgorCQlyZXR1cm4gMDsKKwl9CisJcmV0dXJuIDE7Cit9CisK
K3N0YXRpYyB2b2lkIGZpbmFsX2NoZWNrKGNvbnN0IHN0cnVjdCBlYnRfdV9lbnRyeSAqZW50cnks
CisgICBjb25zdCBzdHJ1Y3QgZWJ0X2VudHJ5X21hdGNoICptYXRjaCwgY29uc3QgY2hhciAqbmFt
ZSwKKyAgIHVuc2lnbmVkIGludCBob29rbWFzaywgdW5zaWduZWQgaW50IHRpbWUpCit7CisJc3Ry
dWN0IGVidF9pcDZfaW5mbyAqaXBpbmZvID0gKHN0cnVjdCBlYnRfaXA2X2luZm8gKiltYXRjaC0+
ZGF0YTsKKworCWlmIChlbnRyeS0+ZXRocHJvdG8gIT0gRVRIX1BfSVBWNiB8fCBlbnRyeS0+aW52
ZmxhZ3MgJiBFQlRfSVBST1RPKSB7CisJCWVidF9wcmludF9lcnJvcigiRm9yIElQdjYgZmlsdGVy
aW5nIHRoZSBwcm90b2NvbCBtdXN0IGJlICIKKwkJICAgICAgICAgICAgInNwZWNpZmllZCBhcyBJ
UHY2Iik7CisJfSBlbHNlIGlmIChpcGluZm8tPmJpdG1hc2sgJiAoRUJUX0lQNl9TUE9SVHxFQlRf
SVA2X0RQT1JUKSAmJgorCQkoIShpcGluZm8tPmJpdG1hc2sgJiBFQlRfSVA2X1BST1RPKSB8fAor
CQlpcGluZm8tPmludmZsYWdzICYgRUJUX0lQNl9QUk9UTyB8fAorCQkoaXBpbmZvLT5wcm90b2Nv
bCE9SVBQUk9UT19UQ1AgJiYKKwkJIGlwaW5mby0+cHJvdG9jb2whPUlQUFJPVE9fVURQICYmCisJ
CSBpcGluZm8tPnByb3RvY29sIT1JUFBST1RPX1NDVFAgJiYKKwkJIGlwaW5mby0+cHJvdG9jb2wh
PUlQUFJPVE9fRENDUCkpKQorCQllYnRfcHJpbnRfZXJyb3IoIkZvciBwb3J0IGZpbHRlcmluZyB0
aGUgSVAgcHJvdG9jb2wgbXVzdCBiZSAiCisJCQkJImVpdGhlciA2ICh0Y3ApLCAxNyAodWRwKSwg
MzMgKGRjY3ApIG9yICIKKwkJCQkiMTMyIChzY3RwKSIpOworfQorCitzdGF0aWMgdm9pZCBwcmlu
dChjb25zdCBzdHJ1Y3QgZWJ0X3VfZW50cnkgKmVudHJ5LAorICAgY29uc3Qgc3RydWN0IGVidF9l
bnRyeV9tYXRjaCAqbWF0Y2gpCit7CisJc3RydWN0IGVidF9pcDZfaW5mbyAqaXBpbmZvID0gKHN0
cnVjdCBlYnRfaXA2X2luZm8gKiltYXRjaC0+ZGF0YTsKKworCWlmIChpcGluZm8tPmJpdG1hc2sg
JiBFQlRfSVA2X1NPVVJDRSkgeworCQlwcmludGYoIi0taXA2LXNyYyAiKTsKKwkJaWYgKGlwaW5m
by0+aW52ZmxhZ3MgJiBFQlRfSVA2X1NPVVJDRSkKKwkJCXByaW50ZigiISAiKTsKKwkJcHJpbnRm
KCIlcyIsIGVidF9pcDZfdG9fbnVtZXJpYygmaXBpbmZvLT5zYWRkcikpOworCQlwcmludGYoIi8l
cyAiLCBlYnRfaXA2X3RvX251bWVyaWMoJmlwaW5mby0+c21zaykpOworCX0KKwlpZiAoaXBpbmZv
LT5iaXRtYXNrICYgRUJUX0lQNl9ERVNUKSB7CisJCXByaW50ZigiLS1pcDYtZHN0ICIpOworCQlp
ZiAoaXBpbmZvLT5pbnZmbGFncyAmIEVCVF9JUDZfREVTVCkKKwkJCXByaW50ZigiISAiKTsKKwkJ
cHJpbnRmKCIlcyIsIGVidF9pcDZfdG9fbnVtZXJpYygmaXBpbmZvLT5kYWRkcikpOworCQlwcmlu
dGYoIi8lcyAiLCBlYnRfaXA2X3RvX251bWVyaWMoJmlwaW5mby0+ZG1zaykpOworCX0KKwlpZiAo
aXBpbmZvLT5iaXRtYXNrICYgRUJUX0lQNl9UQ0xBU1MpIHsKKwkJcHJpbnRmKCItLWlwNi10Y2xh
c3MgIik7CisJCWlmIChpcGluZm8tPmludmZsYWdzICYgRUJUX0lQNl9UQ0xBU1MpCisJCQlwcmlu
dGYoIiEgIik7CisJCXByaW50ZigiMHglMDJYICIsIGlwaW5mby0+dGNsYXNzKTsKKwl9CisJaWYg
KGlwaW5mby0+Yml0bWFzayAmIEVCVF9JUDZfUFJPVE8pIHsKKwkJc3RydWN0IHByb3RvZW50ICpw
ZTsKKworCQlwcmludGYoIi0taXA2LXByb3RvICIpOworCQlpZiAoaXBpbmZvLT5pbnZmbGFncyAm
IEVCVF9JUDZfUFJPVE8pCisJCQlwcmludGYoIiEgIik7CisJCXBlID0gZ2V0cHJvdG9ieW51bWJl
cihpcGluZm8tPnByb3RvY29sKTsKKwkJaWYgKHBlID09IE5VTEwpIHsKKwkJCXByaW50ZigiJWQg
IiwgaXBpbmZvLT5wcm90b2NvbCk7CisJCX0gZWxzZSB7CisJCQlwcmludGYoIiVzICIsIHBlLT5w
X25hbWUpOworCQl9CisJfQorCWlmIChpcGluZm8tPmJpdG1hc2sgJiBFQlRfSVA2X1NQT1JUKSB7
CisJCXByaW50ZigiLS1pcDYtc3BvcnQgIik7CisJCWlmIChpcGluZm8tPmludmZsYWdzICYgRUJU
X0lQNl9TUE9SVCkKKwkJCXByaW50ZigiISAiKTsKKwkJcHJpbnRfcG9ydF9yYW5nZShpcGluZm8t
PnNwb3J0KTsKKwl9CisJaWYgKGlwaW5mby0+Yml0bWFzayAmIEVCVF9JUDZfRFBPUlQpIHsKKwkJ
cHJpbnRmKCItLWlwNi1kcG9ydCAiKTsKKwkJaWYgKGlwaW5mby0+aW52ZmxhZ3MgJiBFQlRfSVA2
X0RQT1JUKQorCQkJcHJpbnRmKCIhICIpOworCQlwcmludF9wb3J0X3JhbmdlKGlwaW5mby0+ZHBv
cnQpOworCX0KK30KKworc3RhdGljIGludCBjb21wYXJlKGNvbnN0IHN0cnVjdCBlYnRfZW50cnlf
bWF0Y2ggKm0xLAorICAgY29uc3Qgc3RydWN0IGVidF9lbnRyeV9tYXRjaCAqbTIpCit7CisJc3Ry
dWN0IGVidF9pcDZfaW5mbyAqaXBpbmZvMSA9IChzdHJ1Y3QgZWJ0X2lwNl9pbmZvICopbTEtPmRh
dGE7CisJc3RydWN0IGVidF9pcDZfaW5mbyAqaXBpbmZvMiA9IChzdHJ1Y3QgZWJ0X2lwNl9pbmZv
ICopbTItPmRhdGE7CisKKwlpZiAoaXBpbmZvMS0+Yml0bWFzayAhPSBpcGluZm8yLT5iaXRtYXNr
KQorCQlyZXR1cm4gMDsKKwlpZiAoaXBpbmZvMS0+aW52ZmxhZ3MgIT0gaXBpbmZvMi0+aW52Zmxh
Z3MpCisJCXJldHVybiAwOworCWlmIChpcGluZm8xLT5iaXRtYXNrICYgRUJUX0lQNl9TT1VSQ0Up
IHsKKwkJaWYgKCFJTjZfQVJFX0FERFJfRVFVQUwoJmlwaW5mbzEtPnNhZGRyLCAmaXBpbmZvMi0+
c2FkZHIpKQorCQkJcmV0dXJuIDA7CisJCWlmICghSU42X0FSRV9BRERSX0VRVUFMKCZpcGluZm8x
LT5zbXNrLCAmaXBpbmZvMi0+c21zaykpCisJCQlyZXR1cm4gMDsKKwl9CisJaWYgKGlwaW5mbzEt
PmJpdG1hc2sgJiBFQlRfSVA2X0RFU1QpIHsKKwkJaWYgKCFJTjZfQVJFX0FERFJfRVFVQUwoJmlw
aW5mbzEtPmRhZGRyLCAmaXBpbmZvMi0+ZGFkZHIpKQorCQkJcmV0dXJuIDA7CisJCWlmICghSU42
X0FSRV9BRERSX0VRVUFMKCZpcGluZm8xLT5kbXNrLCAmaXBpbmZvMi0+ZG1zaykpCisJCQlyZXR1
cm4gMDsKKwl9CisJaWYgKGlwaW5mbzEtPmJpdG1hc2sgJiBFQlRfSVA2X1RDTEFTUykgeworCQlp
ZiAoaXBpbmZvMS0+dGNsYXNzICE9IGlwaW5mbzItPnRjbGFzcykKKwkJCXJldHVybiAwOworCX0K
KwlpZiAoaXBpbmZvMS0+Yml0bWFzayAmIEVCVF9JUDZfUFJPVE8pIHsKKwkJaWYgKGlwaW5mbzEt
PnByb3RvY29sICE9IGlwaW5mbzItPnByb3RvY29sKQorCQkJcmV0dXJuIDA7CisJfQorCWlmIChp
cGluZm8xLT5iaXRtYXNrICYgRUJUX0lQNl9TUE9SVCkgeworCQlpZiAoaXBpbmZvMS0+c3BvcnRb
MF0gIT0gaXBpbmZvMi0+c3BvcnRbMF0gfHwKKwkJICAgaXBpbmZvMS0+c3BvcnRbMV0gIT0gaXBp
bmZvMi0+c3BvcnRbMV0pCisJCQlyZXR1cm4gMDsKKwl9CisJaWYgKGlwaW5mbzEtPmJpdG1hc2sg
JiBFQlRfSVA2X0RQT1JUKSB7CisJCWlmIChpcGluZm8xLT5kcG9ydFswXSAhPSBpcGluZm8yLT5k
cG9ydFswXSB8fAorCQkgICBpcGluZm8xLT5kcG9ydFsxXSAhPSBpcGluZm8yLT5kcG9ydFsxXSkK
KwkJCXJldHVybiAwOworCX0KKwlyZXR1cm4gMTsKK30KKworc3RhdGljIHN0cnVjdCBlYnRfdV9t
YXRjaCBpcDZfbWF0Y2ggPQoreworCS5uYW1lCQk9IEVCVF9JUDZfTUFUQ0gsCisJLnNpemUJCT0g
c2l6ZW9mKHN0cnVjdCBlYnRfaXA2X2luZm8pLAorCS5oZWxwCQk9IHByaW50X2hlbHAsCisJLmlu
aXQJCT0gaW5pdCwKKwkucGFyc2UJCT0gcGFyc2UsCisJLmZpbmFsX2NoZWNrCT0gZmluYWxfY2hl
Y2ssCisJLnByaW50CQk9IHByaW50LAorCS5jb21wYXJlCT0gY29tcGFyZSwKKwkuZXh0cmFfb3Bz
CT0gb3B0cywKK307CisKK3ZvaWQgX2luaXQodm9pZCkKK3sKKwllYnRfcmVnaXN0ZXJfbWF0Y2go
JmlwNl9tYXRjaCk7Cit9CmRpZmYgLXVyTnAgZWJ0YWJsZXMtdjIuMC44LTIub3JpZy9leHRlbnNp
b25zL2VidF9sb2cuYyBlYnRhYmxlcy12Mi4wLjgtMi5pcHY2L2V4dGVuc2lvbnMvZWJ0X2xvZy5j
Ci0tLSBlYnRhYmxlcy12Mi4wLjgtMi5vcmlnL2V4dGVuc2lvbnMvZWJ0X2xvZy5jCTIwMDctMDkt
MjEgMTA6Mjc6MjAuMDAwMDAwMDAwIC0wNzAwCisrKyBlYnRhYmxlcy12Mi4wLjgtMi5pcHY2L2V4
dGVuc2lvbnMvZWJ0X2xvZy5jCTIwMDgtMDEtMzAgMTc6MjI6NTYuMDAwMDAwMDAwIC0wODAwCkBA
IC02MCw2ICs2MCw3IEBAIHN0YXRpYyBpbnQgbmFtZV90b19sb2dsZXZlbChjaGFyKiBhcmcpCiAj
ZGVmaW5lIExPR19BUlAgICAgJzMnCiAjZGVmaW5lIExPR19JUCAgICAgJzQnCiAjZGVmaW5lIExP
R19MT0cgICAgJzUnCisjZGVmaW5lIExPR19JUDYgICAgJzYnCiBzdGF0aWMgc3RydWN0IG9wdGlv
biBvcHRzW10gPQogewogCXsgImxvZy1wcmVmaXgiLCByZXF1aXJlZF9hcmd1bWVudCwgMCwgTE9H
X1BSRUZJWCB9LApAQCAtNjcsNiArNjgsNyBAQCBzdGF0aWMgc3RydWN0IG9wdGlvbiBvcHRzW10g
PQogCXsgImxvZy1hcnAiICAgLCBub19hcmd1bWVudCAgICAgICwgMCwgTE9HX0FSUCAgICB9LAog
CXsgImxvZy1pcCIgICAgLCBub19hcmd1bWVudCAgICAgICwgMCwgTE9HX0lQICAgICB9LAogCXsg
ImxvZyIgICAgICAgLCBub19hcmd1bWVudCAgICAgICwgMCwgTE9HX0xPRyAgICB9LAorCXsgImxv
Zy1pcDYiICAgLCBub19hcmd1bWVudCAgICAgICwgMCwgTE9HX0lQNiAgICB9LAogCXsgMCB9CiB9
OwogCkBAIC04MSw2ICs4Myw3IEBAIHN0YXRpYyB2b2lkIHByaW50X2hlbHAoKQogIi0tbG9nLXBy
ZWZpeCBwcmVmaXggOiBtYXguICVkIGNoYXJzLlxuIgogIi0tbG9nLWlwICAgICAgICAgICAgOiBw
dXQgaXAgaW5mby4gaW4gdGhlIGxvZyBmb3IgaXAgcGFja2V0c1xuIgogIi0tbG9nLWFycCAgICAg
ICAgICAgOiBwdXQgKHIpYXJwIGluZm8uIGluIHRoZSBsb2cgZm9yIChyKWFycCBwYWNrZXRzXG4i
CisiLS1sb2ctaXA2ICAgICAgICAgICA6IHB1dCBpcDYgaW5mby4gaW4gdGhlIGxvZyBmb3IgaXA2
IHBhY2tldHNcbiIKIAksIEVCVF9MT0dfUFJFRklYX1NJWkUgLSAxKTsKIAlwcmludGYoImxldmVs
czpcbiIpOwogCWZvciAoaSA9IDA7IGkgPCA4OyBpKyspCkBAIC0xMDIsNiArMTA1LDcgQEAgc3Rh
dGljIHZvaWQgaW5pdChzdHJ1Y3QgZWJ0X2VudHJ5X3dhdGNoZQogI2RlZmluZSBPUFRfQVJQICAg
IDB4MDQKICNkZWZpbmUgT1BUX0lQICAgICAweDA4CiAjZGVmaW5lIE9QVF9MT0cgICAgMHgxMAor
I2RlZmluZSBPUFRfSVA2ICAgIDB4MjAKIHN0YXRpYyBpbnQgcGFyc2UoaW50IGMsIGNoYXIgKiph
cmd2LCBpbnQgYXJnYywgY29uc3Qgc3RydWN0IGVidF91X2VudHJ5ICplbnRyeSwKICAgIHVuc2ln
bmVkIGludCAqZmxhZ3MsIHN0cnVjdCBlYnRfZW50cnlfd2F0Y2hlciAqKndhdGNoZXIpCiB7CkBA
IC0xNTEsNiArMTU1LDEzIEBAIHN0YXRpYyBpbnQgcGFyc2UoaW50IGMsIGNoYXIgKiphcmd2LCBp
bnQKIAkJaWYgKGVidF9jaGVja19pbnZlcnNlKG9wdGFyZykpCiAJCQllYnRfcHJpbnRfZXJyb3Iy
KCJVbmV4cGVjdGVkIGAhJyBhZnRlciAtLWxvZyIpOwogCQlicmVhazsKKworCWNhc2UgTE9HX0lQ
NjoKKwkJZWJ0X2NoZWNrX29wdGlvbjIoZmxhZ3MsIE9QVF9JUDYpOworCQlpZiAoZWJ0X2NoZWNr
X2ludmVyc2Uob3B0YXJnKSkKKwkJCWVidF9wcmludF9lcnJvcjIoIlVuZXhwZWN0ZWQgYCEnIGFm
dGVyIC0tbG9nLWlwNiIpOworCQlsb2dpbmZvLT5iaXRtYXNrIHw9IEVCVF9MT0dfSVA2OworCQli
cmVhazsKIAlkZWZhdWx0OgogCQlyZXR1cm4gMDsKIAl9CkBAIC0xNzUsNiArMTg2LDggQEAgc3Rh
dGljIHZvaWQgcHJpbnQoY29uc3Qgc3RydWN0IGVidF91X2VudAogCQlwcmludGYoIiAtLWxvZy1p
cCIpOwogCWlmIChsb2dpbmZvLT5iaXRtYXNrICYgRUJUX0xPR19BUlApCiAJCXByaW50ZigiIC0t
bG9nLWFycCIpOworCWlmIChsb2dpbmZvLT5iaXRtYXNrICYgRUJUX0xPR19JUDYpCisJCXByaW50
ZigiIC0tbG9nLWlwNiIpOwogCXByaW50ZigiICIpOwogfQogCmRpZmYgLXVyTnAgZWJ0YWJsZXMt
djIuMC44LTIub3JpZy9leHRlbnNpb25zL01ha2VmaWxlIGVidGFibGVzLXYyLjAuOC0yLmlwdjYv
ZXh0ZW5zaW9ucy9NYWtlZmlsZQotLS0gZWJ0YWJsZXMtdjIuMC44LTIub3JpZy9leHRlbnNpb25z
L01ha2VmaWxlCTIwMDctMDktMjEgMTA6Mjc6MjAuMDAwMDAwMDAwIC0wNzAwCisrKyBlYnRhYmxl
cy12Mi4wLjgtMi5pcHY2L2V4dGVuc2lvbnMvTWFrZWZpbGUJMjAwOC0wMS0xMSAxOTo0MTo0Ny4w
MDAwMDAwMDAgLTA4MDAKQEAgLTEsNiArMSw2IEBACiAjISAvdXNyL2Jpbi9tYWtlCiAKLUVYVF9G
VU5DKz04MDJfMyBuYXQgYXJwIGFycHJlcGx5IGlwIHN0YW5kYXJkIGxvZyByZWRpcmVjdCB2bGFu
IG1hcmtfbSBtYXJrIFwKK0VYVF9GVU5DKz04MDJfMyBuYXQgYXJwIGFycHJlcGx5IGlwIGlwNiBz
dGFuZGFyZCBsb2cgcmVkaXJlY3QgdmxhbiBtYXJrX20gbWFyayBcCiAgICAgICAgICAgcGt0dHlw
ZSBzdHAgYW1vbmcgbGltaXQgdWxvZwogRVhUX1RBQkxFUys9ZmlsdGVyIG5hdCBicm91dGUKIEVY
VF9PQkpTKz0kKGZvcmVhY2ggVCwkKEVYVF9GVU5DKSwgZXh0ZW5zaW9ucy9lYnRfJChUKS5vKQpk
aWZmIC11ck5wIGVidGFibGVzLXYyLjAuOC0yLm9yaWcvaW5jbHVkZS9lYnRhYmxlc191LmggZWJ0
YWJsZXMtdjIuMC44LTIuaXB2Ni9pbmNsdWRlL2VidGFibGVzX3UuaAotLS0gZWJ0YWJsZXMtdjIu
MC44LTIub3JpZy9pbmNsdWRlL2VidGFibGVzX3UuaAkyMDA3LTA5LTIxIDEwOjI3OjIwLjAwMDAw
MDAwMCAtMDcwMAorKysgZWJ0YWJsZXMtdjIuMC44LTIuaXB2Ni9pbmNsdWRlL2VidGFibGVzX3Uu
aAkyMDA4LTAyLTE1IDExOjQzOjA2LjAwMDAwMDAwMCAtMDgwMApAQCAtMjk3LDYgKzI5NywxMCBA
QCB2b2lkIGVidF9wcmludF9tYWNfYW5kX21hc2soY29uc3QgdW5zaWduCiBpbnQgZWJ0X2dldF9t
YWNfYW5kX21hc2soY29uc3QgY2hhciAqZnJvbSwgdW5zaWduZWQgY2hhciAqdG8sIHVuc2lnbmVk
IGNoYXIgKm1hc2spOwogdm9pZCBlYnRfcGFyc2VfaXBfYWRkcmVzcyhjaGFyICphZGRyZXNzLCB1
aW50MzJfdCAqYWRkciwgdWludDMyX3QgKm1zayk7CiBjaGFyICplYnRfbWFza190b19kb3R0ZWQo
dWludDMyX3QgbWFzayk7Cit2b2lkIGVidF9wYXJzZV9pcDZfYWRkcmVzcyhjaGFyICphZGRyZXNz
LCBzdHJ1Y3QgaW42X2FkZHIgKmFkZHIsIAorCQkJCQkJICAgc3RydWN0IGluNl9hZGRyICptc2sp
OworY2hhciAqZWJ0X2lwNl90b19udW1lcmljKGNvbnN0IHN0cnVjdCBpbjZfYWRkciAqYWRkcnAp
OworCiAKIGludCBkb19jb21tYW5kKGludCBhcmdjLCBjaGFyICphcmd2W10sIGludCBleGVjX3N0
eWxlLAogICAgICAgICAgICAgICAgc3RydWN0IGVidF91X3JlcGxhY2UgKnJlcGxhY2VfKTsKZGlm
ZiAtdXJOcCBlYnRhYmxlcy12Mi4wLjgtMi5vcmlnL3VzZWZ1bF9mdW5jdGlvbnMuYyBlYnRhYmxl
cy12Mi4wLjgtMi5pcHY2L3VzZWZ1bF9mdW5jdGlvbnMuYwotLS0gZWJ0YWJsZXMtdjIuMC44LTIu
b3JpZy91c2VmdWxfZnVuY3Rpb25zLmMJMjAwNy0wOS0yMSAxMDoyNzoyMC4wMDAwMDAwMDAgLTA3
MDAKKysrIGVidGFibGVzLXYyLjAuOC0yLmlwdjYvdXNlZnVsX2Z1bmN0aW9ucy5jCTIwMDgtMDIt
MTggMTU6MjA6NTIuMDAwMDAwMDAwIC0wODAwCkBAIC0yOSw2ICsyOSwxMCBAQAogI2luY2x1ZGUg
PHN0cmluZy5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPGdldG9wdC5oPgorI2lu
Y2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3Nv
Y2tldC5oPgorI2luY2x1ZGUgPGFycGEvaW5ldC5oPgogCiBjb25zdCB1bnNpZ25lZCBjaGFyIG1h
Y190eXBlX3VuaWNhc3RbRVRIX0FMRU5dID0gICB7MCwwLDAsMCwwLDB9OwogY29uc3QgdW5zaWdu
ZWQgY2hhciBtc2tfdHlwZV91bmljYXN0W0VUSF9BTEVOXSA9ICAgezEsMCwwLDAsMCwwfTsKQEAg
LTI0NCw2ICsyNDgsNyBAQCB2b2lkIGVidF9wYXJzZV9pcF9hZGRyZXNzKGNoYXIgKmFkZHJlc3Ms
CiAJKmFkZHIgPSAqYWRkciAmICptc2s7CiB9CiAKKwogLyogVHJhbnNmb3JtIHRoZSBpcCBtYXNr
IGludG8gYSBzdHJpbmcgcmVhZHkgZm9yIG91dHB1dC4gKi8KIGNoYXIgKmVidF9tYXNrX3RvX2Rv
dHRlZCh1aW50MzJfdCBtYXNrKQogewpAQCAtMjc2LDMgKzI4MSwxMzQgQEAgY2hhciAqZWJ0X21h
c2tfdG9fZG90dGVkKHVpbnQzMl90IG1hc2spCiAKIAlyZXR1cm4gYnVmOwogfQorCisvKiBNb3N0
IG9mIHRoZSBmb2xsb3dpbmcgY29kZSBpcyBkZXJpdmVkIGZyb20gaXB0YWJsZXMgKi8KK3N0YXRp
YyB2b2lkCitpbjZhZGRyY3B5KHN0cnVjdCBpbjZfYWRkciAqZHN0LCBzdHJ1Y3QgaW42X2FkZHIg
KnNyYykKK3sKKyAgICBtZW1jcHkoZHN0LCBzcmMsIHNpemVvZihzdHJ1Y3QgaW42X2FkZHIpKTsK
K30KKworaW50IHN0cmluZ190b19udW1iZXJfbGwoY29uc3QgY2hhciAqcywgdW5zaWduZWQgbG9u
ZyBsb25nIG1pbiwKKyAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBtYXgsIHVuc2lnbmVk
IGxvbmcgbG9uZyAqcmV0KQoreworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBudW1iZXI7CisgICAg
Y2hhciAqZW5kOworCisgICAgLyogSGFuZGxlIGhleCwgb2N0YWwsIGV0Yy4gKi8KKyAgICBlcnJu
byA9IDA7CisgICAgbnVtYmVyID0gc3RydG91bGwocywgJmVuZCwgMCk7CisgICAgaWYgKCplbmQg
PT0gJ1wwJyAmJiBlbmQgIT0gcykgeworICAgICAgICAvKiB3ZSBwYXJzZWQgYSBudW1iZXIsIGxl
dCdzIHNlZSBpZiB3ZSB3YW50IHRoaXMgKi8KKyAgICAgICAgaWYgKGVycm5vICE9IEVSQU5HRSAm
JiBtaW4gPD0gbnVtYmVyICYmICghbWF4IHx8IG51bWJlciA8PSBtYXgpKSB7CisgICAgICAgICAg
ICAqcmV0ID0gbnVtYmVyOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9
CisgICAgcmV0dXJuIC0xOworfQorCitpbnQgc3RyaW5nX3RvX251bWJlcl9sKGNvbnN0IGNoYXIg
KnMsIHVuc2lnbmVkIGxvbmcgbWluLCB1bnNpZ25lZCBsb25nIG1heCwKKyAgICAgICAgICAgICAg
IHVuc2lnbmVkIGxvbmcgKnJldCkKK3sKKyAgICBpbnQgcmVzdWx0OworICAgIHVuc2lnbmVkIGxv
bmcgbG9uZyBudW1iZXI7CisKKyAgICByZXN1bHQgPSBzdHJpbmdfdG9fbnVtYmVyX2xsKHMsIG1p
biwgbWF4LCAmbnVtYmVyKTsKKyAgICAqcmV0ID0gKHVuc2lnbmVkIGxvbmcpbnVtYmVyOworCisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKworaW50IHN0cmluZ190b19udW1iZXIoY29uc3QgY2hhciAq
cywgdW5zaWduZWQgaW50IG1pbiwgdW5zaWduZWQgaW50IG1heCwKKyAgICAgICAgdW5zaWduZWQg
aW50ICpyZXQpCit7CisgICAgaW50IHJlc3VsdDsKKyAgICB1bnNpZ25lZCBsb25nIG51bWJlcjsK
KworICAgIHJlc3VsdCA9IHN0cmluZ190b19udW1iZXJfbChzLCBtaW4sIG1heCwgJm51bWJlcik7
CisgICAgKnJldCA9ICh1bnNpZ25lZCBpbnQpbnVtYmVyOworCisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKworc3RhdGljIHN0cnVjdCBpbjZfYWRkciAqCitudW1lcmljX3RvX2FkZHIoY29uc3QgY2hh
ciAqbnVtKQoreworICAgIHN0YXRpYyBzdHJ1Y3QgaW42X2FkZHIgYXA7CisgICAgaW50IGVycjsK
KyAgICBpZiAoKGVycj1pbmV0X3B0b24oQUZfSU5FVDYsIG51bSwgJmFwKSkgPT0gMSkKKyAgICAg
ICAgcmV0dXJuICZhcDsKKyAgICByZXR1cm4gKHN0cnVjdCBpbjZfYWRkciAqKU5VTEw7Cit9CisK
K3N0YXRpYyBzdHJ1Y3QgaW42X2FkZHIgKgorcGFyc2VfaXA2X21hc2soY2hhciAqbWFzaykKK3sK
KyAgICBzdGF0aWMgc3RydWN0IGluNl9hZGRyIG1hc2thZGRyOworICAgIHN0cnVjdCBpbjZfYWRk
ciAqYWRkcnA7CisgICAgdW5zaWduZWQgaW50IGJpdHM7CisKKyAgICBpZiAobWFzayA9PSBOVUxM
KSB7CisgICAgICAgIC8qIG5vIG1hc2sgYXQgYWxsIGRlZmF1bHRzIHRvIDEyOCBiaXRzICovCisg
ICAgICAgIG1lbXNldCgmbWFza2FkZHIsIDB4ZmYsIHNpemVvZiBtYXNrYWRkcik7CisgICAgICAg
IHJldHVybiAmbWFza2FkZHI7CisgICAgfQorICAgIGlmICgoYWRkcnAgPSBudW1lcmljX3RvX2Fk
ZHIobWFzaykpICE9IE5VTEwpCisgICAgICAgIHJldHVybiBhZGRycDsKKyAgICBpZiAoc3RyaW5n
X3RvX251bWJlcihtYXNrLCAwLCAxMjgsICZiaXRzKSA9PSAtMSkKKwkJZWJ0X3ByaW50X2Vycm9y
KCJJbnZhbGlkIElQdjYgTWFzayAnJXMnIHNwZWNpZmllZCIsIG1hc2spOworICAgIGlmIChiaXRz
ICE9IDApIHsKKyAgICAgICAgY2hhciAqcCA9IChjaGFyICopJm1hc2thZGRyOworICAgICAgICBt
ZW1zZXQocCwgMHhmZiwgYml0cyAvIDgpOworICAgICAgICBtZW1zZXQocCArIChiaXRzIC8gOCkg
KyAxLCAwLCAoMTI4IC0gYml0cykgLyA4KTsKKyAgICAgICAgcFtiaXRzIC8gOF0gPSAweGZmIDw8
ICg4IC0gKGJpdHMgJiA3KSk7CisgICAgICAgIHJldHVybiAmbWFza2FkZHI7CisgICAgfQorCisg
ICAgbWVtc2V0KCZtYXNrYWRkciwgMCwgc2l6ZW9mIG1hc2thZGRyKTsKKyAgICByZXR1cm4gJm1h
c2thZGRyOworfQorCisvKiBTZXQgdGhlIGlwdjYgbWFzayBhbmQgYWRkcmVzcy4gQ2FsbGVycyBz
aG91bGQgY2hlY2sgZWJ0X2Vycm9ybXNnWzBdLgorICogVGhlIHN0cmluZyBwb2ludGVkIHRvIGJ5
IGFkZHJlc3MgY2FuIGJlIGFsdGVyZWQuICovCit2b2lkIGVidF9wYXJzZV9pcDZfYWRkcmVzcyhj
aGFyICphZGRyZXNzLCBzdHJ1Y3QgaW42X2FkZHIgKmFkZHIsIAorCQkJCQkJICAgc3RydWN0IGlu
Nl9hZGRyICptc2spCit7CisgICAgc3RydWN0IGluNl9hZGRyICp0bXBfYWRkcjsKKyAgICBjaGFy
IGJ1ZlsyNTZdOworICAgIGNoYXIgKnA7CisgICAgaW50IGk7CisgICAgaW50IGVycjsKKworICAg
IHN0cm5jcHkoYnVmLCBhZGRyZXNzLCBzaXplb2YoYnVmKSAtIDEpOworCS8qIGZpcnN0IHRoZSBt
YXNrICovCisgICAgYnVmW3NpemVvZihidWYpIC0gMV0gPSAnXDAnOworICAgIGlmICgocCA9IHN0
cnJjaHIoYnVmLCAnLycpKSAhPSBOVUxMKSB7CisgICAgICAgICpwID0gJ1wwJzsKKyAgICAgICAg
dG1wX2FkZHIgPSBwYXJzZV9pcDZfbWFzayhwICsgMSk7CisgICAgfSBlbHNlCisgICAgICAgIHRt
cF9hZGRyID0gcGFyc2VfaXA2X21hc2soTlVMTCk7CisgICAgaW42YWRkcmNweShtc2ssIHRtcF9h
ZGRyKTsKKworICAgIC8qIGlmIGEgbnVsbCBtYXNrIGlzIGdpdmVuLCB0aGUgbmFtZSBpcyBpZ25v
cmVkLCBsaWtlIGluICJhbnkvMCIgKi8KKyAgICBpZiAoIW1lbWNtcChtc2ssICZpbjZhZGRyX2Fu
eSwgc2l6ZW9mKGluNmFkZHJfYW55KSkpCisgICAgICAgIHN0cmNweShidWYsICI6OiIpOworCisg
ICAgaWYgKChlcnI9aW5ldF9wdG9uKEFGX0lORVQ2LCBidWYsIGFkZHIpKSA8IDEpIHsKKwkJZWJ0
X3ByaW50X2Vycm9yKCJJbnZhbGlkIElQdjYgQWRkcmVzcyAnJXMnIHNwZWNpZmllZCIsIGJ1Zik7
CisJCXJldHVybjsKKwl9CisKKyAJZm9yIChpID0gMDsgaSA8IDQ7IGkrKykKKyAgICAJYWRkci0+
aW42X3UudTZfYWRkcjMyW2ldICY9IG1zay0+aW42X3UudTZfYWRkcjMyW2ldOworfQorCisvKiBU
cmFuc2Zvcm0gdGhlIGlwNiBhZGRyIGludG8gYSBzdHJpbmcgcmVhZHkgZm9yIG91dHB1dC4gKi8K
K2NoYXIgKmVidF9pcDZfdG9fbnVtZXJpYyhjb25zdCBzdHJ1Y3QgaW42X2FkZHIgKmFkZHJwKQor
eworICAgIC8qIDAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAuMDAwLjAwMC4wMDAKKyAgICAg
KiAwMDAwOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDAgKi8KKyAgICBzdGF0aWMg
Y2hhciBidWZbNTArMV07CisgICAgcmV0dXJuIChjaGFyICopaW5ldF9udG9wKEFGX0lORVQ2LCBh
ZGRycCwgYnVmLCBzaXplb2YoYnVmKSk7Cit9Cg==

------_=_NextPart_001_01C87324.B51F11FC--
-
To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html