From: Eric Leblond Subject: [PATCH] libnetfilter_queue naming problem Date: Wed, 26 Oct 2005 09:45:14 +0200 Message-ID: <1130312714.4872.57.camel@localhost.localdomain> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-EGaEZSh5hcpq9rXEzpZG" Cc: laforge@netfilter.org Return-path: To: Netfilter Development Mailinglist List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: netfilter-devel-bounces@lists.netfilter.org Errors-To: netfilter-devel-bounces@lists.netfilter.org List-Id: netfilter-devel.vger.kernel.org --=-EGaEZSh5hcpq9rXEzpZG Content-Type: multipart/mixed; boundary="=-1Q31gMdk39pUi4MB3fj9" --=-1Q31gMdk39pUi4MB3fj9 Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: quoted-printable Hi, The following patch should help to solve the current problems of libnetfilter_queue (due to renaming). I don't like the fact that it uses "struct nfattr* nfa[]" as parameter for high-level function because it is too much linked with the kernel implementation. But I do not have much time to find and propose a more elegant solution. Any idea ? BR, --=20 =C9ric Leblond, eleblond@inl.fr T=E9l=E9phone : 01 44 89 46 40, Fax : 01 44 89 45 01 INL, http://www.inl.fr --=-1Q31gMdk39pUi4MB3fj9 Content-Disposition: attachment; filename=libnetfilter_queue.diff Content-Type: text/x-patch; name=libnetfilter_queue.diff; charset=ISO-8859-15 Content-Transfer-Encoding: base64 SW5kZXg6IGluY2x1ZGUvbGlibmV0ZmlsdGVyX3F1ZXVlL2xpYm5mbmV0bGlua19xdWV1ZS5oDQo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09DQotLS0gaW5jbHVkZS9saWJuZXRmaWx0ZXJfcXVldWUvbGlibmZuZXRsaW5rX3F1 ZXVlLmgJKHJldmlzaW9uIDQzODQpDQorKysgaW5jbHVkZS9saWJuZXRmaWx0ZXJfcXVldWUvbGli bmZuZXRsaW5rX3F1ZXVlLmgJKHdvcmtpbmcgY29weSkNCkBAIC0xLDg3ICswLDAgQEANCi0vKiBs aWJuZnFuZXRsaW5rLmg6IEhlYWRlciBmaWxlIGZvciB0aGUgTmV0ZmlsdGVyIFF1ZXVlIGxpYnJh cnkuDQotICoNCi0gKiAoQykgMjAwNSBieSBIYXJhbGQgV2VsdGUgPGxhZm9yZ2VAZ251bW9ua3Mu b3JnPg0KLSAqDQotICoNCi0gKiBDaGFuZ2Vsb2cgOiANCi0gKiAJKDIwMDUvMDgvMTEpICBhZGRl ZCAgcGFyc2luZyBmdW5jdGlvbiAoRXJpYyBMZWJsb25kIDxyZWdpdEBpbmwuZnI+KQ0KLSAqIA0K LSAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIHVzZWQgYW5kIGRpc3RyaWJ1dGVkIGFjY29yZGluZyB0 byB0aGUgdGVybXMNCi0gKiBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGluY29y cG9yYXRlZCBoZXJlaW4gYnkgcmVmZXJlbmNlLg0KLSAqLw0KLQ0KLSNpZm5kZWYgX19MSUJDVE5F VExJTktfSA0KLSNkZWZpbmUgX19MSUJDVE5FVExJTktfSA0KLQ0KLSNpbmNsdWRlIDxsaWJuZm5l dGxpbmsvbGlibmZuZXRsaW5rLmg+DQotDQotI2luY2x1ZGUgPGxpbnV4L25ldGZpbHRlci9uZm5l dGxpbmsuaD4NCi0jaW5jbHVkZSA8bGludXgvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5oPg0K LQ0KLXN0cnVjdCBuZnFubF9oYW5kbGU7DQotc3RydWN0IG5mcW5sX3FfaGFuZGxlOw0KLQ0KLWV4 dGVybiBpbnQgbmZxbmxfZXJybm87DQotDQotZXh0ZXJuIHN0cnVjdCBuZm5sX2hhbmRsZSAqbmZx bmxfbmZubGgoc3RydWN0IG5mcW5sX2hhbmRsZSAqaCk7DQotZXh0ZXJuIGludCBuZnFubF9mZChz dHJ1Y3QgbmZxbmxfaGFuZGxlICpoKTsNCi0NCi10eXBlZGVmIGludCAgbmZxbmxfY2FsbGJhY2so c3RydWN0IG5mcW5sX3FfaGFuZGxlICpnaCwgc3RydWN0IG5mZ2VubXNnICpuZm1zZywNCi0JCSAg ICAgICBzdHJ1Y3QgbmZhdHRyICpuZmFbXSwgdm9pZCAqZGF0YSk7DQotDQotDQotZXh0ZXJuIHN0 cnVjdCBuZnFubF9oYW5kbGUgKm5mcW5sX29wZW4odm9pZCk7DQotZXh0ZXJuIGludCBuZnFubF9j bG9zZShzdHJ1Y3QgbmZxbmxfaGFuZGxlICpoKTsNCi0NCi1leHRlcm4gaW50IG5mcW5sX2JpbmRf cGYoc3RydWN0IG5mcW5sX2hhbmRsZSAqaCwgdV9pbnQxNl90IHBmKTsNCi1leHRlcm4gaW50IG5m cW5sX3VuYmluZF9wZihzdHJ1Y3QgbmZxbmxfaGFuZGxlICpoLCB1X2ludDE2X3QgcGYpOw0KLQ0K LWV4dGVybiBzdHJ1Y3QgbmZxbmxfcV9oYW5kbGUgKm5mcW5sX2NyZWF0ZV9xdWV1ZShzdHJ1Y3Qg bmZxbmxfaGFuZGxlICpoLA0KLQkJCSAgICAgIAkJCSB1X2ludDE2X3QgbnVtLA0KLQkJCQkJCSBu ZnFubF9jYWxsYmFjayAqY2IsDQotCQkJCQkJIHZvaWQgKmRhdGEpOw0KLWV4dGVybiBpbnQgbmZx bmxfZGVzdHJveV9xdWV1ZShzdHJ1Y3QgbmZxbmxfcV9oYW5kbGUgKnFoKTsNCi0NCi1leHRlcm4g aW50IG5mcW5sX2hhbmRsZV9wYWNrZXQoc3RydWN0IG5mcW5sX2hhbmRsZSAqaCwgY2hhciAqYnVm LCBpbnQgbGVuKTsNCi0NCi1leHRlcm4gaW50IG5mcW5sX3NldF9tb2RlKHN0cnVjdCBuZnFubF9x X2hhbmRsZSAqcWgsDQotCQkJICB1X2ludDhfdCBtb2RlLCB1bnNpZ25lZCBpbnQgbGVuKTsNCi0N Ci1leHRlcm4gaW50IG5mcW5sX3NldF92ZXJkaWN0KHN0cnVjdCBuZnFubF9xX2hhbmRsZSAqcWgs DQotCQkJICAgICB1X2ludDMyX3QgaWQsDQotCQkJICAgICB1X2ludDMyX3QgdmVyZGljdCwNCi0J CQkgICAgIHVfaW50MzJfdCBkYXRhX2xlbiwNCi0JCQkgICAgIHVuc2lnbmVkIGNoYXIgKmJ1Zik7 DQotDQotZXh0ZXJuIGludCBuZnFubF9zZXRfdmVyZGljdF9tYXJrKHN0cnVjdCBuZnFubF9xX2hh bmRsZSAqcWgsIA0KLQkJCQkgIHVfaW50MzJfdCBpZCwNCi0JCQkgICAJICB1X2ludDMyX3QgdmVy ZGljdCwgDQotCQkJCSAgdV9pbnQzMl90IG1hcmssDQotCQkJICAgCSAgdV9pbnQzMl90IGRhdGFs ZW4sDQotCQkJCSAgdW5zaWduZWQgY2hhciAqYnVmKTsNCi0NCi0vKiBtZXNzYWdlIHBhcnNpbmcg ZnVuY3Rpb24gKi8NCi0NCi1leHRlcm4gc3RydWN0IG5mcW5sX21zZ19wYWNrZXRfaGRyICoNCi0J CQkJbmZxbmxfZ2V0X21zZ19wYWNrZXRfaGRyKHN0cnVjdCBuZmF0dHIgKm5mYVtdKTsNCi0NCi1l eHRlcm4gdV9pbnQzMl90IG5mcW5sX2dldF9uZm1hcmsoc3RydWN0IG5mYXR0ciAqbmZhW10pOw0K LQ0KLWV4dGVybiBzdHJ1Y3QgbmZxbmxfbXNnX3BhY2tldF90aW1lc3RhbXAgKg0KLQkJCQluZnFu bF9nZXRfdGltZXN0YW1wKHN0cnVjdCBuZmF0dHIgKm5mYVtdKTsNCi0NCi0vKiByZXR1cm4gMCBp ZiBub3Qgc2V0ICovDQotZXh0ZXJuIHVfaW50MzJfdCBuZnFubF9nZXRfaW5kZXYoc3RydWN0IG5m YXR0ciAqbmZhW10pOw0KLWV4dGVybiB1X2ludDMyX3QgbmZxbmxfZ2V0X3BoeXNpbmRldihzdHJ1 Y3QgbmZhdHRyICpuZmFbXSk7DQotZXh0ZXJuIHVfaW50MzJfdCBuZnFubF9nZXRfb3V0ZGV2KHN0 cnVjdCBuZmF0dHIgKm5mYVtdKTsNCi1leHRlcm4gdV9pbnQzMl90IG5mcW5sX2dldF9waHlzb3V0 ZGV2KHN0cnVjdCBuZmF0dHIgKm5mYVtdKTsNCi0NCi1leHRlcm4gc3RydWN0IG5mcW5sX21zZ19w YWNrZXRfaHcgKm5mcW5sX2dldF9wYWNrZXRfaHcoc3RydWN0IG5mYXR0ciAqbmZhW10pOw0KLQ0K LS8qIHJldHVybiAwIGlmIHByb2JsZW0gKi8NCi1leHRlcm4gaW50IG5mcW5sX2dldF9wYXlsb2Fk KHN0cnVjdCBuZmF0dHIgKm5mYVtdLA0KLQkJCSAgICAgY2hhciAqKiBkYXRhLCB1bnNpZ25lZCBp bnQqIGRhdGFsZW4pOw0KLQ0KLQ0KLQ0KLSNlbmRpZgkvKiBfX0xJQk5GUU5FVExJTktfSCAqLw0K SW5kZXg6IGNvbmZpZ3VyZS5pbg0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIGNvbmZpZ3VyZS5pbgkocmV2aXNp b24gNDM4NCkNCisrKyBjb25maWd1cmUuaW4JKHdvcmtpbmcgY29weSkNCkBAIC0zLDcgKzMsNyBA QA0KIEFDX0lOSVQNCiBBQ19DQU5PTklDQUxfU1lTVEVNDQogDQotQU1fSU5JVF9BVVRPTUFLRShs aWJuZm5ldGxpbmtfcXVldWUsIDAuMC4xMCkNCitBTV9JTklUX0FVVE9NQUtFKGxpYm5ldGZpbHRl cl9xdWV1ZSwgMC4wLjExKQ0KIA0KIEFDX1BST0dfQ0MNCiBBQ19FWEVFWFQNCkBAIC02Miw0ICs2 Miw0IEBADQogDQogDQogZG5sIE91dHB1dCB0aGUgbWFrZWZpbGVzDQotQUNfT1VUUFVUKE1ha2Vm aWxlIGluY2x1ZGUvTWFrZWZpbGUgaW5jbHVkZS9saWJuZm5ldGxpbmtfcXVldWUvTWFrZWZpbGUg c3JjL01ha2VmaWxlIHV0aWxzL01ha2VmaWxlKQ0KK0FDX09VVFBVVChNYWtlZmlsZSBpbmNsdWRl L01ha2VmaWxlIGluY2x1ZGUvbGlibmV0ZmlsdGVyX3F1ZXVlL01ha2VmaWxlIHNyYy9NYWtlZmls ZSB1dGlscy9NYWtlZmlsZSkNCkluZGV4OiBzcmMvbGlibmZuZXRsaW5rX3F1ZXVlLmMNCj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0NCi0tLSBzcmMvbGlibmZuZXRsaW5rX3F1ZXVlLmMJKHJldmlzaW9uIDQzODQpDQorKysg c3JjL2xpYm5mbmV0bGlua19xdWV1ZS5jCSh3b3JraW5nIGNvcHkpDQpAQCAtMSwzNzUgKzAsMCBA QA0KLS8qIGxpYm5mcW5ldGxpbmsuYzogZ2VuZXJpYyBsaWJyYXJ5IGZvciBhY2Nlc3MgdG8gbmZf cXVldWUNCi0gKg0KLSAqIChDKSAyMDA1IGJ5IEhhcmFsZCBXZWx0ZSA8bGFmb3JnZUBnbnVtb25r cy5vcmc+DQotICoNCi0gKiAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCi0gKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgDQotICogIGFzIHB1Ymxp c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uDQotICoNCi0gKiAgVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQot ICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mDQotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUNCi0gKiAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4NCi0gKg0KLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KLSAqICBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KLSAqICBGb3VuZGF0 aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEt MTMwNyAgVVNBDQotICovDQotDQotI2luY2x1ZGUgPHN0ZGlvLmg+DQotI2luY2x1ZGUgPHN0ZGxp Yi5oPg0KLSNpbmNsdWRlIDx1bmlzdGQuaD4NCi0jaW5jbHVkZSA8c3RyaW5nLmg+DQotI2luY2x1 ZGUgPGN0eXBlLmg+DQotI2luY2x1ZGUgPHRpbWUuaD4NCi0jaW5jbHVkZSA8ZXJybm8uaD4NCi0j aW5jbHVkZSA8bmV0aW5ldC9pbi5oPg0KLSNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+DQotDQotI2lu Y2x1ZGUgPGxpYm5mbmV0bGluay9saWJuZm5ldGxpbmsuaD4NCi0jaW5jbHVkZSA8bGlibmV0Zmls dGVyX3F1ZXVlL2xpYm5ldGZpbHRlcl9xdWV1ZS5oPg0KLQ0KLXN0cnVjdCBuZnFubF9oYW5kbGUN Ci17DQotCXN0cnVjdCBuZm5sX2hhbmRsZSBuZm5saDsNCi0Jc3RydWN0IG5mcW5sX3FfaGFuZGxl ICpxaF9saXN0Ow0KLX07DQotDQotc3RydWN0IG5mcW5sX3FfaGFuZGxlDQotew0KLQlzdHJ1Y3Qg bmZxbmxfcV9oYW5kbGUgKm5leHQ7DQotCXN0cnVjdCBuZnFubF9oYW5kbGUgKmg7DQotCXVfaW50 MTZfdCBpZDsNCi0NCi0JbmZxbmxfY2FsbGJhY2sgKmNiOw0KLQl2b2lkICpkYXRhOw0KLX07DQot DQotDQotaW50IG5mcW5sX2Vycm5vOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIGxvdyBsZXZl bCBzdHVmZiANCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotc3RhdGljIHZvaWQgZGVsX3FoKHN0cnVj dCBuZnFubF9xX2hhbmRsZSAqcWgpDQotew0KLQlzdHJ1Y3QgbmZxbmxfcV9oYW5kbGUgKmN1cl9x aCwgKnByZXZfcWggPSBOVUxMOw0KLQ0KLQlmb3IgKGN1cl9xaCA9IHFoLT5oLT5xaF9saXN0OyBj dXJfcWg7IGN1cl9xaCA9IGN1cl9xaC0+bmV4dCkgew0KLQkJaWYgKGN1cl9xaCA9PSBxaCkgew0K LQkJCWlmIChwcmV2X3FoKQ0KLQkJCQlwcmV2X3FoLT5uZXh0ID0gcWgtPm5leHQ7DQotCQkJZWxz ZQ0KLQkJCQlxaC0+aC0+cWhfbGlzdCA9IHFoLT5uZXh0Ow0KLQkJCXJldHVybjsNCi0JCX0NCi0J CXByZXZfcWggPSBjdXJfcWg7DQotCX0NCi19DQotDQotc3RhdGljIHZvaWQgYWRkX3FoKHN0cnVj dCBuZnFubF9xX2hhbmRsZSAqcWgpDQotew0KLQlxaC0+bmV4dCA9IHFoLT5oLT5xaF9saXN0Ow0K LQlxaC0+aC0+cWhfbGlzdCA9IHFoOw0KLX0NCi0NCi1zdGF0aWMgc3RydWN0IG5mcW5sX3FfaGFu ZGxlICpmaW5kX3FoKHN0cnVjdCBuZnFubF9oYW5kbGUgKmgsIHVfaW50MTZfdCBpZCkNCi17DQot CXN0cnVjdCBuZnFubF9xX2hhbmRsZSAqcWg7DQotDQotCWZvciAocWggPSBoLT5xaF9saXN0OyBx aDsgcWggPSBxaC0+bmV4dCkgew0KLQkJaWYgKHFoLT5pZCA9PSBpZCkNCi0JCQlyZXR1cm4gcWg7 DQotCX0NCi0JcmV0dXJuIE5VTEw7DQotfQ0KLQ0KLS8qIGJ1aWxkIGEgTkZRTkxfTVNHX0NPTkZJ RyBtZXNzYWdlICovDQotCXN0YXRpYyBpbnQNCi1fX2J1aWxkX3NlbmRfY2ZnX21zZyhzdHJ1Y3Qg bmZxbmxfaGFuZGxlICpoLCB1X2ludDhfdCBjb21tYW5kLA0KLQkJdV9pbnQxNl90IHF1ZXVlbnVt LCB1X2ludDE2X3QgcGYpDQotew0KLQljaGFyIGJ1ZltORk5MX0hFQURFUl9MRU4NCi0JCStORkFf TEVOR1RIKHNpemVvZihzdHJ1Y3QgbmZxbmxfbXNnX2NvbmZpZ19jbWQpKV07DQotCXN0cnVjdCBu ZnFubF9tc2dfY29uZmlnX2NtZCBjbWQ7DQotCXN0cnVjdCBubG1zZ2hkciAqbm1oID0gKHN0cnVj dCBubG1zZ2hkciAqKSBidWY7DQotDQotCW5mbmxfZmlsbF9oZHIoJmgtPm5mbmxoLCBubWgsIDAs IEFGX1VOU1BFQywgcXVldWVudW0sDQotCQkJTkZRTkxfTVNHX0NPTkZJRywgTkxNX0ZfUkVRVUVT VHxOTE1fRl9BQ0spOw0KLQ0KLQljbWQuY29tbWFuZCA9IGNvbW1hbmQ7DQotCWNtZC5wZiA9IGh0 b25zKHBmKTsNCi0JbmZubF9hZGRhdHRyX2wobm1oLCBzaXplb2YoYnVmKSwgTkZRQV9DRkdfQ01E LCAmY21kLCBzaXplb2YoY21kKSk7DQotDQotCXJldHVybiBuZm5sX3RhbGsoJmgtPm5mbmxoLCBu bWgsIDAsIDAsIE5VTEwsIE5VTEwsIE5VTEwpOw0KLX0NCi0NCi1zdGF0aWMgaW50IF9fbmZxbmxf cmN2X3BrdChzdHJ1Y3Qgbmxtc2doZHIgKm5saCwgc3RydWN0IG5mYXR0ciAqbmZhW10sDQotCQl2 b2lkICpkYXRhKQ0KLXsNCi0Jc3RydWN0IG5mZ2VubXNnICpuZm1zZyA9IE5MTVNHX0RBVEEobmxo KTsNCi0Jc3RydWN0IG5mcW5sX2hhbmRsZSAqaCA9IGRhdGE7DQotCXVfaW50MTZfdCBxdWV1ZV9u dW0gPSBudG9ocyhuZm1zZy0+cmVzX2lkKTsNCi0Jc3RydWN0IG5mcW5sX3FfaGFuZGxlICpxaCA9 IGZpbmRfcWgoaCwgcXVldWVfbnVtKTsNCi0NCi0JaWYgKCFxaCkNCi0JCXJldHVybiAtRU5PREVW Ow0KLQ0KLQlpZiAoIXFoLT5jYikNCi0JCXJldHVybiAtRU5PREVWOw0KLQ0KLQlyZXR1cm4gcWgt PmNiKHFoLCBuZm1zZywgbmZhLCBxaC0+ZGF0YSk7DQotfQ0KLQ0KLXN0YXRpYyBzdHJ1Y3QgbmZu bF9jYWxsYmFjayBwa3RfY2IgPSB7DQotCS5jYWxsCQk9ICZfX25mcW5sX3Jjdl9wa3QsDQotCS5h dHRyX2NvdW50CT0gTkZRQV9NQVgsDQotfTsNCi0NCi0vKiBwdWJsaWMgaW50ZXJmYWNlICovDQot DQotc3RydWN0IG5mbmxfaGFuZGxlICpuZnFubF9uZm5saChzdHJ1Y3QgbmZxbmxfaGFuZGxlICpo KQ0KLXsNCi0JcmV0dXJuICZoLT5uZm5saDsNCi19DQotDQotaW50IG5mcW5sX2ZkKHN0cnVjdCBu ZnFubF9oYW5kbGUgKmgpDQotew0KLQlyZXR1cm4gbmZubF9mZChuZnFubF9uZm5saChoKSk7DQot fQ0KLQ0KLXN0cnVjdCBuZnFubF9oYW5kbGUgKm5mcW5sX29wZW4odm9pZCkNCi17DQotCXN0cnVj dCBuZnFubF9oYW5kbGUgKmg7DQotCWludCBlcnI7DQotDQotCWggPSBtYWxsb2Moc2l6ZW9mKCpo KSk7DQotCWlmICghaCkNCi0JCXJldHVybiBOVUxMOw0KLQ0KLQltZW1zZXQoaCwgMCwgc2l6ZW9m KCpoKSk7DQotDQotCWVyciA9IG5mbmxfb3BlbigmaC0+bmZubGgsIE5GTkxfU1VCU1lTX1FVRVVF LCBORlFOTF9NU0dfTUFYLCAwKTsNCi0JaWYgKGVyciA8IDApIHsNCi0JCW5mcW5sX2Vycm5vID0g ZXJyOw0KLQkJZ290byBvdXRfZnJlZTsNCi0JfQ0KLQ0KLQlwa3RfY2IuZGF0YSA9IGg7DQotCWVy ciA9IG5mbmxfY2FsbGJhY2tfcmVnaXN0ZXIoJmgtPm5mbmxoLCBORlFOTF9NU0dfUEFDS0VULCAm cGt0X2NiKTsNCi0JaWYgKGVyciA8IDApIHsNCi0JCW5mcW5sX2Vycm5vID0gZXJyOw0KLQkJZ290 byBvdXRfY2xvc2U7DQotCX0NCi0NCi0JcmV0dXJuIGg7DQotb3V0X2Nsb3NlOg0KLQluZm5sX2Ns b3NlKCZoLT5uZm5saCk7DQotb3V0X2ZyZWU6DQotCWZyZWUoaCk7DQotCXJldHVybiBOVUxMOw0K LX0NCi0NCi1pbnQgbmZxbmxfY2xvc2Uoc3RydWN0IG5mcW5sX2hhbmRsZSAqaCkNCi17DQotCWlu dCByZXQgPSBuZm5sX2Nsb3NlKCZoLT5uZm5saCk7DQotCWlmIChyZXQgPT0gMCkNCi0JCWZyZWUo aCk7DQotCXJldHVybiByZXQ7DQotfQ0KLQ0KLS8qIGJpbmQgbmZfcXVldWUgZnJvbSBhIHNwZWNp ZmljIHByb3RvY29sIGZhbWlseSAqLw0KLWludCBuZnFubF9iaW5kX3BmKHN0cnVjdCBuZnFubF9o YW5kbGUgKmgsIHVfaW50MTZfdCBwZikNCi17DQotCXJldHVybiBfX2J1aWxkX3NlbmRfY2ZnX21z ZyhoLCBORlFOTF9DRkdfQ01EX1BGX0JJTkQsIDAsIHBmKTsNCi19DQotDQotLyogdW5iaW5kIG5m X3F1ZXVlIGZyb20gYSBzcGVjaWZpYyBwcm90b2NvbCBmYW1pbHkgKi8NCi1pbnQgbmZxbmxfdW5i aW5kX3BmKHN0cnVjdCBuZnFubF9oYW5kbGUgKmgsIHVfaW50MTZfdCBwZikNCi17DQotCXJldHVy biBfX2J1aWxkX3NlbmRfY2ZnX21zZyhoLCBORlFOTF9DRkdfQ01EX1BGX1VOQklORCwgMCwgcGYp Ow0KLX0NCi0NCi0vKiBiaW5kIHRoaXMgc29ja2V0IHRvIGEgc3BlY2lmaWMgcXVldWUgbnVtYmVy ICovDQotc3RydWN0IG5mcW5sX3FfaGFuZGxlICpuZnFubF9jcmVhdGVfcXVldWUoc3RydWN0IG5m cW5sX2hhbmRsZSAqaCwgDQotCQl1X2ludDE2X3QgbnVtLA0KLQkJbmZxbmxfY2FsbGJhY2sgKmNi LA0KLQkJdm9pZCAqZGF0YSkNCi17DQotCWludCByZXQ7DQotCXN0cnVjdCBuZnFubF9xX2hhbmRs ZSAqcWg7DQotDQotCWlmIChmaW5kX3FoKGgsIG51bSkpDQotCQlyZXR1cm4gTlVMTDsNCi0NCi0J cWggPSBtYWxsb2Moc2l6ZW9mKCpxaCkpOw0KLQ0KLQltZW1zZXQocWgsIDAsIHNpemVvZigqcWgp KTsNCi0JcWgtPmggPSBoOw0KLQlxaC0+aWQgPSBudW07DQotCXFoLT5jYiA9IGNiOw0KLQlxaC0+ ZGF0YSA9IGRhdGE7DQotDQotCXJldCA9IF9fYnVpbGRfc2VuZF9jZmdfbXNnKGgsIE5GUU5MX0NG R19DTURfQklORCwgbnVtLCAwKTsNCi0JaWYgKHJldCA8IDApIHsNCi0JCW5mcW5sX2Vycm5vID0g cmV0Ow0KLQkJZnJlZShxaCk7DQotCQlyZXR1cm4gTlVMTDsNCi0JfQ0KLQ0KLQlhZGRfcWgocWgp Ow0KLQlyZXR1cm4gcWg7DQotfQ0KLQ0KLS8qIHVuYmluZCB0aGlzIHNvY2tldCBmcm9tIGEgc3Bl Y2lmaWMgcXVldWUgbnVtYmVyICovDQotaW50IG5mcW5sX2Rlc3Ryb3lfcXVldWUoc3RydWN0IG5m cW5sX3FfaGFuZGxlICpxaCkNCi17DQotCWludCByZXQgPSBfX2J1aWxkX3NlbmRfY2ZnX21zZyhx aC0+aCwgTkZRTkxfQ0ZHX0NNRF9VTkJJTkQsIHFoLT5pZCwgMCk7DQotCWlmIChyZXQgPT0gMCkg ew0KLQkJZGVsX3FoKHFoKTsNCi0JCWZyZWUocWgpOw0KLQl9DQotDQotCXJldHVybiByZXQ7DQot fQ0KLQ0KLWludCBuZnFubF9oYW5kbGVfcGFja2V0KHN0cnVjdCBuZnFubF9oYW5kbGUgKmgsIGNo YXIgKmJ1ZiwgaW50IGxlbikNCi17DQotCXJldHVybiBuZm5sX2hhbmRsZV9wYWNrZXQoJmgtPm5m bmxoLCBidWYsIGxlbik7DQotfQ0KLQ0KLWludCBuZnFubF9zZXRfbW9kZShzdHJ1Y3QgbmZxbmxf cV9oYW5kbGUgKnFoLA0KLQkJdV9pbnQ4X3QgbW9kZSwgdV9pbnQzMl90IHJhbmdlKQ0KLXsNCi0J Y2hhciBidWZbTkZOTF9IRUFERVJfTEVODQotCQkrTkZBX0xFTkdUSChzaXplb2Yoc3RydWN0IG5m cW5sX21zZ19jb25maWdfcGFyYW1zKSldOw0KLQlzdHJ1Y3QgbmZxbmxfbXNnX2NvbmZpZ19wYXJh bXMgcGFyYW1zOw0KLQlzdHJ1Y3Qgbmxtc2doZHIgKm5taCA9IChzdHJ1Y3Qgbmxtc2doZHIgKikg YnVmOw0KLQ0KLQluZm5sX2ZpbGxfaGRyKCZxaC0+aC0+bmZubGgsIG5taCwgMCwgQUZfVU5TUEVD LCBxaC0+aWQsDQotCQkJTkZRTkxfTVNHX0NPTkZJRywgTkxNX0ZfUkVRVUVTVHxOTE1fRl9BQ0sp Ow0KLQ0KLQlwYXJhbXMuY29weV9yYW5nZSA9IGh0b25sKHJhbmdlKTsNCi0JcGFyYW1zLmNvcHlf bW9kZSA9IG1vZGU7DQotCW5mbmxfYWRkYXR0cl9sKG5taCwgc2l6ZW9mKGJ1ZiksIE5GUUFfQ0ZH X1BBUkFNUywgJnBhcmFtcywNCi0JCQlzaXplb2YocGFyYW1zKSk7DQotDQotCXJldHVybiBuZm5s X3RhbGsoJnFoLT5oLT5uZm5saCwgbm1oLCAwLCAwLCBOVUxMLCBOVUxMLCBOVUxMKTsNCi19DQot DQotc3RhdGljIGludCBfX3NldF92ZXJkaWN0KHN0cnVjdCBuZnFubF9xX2hhbmRsZSAqcWgsIHVf aW50MzJfdCBpZCwNCi0JCXVfaW50MzJfdCB2ZXJkaWN0LCB1X2ludDMyX3QgbWFyaywgaW50IHNl dF9tYXJrLA0KLQkJdV9pbnQzMl90IGRhdGFfbGVuLCB1bnNpZ25lZCBjaGFyICpkYXRhKQ0KLXsN Ci0Jc3RydWN0IG5mcW5sX21zZ192ZXJkaWN0X2hkciB2aDsNCi0JY2hhciBidWZbTkZOTF9IRUFE RVJfTEVODQotCQkrTkZBX0xFTkdUSChzaXplb2YobWFyaykpDQotCQkrTkZBX0xFTkdUSChzaXpl b2YodmgpKV07DQotCXN0cnVjdCBubG1zZ2hkciAqbm1oID0gKHN0cnVjdCBubG1zZ2hkciAqKSBi dWY7DQotDQotCXN0cnVjdCBpb3ZlYyBpb3ZbM107DQotCWludCBudmVjczsNCi0NCi0JbWVtc2V0 KGlvdiwgMCwgc2l6ZW9mKGlvdikpOw0KLQ0KLQl2aC52ZXJkaWN0ID0gaHRvbmwodmVyZGljdCk7 DQotCXZoLmlkID0gaHRvbmwoaWQpOw0KLQ0KLQluZm5sX2ZpbGxfaGRyKCZxaC0+aC0+bmZubGgs IG5taCwgMCwgQUZfVU5TUEVDLCBxaC0+aWQsDQotCQkJTkZRTkxfTVNHX1ZFUkRJQ1QsIE5MTV9G X1JFUVVFU1QpOw0KLQ0KLQkvKiBhZGQgdmVyZGljdCBoZWFkZXIgKi8NCi0JbmZubF9hZGRhdHRy X2wobm1oLCBzaXplb2YoYnVmKSwgTkZRQV9WRVJESUNUX0hEUiwgJnZoLCBzaXplb2YodmgpKTsN Ci0NCi0JaWYgKHNldF9tYXJrKQ0KLQkJbmZubF9hZGRhdHRyMzIobm1oLCBzaXplb2YoYnVmKSwg TkZRQV9NQVJLLCBtYXJrKTsNCi0NCi0JaW92WzBdLmlvdl9iYXNlID0gbm1oOw0KLQlpb3ZbMF0u aW92X2xlbiA9IE5MTVNHX1RBSUwobm1oKSAtICh2b2lkICopbm1oOw0KLQludmVjcyA9IDE7DQot DQotCWlmIChkYXRhX2xlbikgew0KLQkJc3RydWN0IG5mYXR0ciBkYXRhX2F0dHI7DQotDQotCQlu Zm5sX2J1aWxkX25mYV9pb3ZlYygmaW92WzFdLCAmZGF0YV9hdHRyLCBORlFBX1BBWUxPQUQsDQot CQkJCWRhdGFfbGVuLCBkYXRhKTsNCi0JCW52ZWNzICs9IDI7DQotCX0NCi0NCi0JcmV0dXJuIG5m bmxfc2VuZGlvdigmcWgtPmgtPm5mbmxoLCBpb3YsIG52ZWNzLCAwKTsNCi19DQotDQotaW50IG5m cW5sX3NldF92ZXJkaWN0KHN0cnVjdCBuZnFubF9xX2hhbmRsZSAqcWgsIHVfaW50MzJfdCBpZCwN Ci0JCXVfaW50MzJfdCB2ZXJkaWN0LCB1X2ludDMyX3QgZGF0YV9sZW4sIA0KLQkJdW5zaWduZWQg Y2hhciAqYnVmKQ0KLXsNCi0JcmV0dXJuIF9fc2V0X3ZlcmRpY3QocWgsIGlkLCB2ZXJkaWN0LCAw LCAwLCBkYXRhX2xlbiwgYnVmKTsNCi19CQ0KLQ0KLWludCBuZnFubF9zZXRfdmVyZGljdF9tYXJr KHN0cnVjdCBuZnFubF9xX2hhbmRsZSAqcWgsIHVfaW50MzJfdCBpZCwNCi0JCXVfaW50MzJfdCB2 ZXJkaWN0LCB1X2ludDMyX3QgbWFyaywNCi0JCXVfaW50MzJfdCBkYXRhbGVuLCB1bnNpZ25lZCBj aGFyICpidWYpDQotew0KLQlyZXR1cm4gX19zZXRfdmVyZGljdChxaCwgaWQsIHZlcmRpY3QsIG1h cmssIDEsIGRhdGFsZW4sIGJ1Zik7DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogTWVzc2FnZSBwYXJzaW5n IGZ1bmN0aW9ucyANCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKi8NCi0NCi1zdHJ1Y3QgbmZxbmxfbXNnX3BhY2tldF9oZHIgKm5m cW5sX2dldF9tc2dfcGFja2V0X2hkcihzdHJ1Y3QgbmZhdHRyICpuZmFbXSkNCi17DQotCXJldHVy biBuZm5sX2dldF9wb2ludGVyX3RvX2RhdGEobmZhLCBORlFBX1BBQ0tFVF9IRFIsDQotCQkJCQlz dHJ1Y3QgbmZxbmxfbXNnX3BhY2tldF9oZHIpOw0KLX0NCi0NCi11aW50MzJfdCBuZnFubF9nZXRf bmZtYXJrKHN0cnVjdCBuZmF0dHIgKm5mYVtdKQ0KLXsNCi0JcmV0dXJuIG50b2hsKG5mbmxfZ2V0 X2RhdGEobmZhLCBORlFBX01BUkssIHVfaW50MzJfdCkpOw0KLX0NCi0NCi1zdHJ1Y3QgbmZxbmxf bXNnX3BhY2tldF90aW1lc3RhbXAgKm5mcW5sX2dldF90aW1lc3RhbXAoc3RydWN0IG5mYXR0ciAq bmZhW10pDQotew0KLQlyZXR1cm4gbmZubF9nZXRfcG9pbnRlcl90b19kYXRhKG5mYSwgTkZRQV9U SU1FU1RBTVAsDQotCQkJCQlzdHJ1Y3QgbmZxbmxfbXNnX3BhY2tldF90aW1lc3RhbXApOw0KLX0N Ci0NCi0vKiBhbGwgbmZxbmxfZ2V0XypkZXYoKSBmdW5jdGlvbnMgcmV0dXJuIDAgaWYgbm90IHNl dCwgc2luY2UgbGludXggb25seSBhbGxvd3MNCi0gKiBpZmluZGV4ID49IDEsIHNlZSBuZXQvY29y ZS9kZXYuYzoyNjAwICAoaW4gMi42LjEzLjEpICovDQotdV9pbnQzMl90IG5mcW5sX2dldF9pbmRl dihzdHJ1Y3QgbmZhdHRyICpuZmFbXSkNCi17DQotCXJldHVybiBudG9obChuZm5sX2dldF9kYXRh KG5mYSwgTkZRQV9JRklOREVYX0lOREVWLCB1X2ludDMyX3QpKTsNCi19DQotDQotdV9pbnQzMl90 IG5mcW5sX2dldF9waHlzaW5kZXYoc3RydWN0IG5mYXR0ciAqbmZhW10pDQotew0KLQlyZXR1cm4g bnRvaGwobmZubF9nZXRfZGF0YShuZmEsIE5GUUFfSUZJTkRFWF9QSFlTSU5ERVYsIHVfaW50MzJf dCkpOw0KLX0NCi0NCi11X2ludDMyX3QgbmZxbmxfZ2V0X291dGRldihzdHJ1Y3QgbmZhdHRyICpu ZmFbXSkNCi17DQotCXJldHVybiBudG9obChuZm5sX2dldF9kYXRhKG5mYSwgTkZRQV9JRklOREVY X09VVERFViwgdV9pbnQzMl90KSk7DQotfQ0KLQ0KLXVfaW50MzJfdCBuZnFubF9nZXRfcGh5c291 dGRldihzdHJ1Y3QgbmZhdHRyICpuZmFbXSkNCi17DQotCXJldHVybiBudG9obChuZm5sX2dldF9k YXRhKG5mYSwgTkZRQV9JRklOREVYX1BIWVNPVVRERVYsIHVfaW50MzJfdCkpOw0KLX0NCi0NCi1z dHJ1Y3QgbmZxbmxfbXNnX3BhY2tldF9odyAqbmZxbmxfZ2V0X3BhY2tldF9odyhzdHJ1Y3QgbmZh dHRyICpuZmFbXSkNCi17DQotCXJldHVybiBuZm5sX2dldF9wb2ludGVyX3RvX2RhdGEobmZhLCBO RlFBX0hXQUREUiwNCi0JCQkJCXN0cnVjdCBuZnFubF9tc2dfcGFja2V0X2h3KTsNCi19DQotDQot aW50IG5mcW5sX2dldF9wYXlsb2FkKHN0cnVjdCBuZmF0dHIgKm5mYVtdLCBjaGFyICoqZGF0YSwN Ci0JCSAgICAgIHVuc2lnbmVkIGludCAqZGF0YWxlbikNCi17DQotCSpkYXRhID0gbmZubF9nZXRf cG9pbnRlcl90b19kYXRhKG5mYSwgTkZRQV9QQVlMT0FELCBjaGFyKik7DQotCWlmICgqZGF0YSkg ew0KLQkJKmRhdGFsZW4gPSBORkFfUEFZTE9BRChuZmFbTkZRQV9QQVlMT0FELTFdKTsNCi0JCXJl dHVybiAxOw0KLQl9DQotCXJldHVybiAwOw0KLX0NCi== --=-1Q31gMdk39pUi4MB3fj9-- --=-EGaEZSh5hcpq9rXEzpZG Content-Type: application/pgp-signature; name=signature.asc Content-Description: Ceci est une partie de message =?ISO-8859-1?Q?num=E9riquement?= =?ISO-8859-1?Q?_sign=E9e?= -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.1 (GNU/Linux) iD8DBQBDXzQKnxA7CdMWjzIRAicTAJ0di8/fJKeVbdaPEe8KXh0eLUoE1gCfTWBo ixtp21bjmTHDQwdncUjm3AI= =FW+X -----END PGP SIGNATURE----- --=-EGaEZSh5hcpq9rXEzpZG--