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=i8GTQcMg; 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 7A37B5A026E for ; Wed, 16 Sep 2026 16:00:17 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1789567216; 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:autocrypt:autocrypt; bh=EXfmiVCJ95r/ZuFgF9iuLW+i4f3Pc7Js+1eVrrM+eGE=; b=i8GTQcMgCB/hGqkLGPOf+SqnJx/Ua2UXcqMOmaEbZCmO8eBZLTxUfePeHMewHIFNozfKu5 wd9/IyxPYLJf4EMmlI7PvuFu378v5KVeo/SkX08NYPWqqm3S19ok24WXg8MCgNfCSoh+/X Vr1BZSey0VQ2eUweGhFw+wILx0i22JI= Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-66-HMuPELLYOHqu7j_stVYTzQ-1; Wed, 16 Sep 2026 10:00:14 -0400 X-MC-Unique: HMuPELLYOHqu7j_stVYTzQ-1 X-Mimecast-MFC-AGG-ID: HMuPELLYOHqu7j_stVYTzQ_1789567212 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-48709a1fbd0so1598816f8f.1 for ; Wed, 16 Sep 2026 07:00:13 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789567212; x=1790172012; h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from :content-language:references:cc:to:subject:user-agent:mime-version :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=EXfmiVCJ95r/ZuFgF9iuLW+i4f3Pc7Js+1eVrrM+eGE=; b=ZGx6YT+hKqdR7/3N7QPbTEXKj13r98eDry8zJ5sdLJwhXVcgOnyFgcGdNvASv6RniJ nCBzPVGZWAV5OCwnnxiSuHenOnYwiAyl7L+jGwDrtphemR4dJTVjcKvfAkFEnKVVQNQN 3R1LOoyi+jiCNX9+SYG3H4baZUvLGc8GzpI8dq97OZlHhIArZMOEVyxpSm4VoLc8lDI3 zrzJhH7Eh/pZ4uQf8ZEzYk0MEr7qiFNciHS25320tY6+2jae9rxsKSlFfkQQTd6CkEWH otiKhEXlMJsqb0Hx+yKW1O3YzLHigkYInFI0F0WJEkXBkgYLWVqHBFaaz6tRAnES5jAp mMAQ== X-Forwarded-Encrypted: i=1; AKwUvBxzXw3caQJadEb4UJPSJcjTwNUmaoJ1zY4VZ5ugrBDMMdocZYRVmA6T5rJ3yWfScQ+Rw17W/pTs8o8=@passt.top X-Gm-Message-State: AFuF++krEiVFuJ1WqUjuv3ZrCN60Pfp8TgB95MHtk4s/inUag+7C1Y7r q5Z550eCP4QCskiooODKTdliKXZy8jQ08u0tjkaJ17BcSKYEX3pg7BDQ129j1YOiKCodJfOcFN1 f5LN5c+GFHm8fB9R1PMZAVspkdFlpA2DOuNUqYbZr9jURZIvWjePGfQ== X-Gm-Gg: AYBFou37hj409Cc5YfSy/mzL5uxFrTbgRXPJ2tbvx7YjCvu86F3bJVvNjaITSLpthWv CX0Wn3zl4pTv/FcrxbAfZpjwtAmyCt/7fxwtH64P9OVNBPLCS0fuUb1TU6LNGkGJeiBUUFLwMwu JAHv8LBtHIiWhOFZDqXkIPKXpiIY60L7Sqm6EqK3FLNTV7n3zqrAJ3gKY7hsecXD5CEX5nKmgrh xl2np6aDp8i6YZHFELrMCbopaNQJElzLyk9Nmk9H+j4BeJIQV9tcG1fQEKT1znP+gqiklXaNYEJ L0pcQPYPdCU3BPPG5FE3WImo2znmqFd4Gw4YkxqRtdq/OddD3ogwskcTzMaJRLvqOyxAkiR4g/u RiwvfJ3O/9tWS3bxNUEo50kJtwPWHnfv9nIx9AE2s6sM= X-Received: by 2002:a05:6000:4211:b0:487:11e0:376c with SMTP id ffacd0b85a97d-48711e038d3mr646139f8f.0.1789567212025; Wed, 16 Sep 2026 07:00:12 -0700 (PDT) X-Received: by 2002:a05:6000:4211:b0:487:11e0:376c with SMTP id ffacd0b85a97d-48711e038d3mr645994f8f.0.1789567211243; Wed, 16 Sep 2026 07:00:11 -0700 (PDT) Received: from ?IPV6:2a01:e0a:e10:ef90:d92c:7e4a:47e6:1b23? ([2a01:e0a:e10:ef90:d92c:7e4a:47e6:1b23]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4870bf34440sm7276522f8f.25.2026.09.16.07.00.10 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 16 Sep 2026 07:00:10 -0700 (PDT) Message-ID: Date: Wed, 16 Sep 2026 16:00:09 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 6/7] tap: Implement the pasta vhost-net to-guest path To: aerosouund , passt-dev@passt.top References: <20260904212826.41027-1-aerosound161@gmail.com> <20260904212826.41027-7-aerosound161@gmail.com> From: Laurent Vivier Autocrypt: addr=lvivier@redhat.com; keydata= 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 In-Reply-To: <20260904212826.41027-7-aerosound161@gmail.com> X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: tItV0R2H_8FYTRd12f0gQyCUZ9Zi55LBLolx-_A5mvw_1789567212 X-Mimecast-Originator: redhat.com Content-Language: en-US Content-Type: text/plain; charset="utf-8"; format="flowed" Content-Transfer-Encoding: base64 Message-ID-Hash: SYEQHSFKUTRFHRGWTSWP3THJAIJCK2UH X-Message-ID-Hash: SYEQHSFKUTRFHRGWTSWP3THJAIJCK2UH X-MailFrom: lvivier@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: eperezma@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: T24gOS80LzI2IDIzOjI4LCBhZXJvc291dW5kIHdyb3RlOg0KPiBGcm9tOiBBbW1hciBZYXNzZXIg PGFlcm9zb3VuZDE2MUBnbWFpbC5jb20+DQo+IA0KPiBBZGQgYSB2aG9zdCBhcmd1bWVudCB0byB0 YXBfc2VuZF9mcmFtZXNfcGFzdGEoKS4gQ2FsbGVycyBwYXNzIGl0IHRvIHNheQ0KPiB3aGV0aGVy IHRoaXMgc2VuZCBzaG91bGQgZ28gdGhyb3VnaCB2aG9zdC1uZXQsIGFuZCB3aGVuIGl0IGRvZXMg c2VuZGluZw0KPiBnb2VzIHRocm91Z2ggdGFwX3NlbmRfZnJhbWVzX3Zob3N0KCksIHdoaWNoIHRh a2VzIGEgZGVzY3JpcHRvciBmcm9tIHRoZQ0KPiBxdWV1ZSBzaGFyZWQgd2l0aCB0aGUga2VybmVs IGZvciBlYWNoIGlvdiBhbmQgcG9pbnRzIGl0IGF0IHRoYXQgaW92J3MNCj4gYmFzZSBhZGRyZXNz LCBjaGFpbmluZyB0aGUgYnVmc19wZXJfZnJhbWUgZGVzY3JpcHRvcnMgb2YgYSBmcmFtZQ0KPiB0 b2dldGhlciBzbyB0aGUgZ3Vlc3QgcmVjZWl2ZXMgaXQgaW4gb25lIGdvLg0KPiANCj4gdHhfcmVh cCgpIHJlY2xhaW1zIHRoZSBkZXNjcmlwdG9ycyB0aGUga2VybmVsIGhhcyBmaW5pc2hlZCB3aXRo LCB3YWxraW5nDQo+IGVhY2ggdXNlZCBjaGFpbiB0byBpdHMgZW5kIHNvIHRoYXQgZXZlcnkgZGVz Y3JpcHRvciBpbiBpdCBpcyBjb3VudGVkIGFzDQo+IGZyZWUgYWdhaW4uDQo+IA0KPiBTaWduZWQt b2ZmLWJ5OiBFdWdlbmlvIFDDqXJleiA8ZXBlcmV6bWFAcmVkaGF0LmNvbT4NCj4gU2lnbmVkLW9m Zi1ieTogQW1tYXIgWWFzc2VyIDxhZXJvc291bmQxNjFAZ21haWwuY29tPg0KPiAtLS0NCj4gICB0 YXAuYyB8IDE0NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKy0tDQo+ICAgMSBmaWxlIGNoYW5nZWQsIDE0MiBpbnNlcnRpb25zKCspLCAzIGRl bGV0aW9ucygtKQ0KPiANCj4gZGlmZiAtLWdpdCBhL3RhcC5jIGIvdGFwLmMNCj4gaW5kZXggYzcz MDUzNS4uMGY1MWU2MiAxMDA2NDQNCj4gLS0tIGEvdGFwLmMNCj4gKysrIGIvdGFwLmMNCj4gQEAg LTM1OSwxMiArMzU5LDE0NiBAQCB2b2lkIHRhcF9pY21wNl9zZW5kKGNvbnN0IHN0cnVjdCBjdHgg KmMsDQo+ICAgCXRhcF9zZW5kX3NpbmdsZShjLCBidWYsIGw0bGVuICsgKChjaGFyICopaWNtcDZo IC0gYnVmKSk7DQo+ICAgfQ0KPiAgIA0KPiArLyoqDQo+ICsgKiB0eF9yZWFwKCkgLSBSZWNsYWlt IHRoZSBkZXNjcmlwdG9ycyB0aGUga2VybmVsIGhhcyBhbHJlYWR5IHByb2Nlc3NlZA0KPiArICov DQo+ICtzdGF0aWMgdm9pZCB0eF9yZWFwKHZvaWQpDQo+ICt7DQo+ICsJc3RydWN0IHZyaW5nX3Vz ZWQgKnVzZWQgPSAmdnJpbmdfdXNlZF9hbGxbMV0udXNlZDsNCj4gKwl1aW50MTZfdCB1c2VkX2lk eCA9IGxlMTZ0b2godXNlZC0+aWR4KTsNCj4gKw0KPiArCXNtcF9ybWIoKTsNCj4gKw0KPiArCS8q IGluY3JlbWVudCBsYXN0X3VzZWRfaWR4IHVudGlsIGl0IHJlYWNoZXMgdGhlIGtlcm5lbCdzIHVz ZWQgaW5kZXggKi8NCj4gKwl3aGlsZSAodmhvc3RfdnFfc3RhdGVbMV0ubGFzdF91c2VkX2lkeCAh PSB1c2VkX2lkeCkgew0KPiArCQl1aW50MTZfdCBsYXN0X3VzZWQsIGRlc2NfaWQ7DQo+ICsNCj4g KwkJbGFzdF91c2VkID0gdmhvc3RfdnFfc3RhdGVbMV0ubGFzdF91c2VkX2lkeCAlIFZIT1NUX05E RVNDUzsNCj4gKwkJZGVzY19pZCA9IGxlMzJ0b2godXNlZC0+cmluZ1tsYXN0X3VzZWRdLmlkKTsN Cg0KZGVzY19pZCBpcyB1aW50MTZfdCAgYnV0IHVzZWQtPnJpbmdbbGFzdF91c2VkXS5pZCBpcyAz MmJpdC4gc2hvdWxkIHdlIHVzZSBhbiB1aW50MzJfdCB0b28/DQoNCj4gKw0KPiArCQlmb3IgKDs7 KSB7DQo+ICsJCQkvKiBrZWVwIGdvaW5nIHVudGlsIHdlIGZpbmQgYSBkZXNjcmlwdG9yIHdpdGhv dXQgdGhlDQo+ICsJCQkgKiBuZXh0IGZsYWcNCj4gKwkJCSAqLw0KPiArCQkJdmhvc3RfdnFfc3Rh dGVbMV0ubnVtX2ZyZWUrKzsNCj4gKwkJCWlmICghKGxlMTZ0b2godnJpbmdfZGVzY1sxXVtkZXNj X2lkXS5mbGFncykgJg0KPiArCQkJICAgICAgVlJJTkdfREVTQ19GX05FWFQpKQ0KPiArCQkJCWJy ZWFrOw0KPiArDQo+ICsJCQkvKiB0aGlzIGRlc2NyaXB0b3Igd2Fzbid0IHRoZSBsYXN0LCBzZXQg ZGVzY19pZCB0byB0aGUNCj4gKwkJCSAqIG5leHQgb25lIGFuZCBrZWVwIGdvaW5nDQo+ICsJCQkg Ki8NCj4gKwkJCWRlc2NfaWQgPSBsZTE2dG9oKHZyaW5nX2Rlc2NbMV1bZGVzY19pZF0ubmV4dCk7 DQo+ICsJCX0NCj4gKw0KPiArCQl2aG9zdF92cV9zdGF0ZVsxXS5sYXN0X3VzZWRfaWR4Kys7DQo+ ICsJfQ0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAqIHRhcF9zZW5kX2ZyYW1lc192aG9zdCgpIC0g U2VuZCBtdWx0aXBsZSBmcmFtZXMgdG8gdGhlIHBhc3RhIHRhcA0KPiArICogQGM6CQkJRXhlY3V0 aW9uIGNvbnRleHQNCj4gKyAqIEBpb3Y6CQlBcnJheSBvZiBidWZmZXJzDQo+ICsgKiBAYnVmc19w ZXJfZnJhbWU6CU51bWJlciBvZiBidWZmZXJzIChpb3ZlYyBlbnRyaWVzKSBwZXIgZnJhbWUNCj4g KyAqIEBuZnJhbWVzOgkJTnVtYmVyIG9mIGZyYW1lcyB0byBzZW5kDQo+ICsgKg0KPiArICogQGlv diBtdXN0IGhhdmUgdG90YWwgbGVuZ3RoIEBidWZzX3Blcl9mcmFtZSAqIEBuZnJhbWVzLCB3aXRo IGVhY2ggc2V0IG9mDQo+ICsgKiBAYnVmc19wZXJfZnJhbWUgY29udGlndW91cyBidWZmZXJzIHJl cHJlc2VudGluZyBhIHNpbmdsZSBmcmFtZS4NCj4gKyAqDQo+ICsgKiBSZXR1cm46IG51bWJlciBv ZiBmcmFtZXMgc3VjY2Vzc2Z1bGx5IHNlbnQNCj4gKyAqLw0KPiArc3RhdGljIHNpemVfdCB0YXBf c2VuZF9mcmFtZXNfdmhvc3QoY29uc3Qgc3RydWN0IGN0eCAqYywNCj4gKwkJCQkgICAgY29uc3Qg c3RydWN0IGlvdmVjICppb3YsDQo+ICsJCQkJICAgIHNpemVfdCBidWZzX3Blcl9mcmFtZSwgc2l6 ZV90IG5mcmFtZXMpDQo+ICt7DQo+ICsJc3RydWN0IHZyaW5nX2F2YWlsICphdmFpbCA9ICZ2cmlu Z19hdmFpbF9hbGxbMV0uYXZhaWw7DQo+ICsJc2l6ZV90IHByb2Nlc3NlZF9mcmFtZXMgPSAwOw0K PiArCXNpemVfdCBpOw0KPiArDQo+ICsJLyogcmVjbGFpbSBkZXNjcmlwdG9ycyBpZiB3ZSBkb24n dCBoYXZlIGVub3VnaCBhdmFpbGFibGUgYnVmZmVycyB0bw0KPiArCSAqIHBlcmZvcm0gdGhpcyBz ZW5kDQo+ICsJICovDQo+ICsJaWYgKHZob3N0X3ZxX3N0YXRlWzFdLm51bV9mcmVlIDwgYnVmc19w ZXJfZnJhbWUgKiBuZnJhbWVzKQ0KPiArCQl0eF9yZWFwKCk7DQo+ICsNCj4gKwlmb3IgKGkgPSAw OyBpIDwgbmZyYW1lczsgaSsrKSB7DQo+ICsJCXVpbnQxNl90IGhlYWQ7DQo+ICsJCXNpemVfdCBq Ow0KPiArDQo+ICsJCS8qIGl0J3MgbGlrZWx5IHRoYXQgdHhfcmVhcCByZXR1cm5lZCB0byB1cyBs ZXNzIHRoYW4NCj4gKwkJICogYnVmc19wZXJfZnJhbWUgZGVzY3MNCj4gKwkJICovDQo+ICsJCWlm ICh2aG9zdF92cV9zdGF0ZVsxXS5udW1fZnJlZSA8IGJ1ZnNfcGVyX2ZyYW1lKQ0KPiArCQkJYnJl YWs7DQo+ICsNCj4gKwkJLyogc2V0IHRoZSBpbmRleCBvZiB0aGUgYXZhaWwgcmluZyBpbiB0aGUg dHggcXVldWUgdG8gYmUgb3VyDQo+ICsJCSAqIGxhc3RfdXNlZF9pZHgNCj4gKwkJICovDQo+ICsJ CWhlYWQgPSB2aG9zdF92cV9zdGF0ZVsxXS5uZXh0X2ZyZWUgJSBWSE9TVF9OREVTQ1M7DQo+ICsJ CWF2YWlsLT5yaW5nWyhhdmFpbC0+aWR4ICsgaSkgJSBWSE9TVF9OREVTQ1NdID0gaHRvbGUxNiho ZWFkKTsNCj4gKw0KPiArCQkvKiB3ZSB3aWxsIGJlIGNvbnN1bWluZyBidWZzX3Blcl9mcmFtZSBk ZXNjcmlwdG9ycyBmb3IgZXZlcnkNCj4gKwkJICogZnJhbWUsIGRlY3JlbWVudCB0aGUgbG9jYWwg bnVtX2ZyZWUNCj4gKwkJICovDQo+ICsJCXZob3N0X3ZxX3N0YXRlWzFdLm51bV9mcmVlIC09IGJ1 ZnNfcGVyX2ZyYW1lOw0KPiArDQo+ICsJCWZvciAoaiA9IDA7IGogPCBidWZzX3Blcl9mcmFtZTsg KytqKSB7DQo+ICsJCQl1aW50MTZfdCBuZXh0ID0gdmhvc3RfdnFfc3RhdGVbMV0ubmV4dF9mcmVl ICUNCj4gKwkJCQkJVkhPU1RfTkRFU0NTOw0KPiArCQkJLyogZ2V0IHRoZSBsYXN0X3VzZWRfaWR4 IGRlc2NyaXB0b3IgKi8NCj4gKwkJCXN0cnVjdCB2cmluZ19kZXNjICpkZXNjID0gJnZyaW5nX2Rl c2NbMV1bbmV4dF07DQo+ICsJCQljb25zdCBzdHJ1Y3QgaW92ZWMgKmlvdl9pOw0KPiArDQo+ICsJ CQkvKiB0aGUgaW92IHZhcmlhYmxlIGNvbnRhaW5zIHRoZSBpb3ZlY3MgZm9yIGFsbCBmcmFtZXMN Cj4gKwkJCSAqIHdlIHdpbGwgc2VuZC4gYWNjZXNzIGEgc2luZ2xlIGZyYWdtZW50IG9mIGEgZnJh bWUNCj4gKwkJCSAqIChlYWNoIGZyYWdtZW50IGlzIG9uZSBvZiB0Y3BfaW92X3BhcnRzKSBkZW5v dGVkIGJ5DQo+ICsJCQkgKiBpb3YgYXQgaW5kZXggaSAoaW5kZXggb2YgdGhlIGZyYW1lIGJlaW5n IHByb2Nlc3NlZCkNCj4gKwkJCSAqICogYnVmc19wZXJfZnJhbWUgcGx1cyBqICh0aGUgaW5kZXgg b2YgdGhlIGZyYWdtZW50DQo+ICsJCQkgKiBiZWluZyBwcm9jZXNzZWQpDQo+ICsJCQkgKi8NCj4g KwkJCWlvdl9pID0gJmlvdltpICogYnVmc19wZXJfZnJhbWUgKyBqXTsNCj4gKw0KPiArCQkJLyog c2V0IHRoYXQgZGVzY3JpcHRvcidzIGFkZHJlc3MgdG8gdGhlIGJhc2Ugb2YgdGhlIGlvdg0KPiAr CQkJICogYW5kIHNldCB0aGUgVlJJTkdfREVTQ19GX05FWFQgZmxhZyBvbiB0aGUgZGVzY3JpcHRv cg0KPiArCQkJICogaWYgaXRzIG5vdCB0aGUgbGFzdCBmcmFtZSBmcmFnbWVudCwgc28gdGhhdCB0 aGUNCj4gKwkJCSAqIGd1ZXN0IHdvdWxkIHJlY2lldmUgdGhlIGVudGlyZSBmcmFtZSBpbiBvbmUg Z28uDQo+ICsJCQkgKi8NCj4gKwkJCWRlc2MtPmFkZHIgPSAodWludDY0X3QpaW92X2ktPmlvdl9i YXNlOw0KPiArCQkJZGVzYy0+bGVuID0gaW92X2ktPmlvdl9sZW47DQo+ICsJCQlkZXNjLT5mbGFn cyA9IChqID09IGJ1ZnNfcGVyX2ZyYW1lIC0gMSkgPw0KPiArCQkJCSAgICAgIDAgOiBodG9sZTE2 KFZSSU5HX0RFU0NfRl9ORVhUKTsNCj4gKw0KPiArCQkJdmhvc3RfdnFfc3RhdGVbMV0ubmV4dF9m cmVlKys7DQo+ICsJCX0NCj4gKw0KPiArCQlwcm9jZXNzZWRfZnJhbWVzKys7DQo+ICsJfQ0KPiAr DQo+ICsJLyogd2UgZGlkbid0IHByb2Nlc3MgYW55IGZyYW1lcywgbm8gbmVlZCB0byBub3RpZnkg dGhlIGtlcm5lbCAqLw0KPiArCWlmICghcHJvY2Vzc2VkX2ZyYW1lcykNCj4gKwkJcmV0dXJuIDA7 DQo+ICsNCj4gKwlzbXBfd21iKCk7DQo+ICsNCj4gKwkvKiB3ZSB3aWxsIGhhdmUgdXNlZCBuZnJh bWVzIGRlc2NyaXB0b3IgY2hhaW5zICovDQo+ICsJYXZhaWwtPmlkeCA9IGh0b2xlMTYobGUxNnRv aChhdmFpbC0+aWR4KSArIHByb2Nlc3NlZF9mcmFtZXMpOw0KPiArDQo+ICsJdmhvc3Rfa2ljaygm dnJpbmdfdXNlZF9hbGxbMV0udXNlZCwgYy0+dmhvc3QudnFbMV0ua2lja19mZCk7DQo+ICsNCj4g KwkvKiB3YWl0IHVudGlsIHRoZSBrZXJuZWwgZmluaXNoZXMgcHJvY2Vzc2luZyB0aGlzIHNlbmQg Ki8NCj4gKwl3aGlsZSAoYXZhaWwtPmlkeCAhPSB2cmluZ191c2VkX2FsbFsxXS51c2VkLmlkeCkN Cj4gKwkJOw0KPiArDQo+ICsJcmV0dXJuIHByb2Nlc3NlZF9mcmFtZXM7DQo+ICt9DQo+ICsNCj4g ICAvKioNCj4gICAgKiB0YXBfc2VuZF9mcmFtZXNfcGFzdGEoKSAtIFNlbmQgbXVsdGlwbGUgZnJh bWVzIHRvIHRoZSBwYXN0YSB0YXANCj4gICAgKiBAYzoJCQlFeGVjdXRpb24gY29udGV4dA0KPiAg ICAqIEBpb3Y6CQlBcnJheSBvZiBidWZmZXJzDQo+ICAgICogQGJ1ZnNfcGVyX2ZyYW1lOglOdW1i ZXIgb2YgYnVmZmVycyAoaW92ZWMgZW50cmllcykgcGVyIGZyYW1lDQo+ICAgICogQG5mcmFtZXM6 CQlOdW1iZXIgb2YgZnJhbWVzIHRvIHNlbmQNCj4gKyAqIEB2aG9zdDoJCVNlbmQgdGhyb3VnaCB2 aG9zdC1uZXQgcmF0aGVyIHRoYW4gd3JpdGluZyB0byB0aGUgdGFwDQo+ICAgICoNCj4gICAgKiBA aW92IG11c3QgaGF2ZSB0b3RhbCBsZW5ndGggQGJ1ZnNfcGVyX2ZyYW1lICogQG5mcmFtZXMsIHdp dGggZWFjaCBzZXQgb2YNCj4gICAgKiBAYnVmc19wZXJfZnJhbWUgY29udGlndW91cyBidWZmZXJz IHJlcHJlc2VudGluZyBhIHNpbmdsZSBmcmFtZS4NCj4gQEAgLTM3NSwxMSArNTA5LDE1IEBAIHZv aWQgdGFwX2ljbXA2X3NlbmQoY29uc3Qgc3RydWN0IGN0eCAqYywNCj4gICAgKi8NCj4gICBzdGF0 aWMgc2l6ZV90IHRhcF9zZW5kX2ZyYW1lc19wYXN0YShjb25zdCBzdHJ1Y3QgY3R4ICpjLA0KPiAg IAkJCQkgICAgY29uc3Qgc3RydWN0IGlvdmVjICppb3YsDQo+IC0JCQkJICAgIHNpemVfdCBidWZz X3Blcl9mcmFtZSwgc2l6ZV90IG5mcmFtZXMpDQo+ICsJCQkJICAgIHNpemVfdCBidWZzX3Blcl9m cmFtZSwgc2l6ZV90IG5mcmFtZXMsDQo+ICsJCQkJICAgIGJvb2wgdmhvc3QpDQo+ICAgew0KPiAg IAlzaXplX3QgbmJ1ZnMgPSBidWZzX3Blcl9mcmFtZSAqIG5mcmFtZXM7DQo+ICAgCXNpemVfdCBp Ow0KPiAgIA0KPiArCWlmICh2aG9zdCkNCj4gKwkJcmV0dXJuIHRhcF9zZW5kX2ZyYW1lc192aG9z dChjLCBpb3YsIGJ1ZnNfcGVyX2ZyYW1lLCBuZnJhbWVzKTsNCj4gKw0KPiAgIAlmb3IgKGkgPSAw OyBpIDwgbmJ1ZnM7IGkgKz0gYnVmc19wZXJfZnJhbWUpIHsNCj4gICAJCXNzaXplX3QgcmMgPSB3 cml0ZXYoYy0+ZmRfdGFwLCBpb3YgKyBpLCBidWZzX3Blcl9mcmFtZSk7DQo+ICAgCQlzaXplX3Qg ZnJhbWVsZW4gPSBpb3Zfc2l6ZShpb3YgKyBpLCBidWZzX3Blcl9mcmFtZSk7DQo+IEBAIC01MTUs NyArNjUzLDcgQEAgdm9pZCB0YXBfc2VuZF9zaW5nbGUoY29uc3Qgc3RydWN0IGN0eCAqYywgY29u c3Qgdm9pZCAqZGF0YSwgc2l6ZV90IGwybGVuKQ0KPiAgIAkJaW92W2lvdmNudF0uaW92X2xlbiA9 IGwybGVuOw0KPiAgIAkJaW92Y250Kys7DQo+ICAgDQo+IC0JCW0gPSB0YXBfc2VuZF9mcmFtZXNf cGFzdGEoYywgaW92LCBpb3ZjbnQsIDEpOw0KPiArCQltID0gdGFwX3NlbmRfZnJhbWVzX3Bhc3Rh KGMsIGlvdiwgaW92Y250LCAxLCBmYWxzZSk7DQoNCllvdSBrZWVwIGZhbHNlLCB5b3Ugc2hvdWxk IHVzZSAiYy0+dmhvc3QuZmQgIT0gLTEiIGhlcmUNCg0KPiAgIAkJYnJlYWs7DQo+ICAgCWNhc2Ug TU9ERV9WVToNCj4gICAJCXZ1X3NlbmRfc2luZ2xlKGMsIGRhdGEsIGwybGVuKTsNCj4gQEAgLTU1 Myw3ICs2OTEsOCBAQCBzaXplX3QgdGFwX3NlbmRfZnJhbWVzKGNvbnN0IHN0cnVjdCBjdHggKmMs IGNvbnN0IHN0cnVjdCBpb3ZlYyAqaW92LA0KPiAgIA0KPiAgIAlzd2l0Y2ggKGMtPm1vZGUpIHsN Cj4gICAJY2FzZSBNT0RFX1BBU1RBOg0KPiAtCQltID0gdGFwX3NlbmRfZnJhbWVzX3Bhc3RhKGMs IGlvdiwgYnVmc19wZXJfZnJhbWUsIG5mcmFtZXMpOw0KPiArCQltID0gdGFwX3NlbmRfZnJhbWVz X3Bhc3RhKGMsIGlvdiwgYnVmc19wZXJfZnJhbWUsIG5mcmFtZXMsDQo+ICsJCQkJCSAgYy0+dmhv c3QuZmQgIT0gLTEpOw0KPiAgIAkJYnJlYWs7DQo+ICAgCWNhc2UgTU9ERV9QQVNTVDoNCj4gICAJ CW0gPSB0YXBfc2VuZF9mcmFtZXNfcGFzc3QoYywgaW92LCBidWZzX3Blcl9mcmFtZSwgbmZyYW1l cyk7DQoNCg==