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