From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: passt.top; dmarc=fail (p=none dis=none) header.from=gmail.com Received: from [10.196.169.86] (unknown [105.199.60.27]) by passt.top (Postfix) with ESMTP id E15B35A0269 for ; Fri, 04 Sep 2026 23:29:35 +0200 (CEST) X-FEAS-Client-IP: 10.196.169.86 Received: by Ammars-Air.localdomain (Postfix, from userid 501) id 1CC6AFD0F65; Sat, 5 Sep 2026 00:29:03 +0300 (EEST) From: aerosouund To: passt-dev@passt.top Subject: [PATCH 5/7] tap, tcp, udp: Prepare the to-guest path for vhost-net Date: Sat, 5 Sep 2026 00:28:24 +0300 Message-Id: <20260904212826.41027-6-aerosound161@gmail.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) In-Reply-To: <20260904212826.41027-1-aerosound161@gmail.com> References: <20260904212826.41027-1-aerosound161@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Message-ID-Hash: F53HZBTZ2RYDMAWEQE3L7FHSGOAUHOLA X-Message-ID-Hash: F53HZBTZ2RYDMAWEQE3L7FHSGOAUHOLA X-MailFrom: ammaryasser@Ammars-Air.localdomain X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: eperezma@redhat.com, Ammar Yasser X-Mailman-Version: 3.3.8 Precedence: list List-Id: Development discussion and patches for passt Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: RnJvbTogQW1tYXIgWWFzc2VyIDxhZXJvc291bmQxNjFAZ21haWwuY29tPg0KDQpGcmFtZXMgc2Vu dCB0aHJvdWdoIHZob3N0LW5ldCBjYXJyeSBhIHZpcnRpby1uZXQgaGVhZGVyIHdoZXJlIHBhc3Rh J3MNCnRhcCBoZWFkZXIgd291bGQgb3RoZXJ3aXNlIGdvLCB0aGlzIG5lY2Vzc2l0YXRlcyB0aGUg Zm9sbG93aW5nIHR3bw0KY2hhbmdlczoNCg0KLSB1ZHBfdGFwX3ByZXBhcmUoKSBoYXMgYmVlbiBt b2RpZmllZCB0byB0YWtlIGEgY29udGV4dCBwYXJhbWV0ZXIgc28gaXQNCiAgY2FuIGNoZWNrIGlm IHZob3N0IGlzIHNldCB1cC4gT25seSBpZiBpdCBpc24ndCBzaG91bGQgdGFwX2hkcl91cGRhdGUN CiAgYmUgY2FsbGVkIGJlY2F1c2UgdGhpcyBtZWFucyB0aGF0IHRoZSBhY3RpdmUgdW5pb24gdmFy aWFudCBpcyB2bmV0X2xlbg0KICBubyB0aGUgdmlydGlvIG5ldCBoZWFkZXINCi0gdGFwX2wyX29m ZnNldCgpIGEgbmV3IGhlbHBlciwgaGFzIGJlZW4gaW50cm9kdWNlZCB3aGljaCB0ZWxscw0KICBw Y2FwX211bHRpcGxlKCkgaG93IG1hbnkgYnl0ZXMgcHJlY2VkZSB0aGUgTDIgZnJhbWUsIHdoaWNo IG5vdyB2YXJpZXMNCiAgd2l0aCB2aG9zdCBhcyB3ZWxsIGFzIHdpdGggdGhlIG1vZGUNCg0KdGFw X3NlbmRfc2luZ2xlKCkgY2FsbHMgdGFwX3NlbmRfZnJhbWVzX3Bhc3N0KCkgYW5kDQp0YXBfc2Vu ZF9mcmFtZXNfcGFzdGEoKSBkaXJlY3RseSByYXRoZXIgdGhhbiBnb2luZyB0aHJvdWdoDQp0YXBf c2VuZF9mcmFtZXMoKS4gSXRzIGNhbGxlcnMgLSBBUlAsIFRDUCByZXNldHMsIGFuZCBESENQLCBE SENQdjYsIE5EUA0KYW5kIElDTVAgdmlhIHRhcF91ZHAqX3NlbmQoKS90YXBfaWNtcCpfc2VuZCgp IC0gYnVpbGQgdGhlaXIgZnJhbWUgaW4gYQ0KYnVmZmVyIG9uIHRoZSBzdGFjaywgbm90IGluIHRo ZSBidWZmZXJzIHJlZ2lzdGVyZWQgd2l0aCB2aG9zdC1uZXQuIFRoZQ0Ka2VybmVsIGNhbiBvbmx5 IHJlYWQgZnJvbSByZWdpc3RlcmVkIG1lbW9yeSwgc28gdGhlc2UgcHJvdG9jb2xzIGNhbg0KbmV2 ZXIgdGFrZSB0aGUgdmhvc3QgcGF0aCBhbmQgc2hvdWxkbid0IGJlIHRlc3RlZCBmb3IgaXQgb24g ZXZlcnkgZnJhbWUuDQoNClNpZ25lZC1vZmYtYnk6IEV1Z2VuaW8gUMOpcmV6IDxlcGVyZXptYUBy ZWRoYXQuY29tPg0KU2lnbmVkLW9mZi1ieTogQW1tYXIgWWFzc2VyIDxhZXJvc291bmQxNjFAZ21h aWwuY29tPg0KLS0tDQogdGFwLmMgICAgIHwgMTEyICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIHRjcF9idWYuYyB8ICAxMiArKysrLS0NCiB1 ZHAuYyAgICAgfCAgMjcgKysrKysrKysrLS0tLQ0KIDMgZmlsZXMgY2hhbmdlZCwgOTkgaW5zZXJ0 aW9ucygrKSwgNTIgZGVsZXRpb25zKC0pDQoNCmRpZmYgLS1naXQgYS90YXAuYyBiL3RhcC5jDQpp bmRleCBmODRjYjBhLi5jNzMwNTM1IDEwMDY0NA0KLS0tIGEvdGFwLmMNCisrKyBiL3RhcC5jDQpA QCAtMTIzLDQ1ICsxMjMsNiBAQCB1bnNpZ25lZCBsb25nIHRhcF9sMl9tYXhfbGVuKGNvbnN0IHN0 cnVjdCBjdHggKmMpDQogCXJldHVybiAwOyAvKiBVbnJlYWNoYWJsZSwgZm9yIGNwcGNoZWNrJ3Mg c2FrZSAqLw0KIH0NCiANCi0vKioNCi0gKiB0YXBfc2VuZF9zaW5nbGUoKSAtIFNlbmQgYSBzaW5n bGUgZnJhbWUNCi0gKiBAYzoJCUV4ZWN1dGlvbiBjb250ZXh0DQotICogQGRhdGE6CVBhY2tldCBi dWZmZXINCi0gKiBAbDJsZW46CVRvdGFsIEwyIHBhY2tldCBsZW5ndGgNCi0gKi8NCi12b2lkIHRh cF9zZW5kX3NpbmdsZShjb25zdCBzdHJ1Y3QgY3R4ICpjLCBjb25zdCB2b2lkICpkYXRhLCBzaXpl X3QgbDJsZW4pDQotew0KLQl1aW50OF90IHBhZGRlZFtFVEhfWkxFTl0gPSB7IDAgfTsNCi0Jc3Ry dWN0IGlvdmVjIGlvdlsyXTsNCi0Jc2l6ZV90IGlvdmNudCA9IDA7DQotCXVpbnQzMl90IHZuZXRf bGVuOw0KLQ0KLQlpZiAobDJsZW4gPCBFVEhfWkxFTikgew0KLQkJbWVtY3B5KHBhZGRlZCwgZGF0 YSwgbDJsZW4pOw0KLQkJZGF0YSA9IHBhZGRlZDsNCi0JCWwybGVuID0gRVRIX1pMRU47DQotCX0N Ci0NCi0Jdm5ldF9sZW4gPSBodG9ubChsMmxlbik7DQotDQotCXN3aXRjaCAoYy0+bW9kZSkgew0K LQljYXNlIE1PREVfUEFTU1Q6DQotCQlpb3ZbaW92Y250XSA9IElPVl9PRl9MVkFMVUUodm5ldF9s ZW4pOw0KLQkJaW92Y250Kys7DQotCQkvKiBmYWxsIHRocm91Z2ggKi8NCi0JY2FzZSBNT0RFX1BB U1RBOg0KLQkJaW92W2lvdmNudF0uaW92X2Jhc2UgPSAodm9pZCAqKWRhdGE7DQotCQlpb3ZbaW92 Y250XS5pb3ZfbGVuID0gbDJsZW47DQotCQlpb3ZjbnQrKzsNCi0NCi0JCXRhcF9zZW5kX2ZyYW1l cyhjLCBpb3YsIGlvdmNudCwgMSk7DQotCQlicmVhazsNCi0JY2FzZSBNT0RFX1ZVOg0KLQkJdnVf c2VuZF9zaW5nbGUoYywgZGF0YSwgbDJsZW4pOw0KLQkJYnJlYWs7DQotCX0NCi19DQotDQogLyoq DQogICogdGFwX3B1c2hfbDJoKCkgLSBCdWlsZCBhbiBMMiBoZWFkZXIgZm9yIGFuIGluYm91bmQg cGFja2V0DQogICogQGM6CQlFeGVjdXRpb24gY29udGV4dA0KQEAgLTQ5Nyw2ICs0NTgsNzYgQEAg c3RhdGljIHNpemVfdCB0YXBfc2VuZF9mcmFtZXNfcGFzc3QoY29uc3Qgc3RydWN0IGN0eCAqYywN CiAJcmV0dXJuIGkgLyBidWZzX3Blcl9mcmFtZTsNCiB9DQogDQorLyoqDQorICogdGFwX2wyX29m ZnNldCgpIC0gQmFja2VuZCBzcGVjaWZpYyBoZWFkZXIgc2l6ZSBwcmVjZWRpbmcgZWFjaCBMMiBm cmFtZQ0KKyAqIEBjOgkJRXhlY3V0aW9uIGNvbnRleHQNCisgKg0KKyAqIFJldHVybjogb2Zmc2V0 IG9mIHRoZSBMMiBmcmFtZSB3aXRoaW4gZWFjaCBmcmFtZSdzIGZpcnN0IGJ1ZmZlcg0KKyAqLw0K K3N0YXRpYyBzaXplX3QgdGFwX2wyX29mZnNldChjb25zdCBzdHJ1Y3QgY3R4ICpjKQ0KK3sNCisJ aWYgKGMtPm1vZGUgPT0gTU9ERV9QQVNTVCkNCisJCXJldHVybiBzaXplb2YodWludDMyX3QpOwkv KiB2bmV0X2xlbiAqLw0KKw0KKwlpZiAoYy0+dmhvc3QuZmQgIT0gLTEpDQorCQlyZXR1cm4gVk5F VF9ITEVOOw0KKw0KKwlyZXR1cm4gMDsNCit9DQorDQorLyoqDQorICogdGFwX3NlbmRfc2luZ2xl KCkgLSBTZW5kIGEgc2luZ2xlIGZyYW1lDQorICogQGM6CQlFeGVjdXRpb24gY29udGV4dA0KKyAq IEBkYXRhOglQYWNrZXQgYnVmZmVyDQorICogQGwybGVuOglUb3RhbCBMMiBwYWNrZXQgbGVuZ3Ro DQorICovDQordm9pZCB0YXBfc2VuZF9zaW5nbGUoY29uc3Qgc3RydWN0IGN0eCAqYywgY29uc3Qg dm9pZCAqZGF0YSwgc2l6ZV90IGwybGVuKQ0KK3sNCisJdWludDhfdCBwYWRkZWRbRVRIX1pMRU5d ID0geyAwIH07DQorCXN0cnVjdCBpb3ZlYyBpb3ZbMl07DQorCXVpbnQzMl90IHZuZXRfbGVuOw0K KwlzaXplX3QgaW92Y250ID0gMDsNCisJc2l6ZV90IG0gPSAwOw0KKw0KKwlpZiAobDJsZW4gPCBF VEhfWkxFTikgew0KKwkJbWVtY3B5KHBhZGRlZCwgZGF0YSwgbDJsZW4pOw0KKwkJZGF0YSA9IHBh ZGRlZDsNCisJCWwybGVuID0gRVRIX1pMRU47DQorCX0NCisNCisJdm5ldF9sZW4gPSBodG9ubChs Mmxlbik7DQorDQorCXN3aXRjaCAoYy0+bW9kZSkgew0KKwljYXNlIE1PREVfUEFTU1Q6DQorCQkv KiBjcmVhdGUgYW4gaW92IGZvciB0aGUgbGVuZ3RoICovDQorCQlpb3ZbaW92Y250XSA9IElPVl9P Rl9MVkFMVUUodm5ldF9sZW4pOw0KKwkJaW92Y250Kys7DQorCQkvKiBjcmVhdGUgdGhlIGRhdGEg aW92ICovDQorCQlpb3ZbaW92Y250XS5pb3ZfYmFzZSA9ICh2b2lkICopZGF0YTsNCisJCWlvdltp b3ZjbnRdLmlvdl9sZW4gPSBsMmxlbjsNCisJCWlvdmNudCsrOw0KKw0KKwkJbSA9IHRhcF9zZW5k X2ZyYW1lc19wYXNzdChjLCBpb3YsIGlvdmNudCwgMSk7DQorCQlicmVhazsNCisJY2FzZSBNT0RF X1BBU1RBOg0KKwkJLyogZG9uJ3QgY3JlYXRlIGEgbGVuZ3RoIGlvdiBpbiB0aGUgY2FzZSBvZiBw YXN0YSAqLw0KKwkJaW92W2lvdmNudF0uaW92X2Jhc2UgPSAodm9pZCAqKWRhdGE7DQorCQlpb3Zb aW92Y250XS5pb3ZfbGVuID0gbDJsZW47DQorCQlpb3ZjbnQrKzsNCisNCisJCW0gPSB0YXBfc2Vu ZF9mcmFtZXNfcGFzdGEoYywgaW92LCBpb3ZjbnQsIDEpOw0KKwkJYnJlYWs7DQorCWNhc2UgTU9E RV9WVToNCisJCXZ1X3NlbmRfc2luZ2xlKGMsIGRhdGEsIGwybGVuKTsNCisJCXJldHVybjsNCisJ fQ0KKw0KKwlpZiAoIW0pDQorCQlkZWJ1ZygidGFwOiBmYWlsZWQgdG8gc2VuZCBhIHNpbmdsZSBm cmFtZSIpOw0KKw0KKwlwY2FwX211bHRpcGxlKGlvdiwgaW92Y250LCBtLCB0YXBfbDJfb2Zmc2V0 KGMpKTsNCit9DQorDQogLyoqDQogICogdGFwX3NlbmRfZnJhbWVzKCkgLSBTZW5kIG91dCBtdWx0 aXBsZSBwcmVwYXJlZCBmcmFtZXMNCiAgKiBAYzoJCQlFeGVjdXRpb24gY29udGV4dA0KQEAgLTUz Nyw4ICs1NjgsNyBAQCBzaXplX3QgdGFwX3NlbmRfZnJhbWVzKGNvbnN0IHN0cnVjdCBjdHggKmMs IGNvbnN0IHN0cnVjdCBpb3ZlYyAqaW92LA0KIAkJZGVidWcoInRhcDogZmFpbGVkIHRvIHNlbmQg JXp1IGZyYW1lcyBvZiAlenUiLA0KIAkJICAgICAgbmZyYW1lcyAtIG0sIG5mcmFtZXMpOw0KIA0K LQlwY2FwX211bHRpcGxlKGlvdiwgYnVmc19wZXJfZnJhbWUsIG0sDQotCQkgICAgICBjLT5tb2Rl ID09IE1PREVfUEFTU1QgPyBzaXplb2YodWludDMyX3QpIDogMCk7DQorCXBjYXBfbXVsdGlwbGUo aW92LCBidWZzX3Blcl9mcmFtZSwgbSwgdGFwX2wyX29mZnNldChjKSk7DQogDQogCXJldHVybiBt Ow0KIH0NCmRpZmYgLS1naXQgYS90Y3BfYnVmLmMgYi90Y3BfYnVmLmMNCmluZGV4IDFmMjg3Mjgu LjljYzU0MWEgMTAwNjQ0DQotLS0gYS90Y3BfYnVmLmMNCisrKyBiL3RjcF9idWYuYw0KQEAgLTIx LDYgKzIxLDcgQEANCiAjaW5jbHVkZSA8bmV0aW5ldC9pcC5oPg0KIA0KICNpbmNsdWRlIDxuZXRp bmV0L3RjcC5oPg0KKyNpbmNsdWRlIDxsaW51eC92aXJ0aW9fbmV0Lmg+DQogDQogI2luY2x1ZGUg InV0aWwuaCINCiAjaW5jbHVkZSAiaXAuaCINCkBAIC00Miw3ICs0Myw3IEBADQogLyogRXRoZXJu ZXQgaGVhZGVyIGZvciBJUHY0IGFuZCBJUHY2IGZyYW1lcyAqLw0KIHN0YXRpYyBzdHJ1Y3QgZXRo aGRyCQl0Y3BfZXRoX2hkcltUQ1BfRlJBTUVTX01FTV07DQogDQotc3RhdGljIHN0cnVjdCB0YXBf aGRyCQl0Y3BfcGF5bG9hZF90YXBfaGRyW1RDUF9GUkFNRVNfTUVNXTsNCitzdGF0aWMgc3RydWN0 IHZpcnRpb19uZXRfaGRyX21yZ19yeGJ1ZiB0Y3BfcGF5bG9hZF90YXBfaGRyW1RDUF9GUkFNRVNf TUVNXTsNCiANCiAvKiBJUCBoZWFkZXJzIGZvciBJUHY0IGFuZCBJUHY2ICovDQogc3RhdGljIHN0 cnVjdCBpcGhkcgkJdGNwNF9wYXlsb2FkX2lwW1RDUF9GUkFNRVNfTUVNXTsNCkBAIC0xMDcsNyAr MTA4LDcgQEAgdm9pZCB0Y3Bfc29ja19pb3ZfaW5pdChjb25zdCBzdHJ1Y3QgY3R4ICpjKQ0KIAlm b3IgKGkgPSAwOyBpIDwgVENQX0ZSQU1FU19NRU07IGkrKykgew0KIAkJc3RydWN0IGlvdmVjICpp b3YgPSB0Y3BfbDJfaW92W2ldOw0KIA0KLQkJaW92W1RDUF9JT1ZfVEFQXSA9IHRhcF9oZHJfaW92 KGMsICZ0Y3BfcGF5bG9hZF90YXBfaGRyW2ldKTsNCisJCWlvdltUQ1BfSU9WX1RBUF0gPSB0YXBf aGRyX2lvdihjLCAoc3RydWN0IHRhcF9oZHIgKikmdGNwX3BheWxvYWRfdGFwX2hkcltpXSk7DQog CQlpb3ZbVENQX0lPVl9FVEhdLmlvdl9sZW4gPSBzaXplb2Yoc3RydWN0IGV0aGhkcik7DQogCQlp b3ZbVENQX0lPVl9QQVlMT0FEXS5pb3ZfYmFzZSA9ICZ0Y3BfcGF5bG9hZFtpXTsNCiAJCWlvdltU Q1BfSU9WX0VUSF9QQURdLmlvdl9iYXNlID0gZXRoX3BhZDsNCkBAIC0yMTAsNyArMjExLDEyIEBA IHN0YXRpYyB2b2lkIHRjcF9sMl9idWZfZmlsbF9oZWFkZXJzKGNvbnN0IHN0cnVjdCBjdHggKmMs DQogDQogCWwybGVuID0gdGNwX2ZpbGxfaGVhZGVycyhjLCBjb25uLCBlaCwgaXA0aCwgaXA2aCwg dGgsICZ0YWlsLA0KIAkJCQkgaW92X3RhaWxfc2l6ZSgmdGFpbCksIGNzdW1fZmxhZ3MsIHNlcSk7 DQotCXRhcF9oZHJfdXBkYXRlKHRhcGgsIGwybGVuKTsNCisNCisJLyogV2l0aCB2aG9zdC1uZXQg dGhpcyBidWZmZXIgaG9sZHMgYSB2aXJ0aW8tbmV0IGhlYWRlciwgd2hpY2ggYSB0YXANCisJICog b25lIG11c3Qgbm90IGJlIHdyaXR0ZW4gb3Zlcg0KKwkgKi8NCisJaWYgKGMtPnZob3N0LmZkID09 IC0xKQ0KKwkJdGFwX2hkcl91cGRhdGUodGFwaCwgbDJsZW4pOw0KIH0NCiANCiAvKioNCmRpZmYg LS1naXQgYS91ZHAuYyBiL3VkcC5jDQppbmRleCA1ZTNiZDg2Li5lMzYwY2NmIDEwMDY0NA0KLS0t IGEvdWRwLmMNCisrKyBiL3VkcC5jDQpAQCAtMTAzLDYgKzEwMyw3IEBADQogI2luY2x1ZGUgPHRp bWUuaD4NCiAjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+DQogI2luY2x1ZGUgPGxpbnV4L2VycnF1ZXVl Lmg+DQorI2luY2x1ZGUgPGxpbnV4L3ZpcnRpb19uZXQuaD4NCiANCiAjaW5jbHVkZSAiY2hlY2tz dW0uaCINCiAjaW5jbHVkZSAidXRpbC5oIg0KQEAgLTE0NywxMiArMTQ4LDE2IEBAIHN0YXRpYyBz dHJ1Y3QgZXRoaGRyIHVkcF9ldGhfaGRyW1VEUF9NQVhfRlJBTUVTXTsNCiAgKiBzdHJ1Y3QgdWRw X21ldGFfdCAtIFByZS1jb29rZWQgaGVhZGVycyBmb3IgVURQIHBhY2tldHMNCiAgKiBAaXA2aDoJ UHJlLWZpbGxlZCBJUHY2IGhlYWRlciAoZXhjZXB0IGZvciBwYXlsb2FkX2xlbiBhbmQgYWRkcmVz c2VzKQ0KICAqIEBpcDRoOglQcmUtZmlsbGVkIElQdjQgaGVhZGVyIChleGNlcHQgZm9yIHRvdF9s ZW4gYW5kIHNhZGRyKQ0KLSAqIEB0YXBoOglUYXAgYmFja2VuZCBzcGVjaWZpYyBoZWFkZXINCisg KiBAdm5ldF9oZHI6CXZpcnRpby1uZXQgaGVhZGVyLCB1c2VkIHdoZW4gc2VuZGluZyB0aHJvdWdo IHZob3N0LW5ldA0KKyAqIEB0YXBoOglUYXAgYmFja2VuZCBzcGVjaWZpYyBoZWFkZXIsIHVzZWQg b3RoZXJ3aXNlDQogICovDQogc3RhdGljIHN0cnVjdCB1ZHBfbWV0YV90IHsNCiAJc3RydWN0IGlw djZoZHIgaXA2aDsNCiAJc3RydWN0IGlwaGRyIGlwNGg7DQotCXN0cnVjdCB0YXBfaGRyIHRhcGg7 DQorCXVuaW9uIHsNCisJCXN0cnVjdCB2aXJ0aW9fbmV0X2hkcl9tcmdfcnhidWYgdm5ldF9oZHI7 DQorCQlzdHJ1Y3QgdGFwX2hkciB0YXBoOw0KKwl9Ow0KIH0NCiAjaWZkZWYgX19BVlgyX18NCiBf X2F0dHJpYnV0ZV9fICgoYWxpZ25lZCgzMikpKQ0KQEAgLTM1NCwxMyArMzU5LDE1IEBAIHN0YXRp YyB2b2lkIHVkcF90YXBfcGFkKHN0cnVjdCBpb3ZlYyAqaW92KQ0KIA0KIC8qKg0KICAqIHVkcF90 YXBfcHJlcGFyZSgpIC0gQ29udmVydCBvbmUgZGF0YWdyYW0gaW50byBhIHRhcCBmcmFtZQ0KKyAq IEBjOiAgICAgIEV4ZWN1dGlvbiBjb250ZXh0DQogICogQG1taDoJUmVjZWl2aW5nIG1tc2doZHIg YXJyYXkNCiAgKiBAaWR4OglJbmRleCBvZiB0aGUgZGF0YWdyYW0gdG8gcHJlcGFyZQ0KICAqIEB0 YXBfb21hYzoJTUFDIGFkZHJlc3Mgb2YgcmVtb3RlIGVuZHBvaW50IGFzIHNlZW4gZnJvbSB0aGUg Z3Vlc3QNCiAgKiBAdG9zaWRlOglGbG93c2lkZSBmb3IgZGVzdGluYXRpb24gc2lkZQ0KICAqIEBu b191ZHBfY3N1bTogRG8gbm90IHNldCBVRFAgY2hlY2tzdW0NCiAgKi8NCi1zdGF0aWMgdm9pZCB1 ZHBfdGFwX3ByZXBhcmUoY29uc3Qgc3RydWN0IG1tc2doZHIgKm1taCwNCitzdGF0aWMgdm9pZCB1 ZHBfdGFwX3ByZXBhcmUoY29uc3Qgc3RydWN0IGN0eCAqYywNCisJCQkJY29uc3Qgc3RydWN0IG1t c2doZHIgKm1taCwNCiAJCQkgICAgdW5zaWduZWQgaW50IGlkeCwNCiAJCQkgICAgY29uc3QgdWlu dDhfdCAqdGFwX29tYWMsDQogCQkJICAgIGNvbnN0IHN0cnVjdCBmbG93c2lkZSAqdG9zaWRlLA0K QEAgLTM4Miw4ICszODksMTAgQEAgc3RhdGljIHZvaWQgdWRwX3RhcF9wcmVwYXJlKGNvbnN0IHN0 cnVjdCBtbXNnaGRyICptbWgsDQogCQl1ZHBfdXBkYXRlX2hkcjYoJmJtLT5pcDZoLCB1aCwgJnBh eWxvYWQsIHRvc2lkZSwNCiAJCQkgICAgICAgIG1taFtpZHhdLm1zZ19sZW4sIG5vX3VkcF9jc3Vt KTsNCiANCi0JCWwybGVuID0gTUFYKGw0bGVuICsgc2l6ZW9mKGJtLT5pcDZoKSArIEVUSF9ITEVO LCBFVEhfWkxFTik7DQotCQl0YXBfaGRyX3VwZGF0ZSgmYm0tPnRhcGgsIGwybGVuKTsNCisJCWlm IChjLT5tb2RlID09IE1PREVfUEFTU1QpIHsNCisJCQlsMmxlbiA9IE1BWChsNGxlbiArIHNpemVv ZihibS0+aXA2aCkgKyBFVEhfSExFTiwgRVRIX1pMRU4pOw0KKwkJCXRhcF9oZHJfdXBkYXRlKCZi bS0+dGFwaCwgbDJsZW4pOw0KKwkJfQ0KIA0KIAkJZWgtPmhfcHJvdG8gPSBodG9uc19jb25zdGFu dChFVEhfUF9JUFY2KTsNCiAJCSgqdGFwX2lvdilbVURQX0lPVl9JUF0gPSBJT1ZfT0ZfTFZBTFVF KGJtLT5pcDZoKTsNCkBAIC0zOTEsOCArNDAwLDEwIEBAIHN0YXRpYyB2b2lkIHVkcF90YXBfcHJl cGFyZShjb25zdCBzdHJ1Y3QgbW1zZ2hkciAqbW1oLA0KIAkJdWRwX3VwZGF0ZV9oZHI0KCZibS0+ aXA0aCwgdWgsICZwYXlsb2FkLCB0b3NpZGUsDQogCQkJICAgICAgICBtbWhbaWR4XS5tc2dfbGVu LCBub191ZHBfY3N1bSk7DQogDQotCQlsMmxlbiA9IE1BWChsNGxlbiArIHNpemVvZihibS0+aXA0 aCkgKyBFVEhfSExFTiwgRVRIX1pMRU4pOw0KLQkJdGFwX2hkcl91cGRhdGUoJmJtLT50YXBoLCBs Mmxlbik7DQorCQlpZiAoYy0+bW9kZSA9PSBNT0RFX1BBU1NUKSB7DQorCQkJbDJsZW4gPSBNQVgo bDRsZW4gKyBzaXplb2YoYm0tPmlwNGgpICsgRVRIX0hMRU4sIEVUSF9aTEVOKTsNCisJCQl0YXBf aGRyX3VwZGF0ZSgmYm0tPnRhcGgsIGwybGVuKTsNCisJCX0NCiANCiAJCWVoLT5oX3Byb3RvID0g aHRvbnNfY29uc3RhbnQoRVRIX1BfSVApOw0KIAkJKCp0YXBfaW92KVtVRFBfSU9WX0lQXSA9IElP Vl9PRl9MVkFMVUUoYm0tPmlwNGgpOw0KQEAgLTg2MSw3ICs4NzIsNyBAQCBzdGF0aWMgdm9pZCB1 ZHBfYnVmX3NvY2tfdG9fdGFwKGNvbnN0IHN0cnVjdCBjdHggKmMsIGludCBzLCBpbnQgbiwNCiAJ CWZ3ZF9uZWlnaF9tYWNfZ2V0KGMsICZ0b3NpZGUtPm9hZGRyLCBvbWFjKTsNCiANCiAJZm9yIChp ID0gMDsgaSA8IG47IGkrKykNCi0JCXVkcF90YXBfcHJlcGFyZSh1ZHBfbWhfcmVjdiwgaSwgb21h YywgdG9zaWRlLCBmYWxzZSk7DQorCQl1ZHBfdGFwX3ByZXBhcmUoYywgdWRwX21oX3JlY3YsIGks IG9tYWMsIHRvc2lkZSwgZmFsc2UpOw0KIA0KIAl0YXBfc2VuZF9mcmFtZXMoYywgJnVkcF9sMl9p b3ZbMF1bMF0sIFVEUF9OVU1fSU9WUywgbik7DQogfQ0KLS0gDQoyLjM5LjUgKEFwcGxlIEdpdC0x NTQpDQoNCg==