From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: passt.top; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: passt.top; dkim=pass (1024-bit key; unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=WlXa1QBV; dkim-atps=neutral Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by passt.top (Postfix) with ESMTPS id 0D57D5A028E for ; Wed, 09 Jul 2025 19:48:06 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1752083285; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=wJgNgNB4mMUyNKyAoPMhBifUZPI40Qe9ZITE925vsFo=; b=WlXa1QBVA1m6RPsIMtIGf9Wba74c5+uZzwdB1rVyj0UCM2ps984CHBVWxY/a28UON9O8pR qQ0YkvFYlXPygBb17aOHaKfeb4MvhGzN2ZcOTPhqLqUvH0iX9xzCA+YyDXbo7fL2WHuVtF FO9PS/DwAParRKos4X6I4etgmM0ptoM= Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-466-w9RhJUkBP_ik8FV2DvIrTQ-1; Wed, 09 Jul 2025 13:48:04 -0400 X-MC-Unique: w9RhJUkBP_ik8FV2DvIrTQ-1 X-Mimecast-MFC-AGG-ID: w9RhJUkBP_ik8FV2DvIrTQ_1752083283 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id CB02F193F05D for ; Wed, 9 Jul 2025 17:48:03 +0000 (UTC) Received: from fedora.redhat.com (unknown [10.45.225.131]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id A1D4930001BE; Wed, 9 Jul 2025 17:48:02 +0000 (UTC) From: =?UTF-8?q?Eugenio=20P=C3=A9rez?= To: passt-dev@passt.top Subject: [RFC v2 07/11] tap: support tx through vhost Date: Wed, 9 Jul 2025 19:47:44 +0200 Message-ID: <20250709174748.3514693-8-eperezma@redhat.com> In-Reply-To: <20250709174748.3514693-1-eperezma@redhat.com> References: <20250709174748.3514693-1-eperezma@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: 2xncsHduWANRfH9sczPb6Fhx5K2A1lh0cJpaIPShRjw_1752083283 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Message-ID-Hash: YI67PZ3LS7EYU3RLJA4BSQOAWGAUPZDM X-Message-ID-Hash: YI67PZ3LS7EYU3RLJA4BSQOAWGAUPZDM X-MailFrom: eperezma@redhat.com 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: jasowang@redhat.com 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: Tm8gdXNlcnMgZW5hYmxlIHZob3N0IHJpZ2h0IG5vdywganVzdCBkZWZpbmluZyB0aGUgZnVuY3Rp b25zLg0KDQpUaGUgdXNlIG9mIHZpcnRxdWV1ZSBpcyBzaW1pbGFyIHRoYW4gaW4gcnggY2FzZS4g IGZpbGxzIHRoZSBkZXNjcmlwdG9yDQp0YWJsZSB3aXRoIHBhY2tldCBkYXRhIGl0IHdhbnRzIHRv IHNlbmQgdG8gdGhlIG5hbWVzcGFjZS4gIEVhY2gNCmRlc2NyaXB0b3IgcG9pbnRzIHRvIGEgYnVm ZmVyIGluIG1lbW9yeSwgd2l0aCBhbiBhZGRyZXNzIGFuZCBhIGxlbmd0aC4NClRoZSBudW1iZXIg b2YgZGVzY3JpcHRvcnMgaXMgYWdhaW4gZGVmaW5lZCBieSBWSE9TVF9OREVTQ1MuDQoNCkFmdGVy d2FyZHMgaXQgd3JpdGVzIHRoZSBkZXNjcmlwdG9yIGluZGV4IGludG8gdGhlIGF2YWlsLT5yaW5n W10gYXJyYXksDQp0aGVuIGluY3JlbWVudHMgYXZhaWwtPmlkeCB0byBtYWtlIGl0IHZpc2libGUg dG8gdGhlIGtlcm5lbCwgdGhlbiBraWNrcw0KdGhlIHZpcnRxdWV1ZSAxIGV2ZW50IGZkLg0KDQpX aGVuIHRoZSBrZXJuZWwgZG9lcyBub3QgbmVlZCB0aGUgYnVmZmVyIGFueW1vcmUgaXQgd3JpdGVz IGl0cyBpZCBpbnRvDQp0aGUgdXNlZF9yaW5nLT5yaW5nW10sIGFuZCBpbmNyZW1lbnRzIHVzZWRf cmluZy0+aWR4LiAgTm9ybWFsbHksIHRoZQ0Ka2VybmVsIGFsc28gbm90aWZpZXMgcGFzdGEgdGhy b3VnaCBjYWxsIGV2ZW50ZmQgb2YgdGhlIHZpcnRxdWV1ZSAxLg0KQnV0IHdlIGRvbid0IG1vbml0 b3IgdGhlIGV2ZW50ZmQuICBJbnN0ZWFkLCB3ZSBjaGVjayBpZiB3ZSBjYW4gcmV1c2UgdGhlDQpi dWZmZXJzIG9yIG5vdCBqdXN0IHdoZW4gd2UgcHJvZHVjZSwgbWFraW5nIHRoZSBjb2RlIHNpbXBs ZXIgYW5kIG1vcmUNCnBlcmZvcm1hbnQuDQoNCkxpa2Ugb24gdGhlIHJ4IHBhdGgsIHdlIGFzc3Vt ZSBkZXNjcmlwdG9ycyBhcmUgdXNlZCBpbiB0aGUgc2FtZSBvcmRlcg0KdGhleSB3ZXJlIG1hZGUg YXZhaWxhYmxlLiBUaGlzIGlzIGFsc28gY29uc2lzdGVudCB3aXRoIGJlaGF2aW9yIHNlZW4gaW4N ClFFTVUncyB2aXJ0aW8tbmV0IGltcGxlbWVudGF0aW9uLg0KDQpTaWduZWQtb2ZmLWJ5OiBFdWdl bmlvIFDDqXJleiA8ZXBlcmV6bWFAcmVkaGF0LmNvbT4NCi0tLQ0KIGFycC5jICAgICB8ICAyICst DQogdGFwLmMgICAgIHwgODQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKystLS0tLS0tLQ0KIHRhcC5oICAgICB8ICA0ICstLQ0KIHRjcC5jICAgICB8ICAyICst DQogdGNwX2J1Zi5jIHwgIDIgKy0NCiB1ZHAuYyAgICAgfCAgMiArLQ0KIDYgZmlsZXMgY2hhbmdl ZCwgNzkgaW5zZXJ0aW9ucygrKSwgMTcgZGVsZXRpb25zKC0pDQoNCmRpZmYgLS1naXQgYS9hcnAu YyBiL2FycC5jDQppbmRleCBmYzQ4MmJiLi5lYTc4NmEwIDEwMDY0NA0KLS0tIGEvYXJwLmMNCisr KyBiL2FycC5jDQpAQCAtODAsNyArODAsNyBAQCBpbnQgYXJwKGNvbnN0IHN0cnVjdCBjdHggKmMs IGNvbnN0IHN0cnVjdCBwb29sICpwKQ0KIAltZW1jcHkoZWgtPmhfZGVzdCwJZWgtPmhfc291cmNl LAlzaXplb2YoZWgtPmhfZGVzdCkpOw0KIAltZW1jcHkoZWgtPmhfc291cmNlLAljLT5vdXJfdGFw X21hYywJc2l6ZW9mKGVoLT5oX3NvdXJjZSkpOw0KIA0KLQl0YXBfc2VuZF9zaW5nbGUoYywgZWgs IGwybGVuKTsNCisJdGFwX3NlbmRfc2luZ2xlKGMsIGVoLCBsMmxlbiwgZmFsc2UpOw0KIA0KIAly ZXR1cm4gMTsNCiB9DQpkaWZmIC0tZ2l0IGEvdGFwLmMgYi90YXAuYw0KaW5kZXggNTY2N2ZiZS4u N2NjYWM4NiAxMDA2NDQNCi0tLSBhL3RhcC5jDQorKysgYi90YXAuYw0KQEAgLTEyMSwxMSArMTIx LDE5IEBAIHN0YXRpYyBQQUNLRVRfUE9PTF9OT0lOSVQocG9vbF90YXA2LCBUQVBfTVNHU19JUDYs IHBrdF9idWYpOw0KIHN0YXRpY19hc3NlcnQoIShWSE9TVF9OREVTQ1MgJiAoVkhPU1RfTkRFU0NT IC0gMSkpLA0KIAkJCSAiTnVtYmVyIG9mIHZob3N0IGRlc2NzIG11c3QgYmUgYSBwb3dlciBvZiB0 d28gYnkgc3RhbmRhcmQiKTsNCiBzdGF0aWMgc3RydWN0IHsNCisJLyogRGVzY3JpcHRvciBpbmRl eCB3ZSdyZSB1c2luZy4gVGhpcyBpcyBub3QgdGhlIHNhbWUgYXMgYXZhaWwgaWR4IGluDQorCSAq IHNwbGl0OiB0aGlzIHRha2VzIGludG8gYWNjb3VudCB0aGUgY2hhaW5lZCBkZXNjcyAqLw0KKwl1 aW50MTZfdCB2cmluZ19pZHg7DQorDQogCS8qIE51bWJlciBvZiBmcmVlIGRlc2NyaXB0b3JzICov DQogCXVpbnQxNl90IG51bV9mcmVlOw0KIA0KIAkvKiBMYXN0IHVzZWQgaWR4IHByb2Nlc3NlZCAq Lw0KIAl1aW50MTZfdCBsYXN0X3VzZWRfaWR4Ow0KKw0KKwkvKiBEZXNjcmlwdG9ycyBpbiB1c2Ug Ki8NCisJLyogZGVzYyBpbmZvOiBudW1iZXIgb2YgZGVzY3JpcHRvcnMgaW4gdGhlIGNoYWluICov DQorCXVpbnQxNl90IG5kZXNjc1tWSE9TVF9OREVTQ1NdOw0KIH0gdnFzWzJdOw0KIA0KIHN0YXRp YyBzdHJ1Y3QgdnJpbmdfZGVzYyB2cmluZ19kZXNjWzJdW1ZIT1NUX05ERVNDU10gX19hdHRyaWJ1 dGVfXygoYWxpZ25lZChQQUdFX1NJWkUpKSk7DQpAQCAtMTc2LDcgKzE4NCw3IEBAIHVuc2lnbmVk IGxvbmcgdGFwX2wyX21heF9sZW4oY29uc3Qgc3RydWN0IGN0eCAqYykNCiAgKiBAZGF0YToJUGFj a2V0IGJ1ZmZlcg0KICAqIEBsMmxlbjoJVG90YWwgTDIgcGFja2V0IGxlbmd0aA0KICAqLw0KLXZv aWQgdGFwX3NlbmRfc2luZ2xlKGNvbnN0IHN0cnVjdCBjdHggKmMsIGNvbnN0IHZvaWQgKmRhdGEs IHNpemVfdCBsMmxlbikNCit2b2lkIHRhcF9zZW5kX3NpbmdsZShjb25zdCBzdHJ1Y3QgY3R4ICpj LCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3QgbDJsZW4sIGJvb2wgdmhvc3QpDQogew0KIAl1aW50 MzJfdCB2bmV0X2xlbiA9IGh0b25sKGwybGVuKTsNCiAJc3RydWN0IGlvdmVjIGlvdlsyXTsNCkBA IC0xOTIsNyArMjAwLDcgQEAgdm9pZCB0YXBfc2VuZF9zaW5nbGUoY29uc3Qgc3RydWN0IGN0eCAq YywgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IGwybGVuKQ0KIAkJaW92W2lvdmNudF0uaW92X2xl biA9IGwybGVuOw0KIAkJaW92Y250Kys7DQogDQotCQl0YXBfc2VuZF9mcmFtZXMoYywgaW92LCBp b3ZjbnQsIDEpOw0KKwkJdGFwX3NlbmRfZnJhbWVzKGMsIGlvdiwgaW92Y250LCAxLCB2aG9zdCk7 DQogCQlicmVhazsNCiAJY2FzZSBNT0RFX1ZVOg0KIAkJdnVfc2VuZF9zaW5nbGUoYywgZGF0YSwg bDJsZW4pOw0KQEAgLTMxNCw3ICszMjIsNyBAQCB2b2lkIHRhcF91ZHA0X3NlbmQoY29uc3Qgc3Ry dWN0IGN0eCAqYywgc3RydWN0IGluX2FkZHIgc3JjLCBpbl9wb3J0X3Qgc3BvcnQsDQogCWNoYXIg KmRhdGEgPSB0YXBfcHVzaF91aDQodWgsIHNyYywgc3BvcnQsIGRzdCwgZHBvcnQsIGluLCBkbGVu KTsNCiANCiAJbWVtY3B5KGRhdGEsIGluLCBkbGVuKTsNCi0JdGFwX3NlbmRfc2luZ2xlKGMsIGJ1 ZiwgZGxlbiArIChkYXRhIC0gYnVmKSk7DQorCXRhcF9zZW5kX3NpbmdsZShjLCBidWYsIGRsZW4g KyAoZGF0YSAtIGJ1ZiksIGZhbHNlKTsNCiB9DQogDQogLyoqDQpAQCAtMzM2LDcgKzM0NCw3IEBA IHZvaWQgdGFwX2ljbXA0X3NlbmQoY29uc3Qgc3RydWN0IGN0eCAqYywgc3RydWN0IGluX2FkZHIg c3JjLCBzdHJ1Y3QgaW5fYWRkciBkc3QsDQogCW1lbWNweShpY21wNGgsIGluLCBsNGxlbik7DQog CWNzdW1faWNtcDQoaWNtcDRoLCBpY21wNGggKyAxLCBsNGxlbiAtIHNpemVvZigqaWNtcDRoKSk7 DQogDQotCXRhcF9zZW5kX3NpbmdsZShjLCBidWYsIGw0bGVuICsgKChjaGFyICopaWNtcDRoIC0g YnVmKSk7DQorCXRhcF9zZW5kX3NpbmdsZShjLCBidWYsIGw0bGVuICsgKChjaGFyICopaWNtcDRo IC0gYnVmKSwgZmFsc2UpOw0KIH0NCiANCiAvKioNCkBAIC00MjEsNyArNDI5LDcgQEAgdm9pZCB0 YXBfdWRwNl9zZW5kKGNvbnN0IHN0cnVjdCBjdHggKmMsDQogCWNoYXIgKmRhdGEgPSB0YXBfcHVz aF91aDYodWgsIHNyYywgc3BvcnQsIGRzdCwgZHBvcnQsIGluLCBkbGVuKTsNCiANCiAJbWVtY3B5 KGRhdGEsIGluLCBkbGVuKTsNCi0JdGFwX3NlbmRfc2luZ2xlKGMsIGJ1ZiwgZGxlbiArIChkYXRh IC0gYnVmKSk7DQorCXRhcF9zZW5kX3NpbmdsZShjLCBidWYsIGRsZW4gKyAoZGF0YSAtIGJ1Ziks IGZhbHNlKTsNCiB9DQogDQogLyoqDQpAQCAtNDQ0LDcgKzQ1Miw3IEBAIHZvaWQgdGFwX2ljbXA2 X3NlbmQoY29uc3Qgc3RydWN0IGN0eCAqYywNCiAJbWVtY3B5KGljbXA2aCwgaW4sIGw0bGVuKTsN CiAJY3N1bV9pY21wNihpY21wNmgsIHNyYywgZHN0LCBpY21wNmggKyAxLCBsNGxlbiAtIHNpemVv ZigqaWNtcDZoKSk7DQogDQotCXRhcF9zZW5kX3NpbmdsZShjLCBidWYsIGw0bGVuICsgKChjaGFy ICopaWNtcDZoIC0gYnVmKSk7DQorCXRhcF9zZW5kX3NpbmdsZShjLCBidWYsIGw0bGVuICsgKChj aGFyICopaWNtcDZoIC0gYnVmKSwgZmFsc2UpOw0KIH0NCiANCiBzdGF0aWMgdm9pZCB2aG9zdF9r aWNrKHN0cnVjdCB2cmluZ191c2VkICp1c2VkLCBpbnQga2lja19mZCkgew0KQEAgLTQ1OSw4ICs0 NjcsOSBAQCBzdGF0aWMgdm9pZCB2aG9zdF9raWNrKHN0cnVjdCB2cmluZ191c2VkICp1c2VkLCBp bnQga2lja19mZCkgew0KIAkJZXZlbnRmZF93cml0ZShraWNrX2ZkLCAxKTsNCiB9DQogDQorDQog LyoqDQotICogdGFwX3NlbmRfZnJhbWVzX3Bhc3RhKCkgLSBTZW5kIG11bHRpcGxlIGZyYW1lcyB0 byB0aGUgcGFzdGEgdGFwDQorICogdGFwX3NlbmRfZnJhbWVzX3Zob3N0KCkgLSBTZW5kIG11bHRp cGxlIGZyYW1lcyB0byB0aGUgcGFzdGEgdGFwDQogICogQGM6CQkJRXhlY3V0aW9uIGNvbnRleHQN CiAgKiBAaW92OgkJQXJyYXkgb2YgYnVmZmVycw0KICAqIEBidWZzX3Blcl9mcmFtZToJTnVtYmVy IG9mIGJ1ZmZlcnMgKGlvdmVjIGVudHJpZXMpIHBlciBmcmFtZQ0KQEAgLTQ3MCwxNiArNDc5LDY4 IEBAIHN0YXRpYyB2b2lkIHZob3N0X2tpY2soc3RydWN0IHZyaW5nX3VzZWQgKnVzZWQsIGludCBr aWNrX2ZkKSB7DQogICogQGJ1ZnNfcGVyX2ZyYW1lIGNvbnRpZ3VvdXMgYnVmZmVycyByZXByZXNl bnRpbmcgYSBzaW5nbGUgZnJhbWUuDQogICoNCiAgKiBSZXR1cm46IG51bWJlciBvZiBmcmFtZXMg c3VjY2Vzc2Z1bGx5IHNlbnQNCisgKi8NCitzdGF0aWMgc2l6ZV90IHRhcF9zZW5kX2ZyYW1lc192 aG9zdChjb25zdCBzdHJ1Y3QgY3R4ICpjLA0KKwkJCQkgICAgY29uc3Qgc3RydWN0IGlvdmVjICpp b3YsDQorCQkJCSAgICBzaXplX3QgYnVmc19wZXJfZnJhbWUsIHNpemVfdCBuZnJhbWVzKQ0KK3sN CisJc2l6ZV90IGk7DQorDQorCWZvciAoaSA9IDA7IGkgPCBuZnJhbWVzOyBpKyspIHsNCisJCXNp emVfdCBqOw0KKw0KKwkJaWYgKHZxc1sxXS5udW1fZnJlZSA8IGJ1ZnNfcGVyX2ZyYW1lKQ0KKwkJ CXJldHVybiBpOw0KKw0KKwkJdnJpbmdfYXZhaWxfMS5hdmFpbC5yaW5nWyh2cmluZ19hdmFpbF8x LmF2YWlsLmlkeCArIGkpICUgVkhPU1RfTkRFU0NTXSA9IGh0b2xlMTYodnFzWzFdLnZyaW5nX2lk eCkgJSBWSE9TVF9OREVTQ1M7DQorCQl2cXNbMV0ubmRlc2NzWyh2cmluZ19hdmFpbF8xLmF2YWls LmlkeCArIGkpICUgVkhPU1RfTkRFU0NTXSA9IGJ1ZnNfcGVyX2ZyYW1lOw0KKwkJdnFzWzFdLm51 bV9mcmVlIC09IGJ1ZnNfcGVyX2ZyYW1lOw0KKw0KKwkJZm9yIChqID0gMDsgaiA8IGJ1ZnNfcGVy X2ZyYW1lOyArK2opIHsNCisJCQlzdHJ1Y3QgdnJpbmdfZGVzYyAqZGVzYyA9ICZ2cmluZ19kZXNj WzFdW3Zxc1sxXS52cmluZ19pZHggJSBWSE9TVF9OREVTQ1NdOw0KKwkJCWNvbnN0IHN0cnVjdCBp b3ZlYyAqaW92X2kgPSAmaW92W2kgKiBidWZzX3Blcl9mcmFtZSArIGpdOw0KKw0KKwkJCWRlc2Mt PmFkZHIgPSAodWludDY0X3QpaW92X2ktPmlvdl9iYXNlOw0KKwkJCWRlc2MtPmxlbiA9IGlvdl9p LT5pb3ZfbGVuOw0KKwkJCWRlc2MtPmZsYWdzID0gKGogPT0gYnVmc19wZXJfZnJhbWUgLSAxKSA/ IDAgOiBodG9sZTE2KFZSSU5HX0RFU0NfRl9ORVhUKTsNCisJCQl2cXNbMV0udnJpbmdfaWR4Kys7 DQorCQl9DQorCX0NCisNCisJc21wX3dtYigpOw0KKwl2cmluZ19hdmFpbF8xLmF2YWlsLmlkeCA9 IGh0b2xlMTYobGUxNnRvaCh2cmluZ19hdmFpbF8xLmF2YWlsLmlkeCkgKyBuZnJhbWVzKTsNCisN CisJdmhvc3Rfa2ljaygmdnJpbmdfdXNlZF8xLnVzZWQsIGMtPnZxWzFdLmtpY2tfZmQpOw0KKw0K KwlyZXR1cm4gbmZyYW1lczsNCit9DQorDQorDQorLyoqDQorICogdGFwX3NlbmRfZnJhbWVzX3Bh c3RhKCkgLSBTZW5kIG11bHRpcGxlIGZyYW1lcyB0byB0aGUgcGFzdGEgdGFwDQorICogQGM6CQkJ RXhlY3V0aW9uIGNvbnRleHQNCisgKiBAaW92OgkJQXJyYXkgb2YgYnVmZmVycw0KKyAqIEBidWZz X3Blcl9mcmFtZToJTnVtYmVyIG9mIGJ1ZmZlcnMgKGlvdmVjIGVudHJpZXMpIHBlciBmcmFtZQ0K KyAqIEBuZnJhbWVzOgkJTnVtYmVyIG9mIGZyYW1lcyB0byBzZW5kDQorICogQHZob3N0OiAgICAg ICAgICAgICBVc2Ugdmhvc3Qta2VybmVsIG9yIG5vdA0KKyAqDQorICogQGlvdiBtdXN0IGhhdmUg dG90YWwgbGVuZ3RoIEBidWZzX3Blcl9mcmFtZSAqIEBuZnJhbWVzLCB3aXRoIGVhY2ggc2V0IG9m DQorICogQGJ1ZnNfcGVyX2ZyYW1lIGNvbnRpZ3VvdXMgYnVmZmVycyByZXByZXNlbnRpbmcgYSBz aW5nbGUgZnJhbWUuDQorICoNCisgKiBSZXR1cm46IG51bWJlciBvZiBmcmFtZXMgc3VjY2Vzc2Z1 bGx5IHNlbnQgKG9yIHF1ZXVlZCkNCiAgKg0KICAqICNzeXNjYWxsczpwYXN0YSB3cml0ZQ0KICAq Lw0KIHN0YXRpYyBzaXplX3QgdGFwX3NlbmRfZnJhbWVzX3Bhc3RhKGNvbnN0IHN0cnVjdCBjdHgg KmMsDQogCQkJCSAgICBjb25zdCBzdHJ1Y3QgaW92ZWMgKmlvdiwNCi0JCQkJICAgIHNpemVfdCBi dWZzX3Blcl9mcmFtZSwgc2l6ZV90IG5mcmFtZXMpDQorCQkJCSAgICBzaXplX3QgYnVmc19wZXJf ZnJhbWUsIHNpemVfdCBuZnJhbWVzLCBib29sIHZob3N0KQ0KIHsNCiAJc2l6ZV90IG5idWZzID0g YnVmc19wZXJfZnJhbWUgKiBuZnJhbWVzOw0KIAlzaXplX3QgaTsNCiANCisJaWYgKHZob3N0KQ0K KwkJcmV0dXJuIHRhcF9zZW5kX2ZyYW1lc192aG9zdChjLCBpb3YsIGJ1ZnNfcGVyX2ZyYW1lLCBu ZnJhbWVzKTsNCisNCiAJZm9yIChpID0gMDsgaSA8IG5idWZzOyBpICs9IGJ1ZnNfcGVyX2ZyYW1l KSB7DQogCQlzc2l6ZV90IHJjID0gd3JpdGV2KGMtPmZkX3RhcCwgaW92ICsgaSwgYnVmc19wZXJf ZnJhbWUpOw0KIAkJc2l6ZV90IGZyYW1lbGVuID0gaW92X3NpemUoaW92ICsgaSwgYnVmc19wZXJf ZnJhbWUpOw0KQEAgLTU2MywxNCArNjI0LDE1IEBAIHN0YXRpYyBzaXplX3QgdGFwX3NlbmRfZnJh bWVzX3Bhc3N0KGNvbnN0IHN0cnVjdCBjdHggKmMsDQogICogQGlvdjoJCUFycmF5IG9mIGJ1ZmZl cnMsIGVhY2ggY29udGFpbmluZyBvbmUgZnJhbWUgKHdpdGggTDIgaGVhZGVycykNCiAgKiBAYnVm c19wZXJfZnJhbWU6CU51bWJlciBvZiBidWZmZXJzIChpb3ZlYyBlbnRyaWVzKSBwZXIgZnJhbWUN CiAgKiBAbmZyYW1lczoJCU51bWJlciBvZiBmcmFtZXMgdG8gc2VuZA0KKyAqIEB2aG9zdDoJCVVz ZSB2aG9zdC1rZXJuZWwgb3Igbm90DQogICoNCiAgKiBAaW92IG11c3QgaGF2ZSB0b3RhbCBsZW5n dGggQGJ1ZnNfcGVyX2ZyYW1lICogQG5mcmFtZXMsIHdpdGggZWFjaCBzZXQgb2YNCiAgKiBAYnVm c19wZXJfZnJhbWUgY29udGlndW91cyBidWZmZXJzIHJlcHJlc2VudGluZyBhIHNpbmdsZSBmcmFt ZS4NCiAgKg0KLSAqIFJldHVybjogbnVtYmVyIG9mIGZyYW1lcyBhY3R1YWxseSBzZW50DQorICog UmV0dXJuOiBudW1iZXIgb2YgZnJhbWVzIGFjdHVhbGx5IHNlbnQgKG9yIHF1ZXVlZCkNCiAgKi8N CiBzaXplX3QgdGFwX3NlbmRfZnJhbWVzKGNvbnN0IHN0cnVjdCBjdHggKmMsIGNvbnN0IHN0cnVj dCBpb3ZlYyAqaW92LA0KLQkJICAgICAgIHNpemVfdCBidWZzX3Blcl9mcmFtZSwgc2l6ZV90IG5m cmFtZXMpDQorCQkgICAgICAgc2l6ZV90IGJ1ZnNfcGVyX2ZyYW1lLCBzaXplX3QgbmZyYW1lcywg Ym9vbCB2aG9zdCkNCiB7DQogCXNpemVfdCBtOw0KIA0KQEAgLTU3OSw3ICs2NDEsNyBAQCBzaXpl X3QgdGFwX3NlbmRfZnJhbWVzKGNvbnN0IHN0cnVjdCBjdHggKmMsIGNvbnN0IHN0cnVjdCBpb3Zl YyAqaW92LA0KIA0KIAlzd2l0Y2ggKGMtPm1vZGUpIHsNCiAJY2FzZSBNT0RFX1BBU1RBOg0KLQkJ bSA9IHRhcF9zZW5kX2ZyYW1lc19wYXN0YShjLCBpb3YsIGJ1ZnNfcGVyX2ZyYW1lLCBuZnJhbWVz KTsNCisJCW0gPSB0YXBfc2VuZF9mcmFtZXNfcGFzdGEoYywgaW92LCBidWZzX3Blcl9mcmFtZSwg bmZyYW1lcywgdmhvc3QpOw0KIAkJYnJlYWs7DQogCWNhc2UgTU9ERV9QQVNTVDoNCiAJCW0gPSB0 YXBfc2VuZF9mcmFtZXNfcGFzc3QoYywgaW92LCBidWZzX3Blcl9mcmFtZSwgbmZyYW1lcyk7DQpk aWZmIC0tZ2l0IGEvdGFwLmggYi90YXAuaA0KaW5kZXggZmY4Y2VlNS4uZTkyNGRmYiAxMDA2NDQN Ci0tLSBhL3RhcC5oDQorKysgYi90YXAuaA0KQEAgLTExMSw5ICsxMTEsOSBAQCB2b2lkIHRhcF91 ZHA2X3NlbmQoY29uc3Qgc3RydWN0IGN0eCAqYywNCiB2b2lkIHRhcF9pY21wNl9zZW5kKGNvbnN0 IHN0cnVjdCBjdHggKmMsDQogCQkgICAgY29uc3Qgc3RydWN0IGluNl9hZGRyICpzcmMsIGNvbnN0 IHN0cnVjdCBpbjZfYWRkciAqZHN0LA0KIAkJICAgIGNvbnN0IHZvaWQgKmluLCBzaXplX3QgbDRs ZW4pOw0KLXZvaWQgdGFwX3NlbmRfc2luZ2xlKGNvbnN0IHN0cnVjdCBjdHggKmMsIGNvbnN0IHZv aWQgKmRhdGEsIHNpemVfdCBsMmxlbik7DQordm9pZCB0YXBfc2VuZF9zaW5nbGUoY29uc3Qgc3Ry dWN0IGN0eCAqYywgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IGwybGVuLCBib29sIHZob3N0KTsN CiBzaXplX3QgdGFwX3NlbmRfZnJhbWVzKGNvbnN0IHN0cnVjdCBjdHggKmMsIGNvbnN0IHN0cnVj dCBpb3ZlYyAqaW92LA0KLQkJICAgICAgIHNpemVfdCBidWZzX3Blcl9mcmFtZSwgc2l6ZV90IG5m cmFtZXMpOw0KKwkJICAgICAgIHNpemVfdCBidWZzX3Blcl9mcmFtZSwgc2l6ZV90IG5mcmFtZXMs IGJvb2wgdmhvc3QpOw0KIHZvaWQgZXRoX3VwZGF0ZV9tYWMoc3RydWN0IGV0aGhkciAqZWgsDQog CQkgICAgY29uc3QgdW5zaWduZWQgY2hhciAqZXRoX2QsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmV0 aF9zKTsNCiB2b2lkIHRhcF9saXN0ZW5faGFuZGxlcihzdHJ1Y3QgY3R4ICpjLCB1aW50MzJfdCBl dmVudHMpOw0KZGlmZiAtLWdpdCBhL3RjcC5jIGIvdGNwLmMNCmluZGV4IGY0M2MxZTIuLjA1ZjVi NGMgMTAwNjQ0DQotLS0gYS90Y3AuYw0KKysrIGIvdGNwLmMNCkBAIC0xOTM1LDcgKzE5MzUsNyBA QCBzdGF0aWMgdm9pZCB0Y3BfcnN0X25vX2Nvbm4oY29uc3Qgc3RydWN0IGN0eCAqYywgaW50IGFm LA0KIA0KIAl0Y3BfdXBkYXRlX2NzdW0ocHN1bSwgcnN0aCwgJnBheWxvYWQpOw0KIAlyc3RfbDJs ZW4gPSAoKGNoYXIgKilyc3RoIC0gYnVmKSArIHNpemVvZigqcnN0aCk7DQotCXRhcF9zZW5kX3Np bmdsZShjLCBidWYsIHJzdF9sMmxlbik7DQorCXRhcF9zZW5kX3NpbmdsZShjLCBidWYsIHJzdF9s MmxlbiwgZmFsc2UpOw0KIH0NCiANCiAvKioNCmRpZmYgLS1naXQgYS90Y3BfYnVmLmMgYi90Y3Bf YnVmLmMNCmluZGV4IDZkNzlkNjcuLjI0MjA4NmQgMTAwNjQ0DQotLS0gYS90Y3BfYnVmLmMNCisr KyBiL3RjcF9idWYuYw0KQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIHRjcF9wYXlsb2FkX2ZsdXNo KGNvbnN0IHN0cnVjdCBjdHggKmMpDQogCXNpemVfdCBtOw0KIA0KIAltID0gdGFwX3NlbmRfZnJh bWVzKGMsICZ0Y3BfbDJfaW92WzBdWzBdLCBUQ1BfTlVNX0lPVlMsDQotCQkJICAgIHRjcF9wYXls b2FkX3VzZWQpOw0KKwkJCSAgICB0Y3BfcGF5bG9hZF91c2VkLCBmYWxzZSk7DQogCWlmIChtICE9 IHRjcF9wYXlsb2FkX3VzZWQpIHsNCiAJCXRjcF9yZXZlcnRfc2VxKGMsICZ0Y3BfZnJhbWVfY29u bnNbbV0sICZ0Y3BfbDJfaW92W21dLA0KIAkJCSAgICAgICB0Y3BfcGF5bG9hZF91c2VkIC0gbSk7 DQpkaWZmIC0tZ2l0IGEvdWRwLmMgYi91ZHAuYw0KaW5kZXggNjVhNTJlMC4uZDAxN2Q5OSAxMDA2 NDQNCi0tLSBhL3VkcC5jDQorKysgYi91ZHAuYw0KQEAgLTgwOSw3ICs4MDksNyBAQCBzdGF0aWMg dm9pZCB1ZHBfYnVmX3NvY2tfdG9fdGFwKGNvbnN0IHN0cnVjdCBjdHggKmMsIGludCBzLCBpbnQg biwNCiAJZm9yIChpID0gMDsgaSA8IG47IGkrKykNCiAJCXVkcF90YXBfcHJlcGFyZSh1ZHBfbWhf cmVjdiwgaSwgdG9zaWRlLCBmYWxzZSk7DQogDQotCXRhcF9zZW5kX2ZyYW1lcyhjLCAmdWRwX2wy X2lvdlswXVswXSwgVURQX05VTV9JT1ZTLCBuKTsNCisJdGFwX3NlbmRfZnJhbWVzKGMsICZ1ZHBf bDJfaW92WzBdWzBdLCBVRFBfTlVNX0lPVlMsIG4sIGZhbHNlKTsNCiB9DQogDQogLyoqDQotLSAN CjIuNTAuMA0KDQo=