From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <pve-devel-bounces@lists.proxmox.com>
Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9])
	by lore.proxmox.com (Postfix) with ESMTPS id 88C931FF16F
	for <inbox@lore.proxmox.com>; Fri, 15 Nov 2024 13:12:31 +0100 (CET)
Received: from firstgate.proxmox.com (localhost [127.0.0.1])
	by firstgate.proxmox.com (Proxmox) with ESMTP id 5350912A01;
	Fri, 15 Nov 2024 13:11:50 +0100 (CET)
From: Stefan Hanreich <s.hanreich@proxmox.com>
To: pve-devel@lists.proxmox.com
Date: Fri, 15 Nov 2024 13:11:00 +0100
Message-Id: <20241115121109.170200-10-s.hanreich@proxmox.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20241115121109.170200-1-s.hanreich@proxmox.com>
References: <20241115121109.170200-1-s.hanreich@proxmox.com>
MIME-Version: 1.0
X-SPAM-LEVEL: Spam detection results:  0
 AWL -0.234 Adjusted score from AWL reputation of From: address
 BAYES_00                 -1.9 Bayes spam probability is 0 to 1%
 DMARC_MISSING             0.1 Missing DMARC policy
 KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment
 KAM_LAZY_DOMAIN_SECURITY 1 Sending domain does not have any anti-forgery
 methods
 RDNS_NONE 0.793 Delivered to internal network by a host with no rDNS
 SPF_HELO_NONE           0.001 SPF: HELO does not publish an SPF Record
 SPF_NONE                0.001 SPF: sender does not publish an SPF Record
Subject: [pve-devel] [PATCH pve-firewall v4 09/18] sdn: add vnet firewall
 configuration
X-BeenThere: pve-devel@lists.proxmox.com
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Proxmox VE development discussion <pve-devel.lists.proxmox.com>
List-Unsubscribe: <https://lists.proxmox.com/cgi-bin/mailman/options/pve-devel>, 
 <mailto:pve-devel-request@lists.proxmox.com?subject=unsubscribe>
List-Archive: <http://lists.proxmox.com/pipermail/pve-devel/>
List-Post: <mailto:pve-devel@lists.proxmox.com>
List-Help: <mailto:pve-devel-request@lists.proxmox.com?subject=help>
List-Subscribe: <https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel>, 
 <mailto:pve-devel-request@lists.proxmox.com?subject=subscribe>
Reply-To: Proxmox VE development discussion <pve-devel@lists.proxmox.com>
Cc: Wolfgang Bumiller <w.bumiller@proxmox.com>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: pve-devel-bounces@lists.proxmox.com
Sender: "pve-devel" <pve-devel-bounces@lists.proxmox.com>

U2lnbmVkLW9mZi1ieTogU3RlZmFuIEhhbnJlaWNoIDxzLmhhbnJlaWNoQHByb3htb3guY29tPgpS
ZXZpZXdlZC1ieTogV29sZmdhbmcgQnVtaWxsZXIgPHcuYnVtaWxsZXJAcHJveG1veC5jb20+ClRl
c3RlZC1ieTogSGFubmVzIETDvHJyIDxoLmR1ZXJyQHByb3htb3guY29tPgotLS0KIHNyYy9QVkUv
RmlyZXdhbGwucG0gICAgICAgICB8IDEyNyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrLS0KIHNyYy9QVkUvRmlyZXdhbGwvSGVscGVycy5wbSB8ICAxMiArKysrCiAyIGZpbGVzIGNo
YW5nZWQsIDEzMiBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Ny
Yy9QVkUvRmlyZXdhbGwucG0gYi9zcmMvUFZFL0ZpcmV3YWxsLnBtCmluZGV4IGJmYWEzM2EuLmVj
N2E0ZTYgMTAwNjQ0Ci0tLSBhL3NyYy9QVkUvRmlyZXdhbGwucG0KKysrIGIvc3JjL1BWRS9GaXJl
d2FsbC5wbQpAQCAtMjksNiArMjksNyBAQCB1c2UgUFZFOjpSUzo6RmlyZXdhbGw6OlNETjsKIAog
bXkgJHB2ZWZ3X2NvbmZfZGlyID0gIi9ldGMvcHZlL2ZpcmV3YWxsIjsKIG15ICRjbHVzdGVyZndf
Y29uZl9maWxlbmFtZSA9ICIkcHZlZndfY29uZl9kaXIvY2x1c3Rlci5mdyI7CitteSAkdm5ldGZ3
X2NvbmZfZGlyID0gIi9ldGMvcHZlL3Nkbi9maXJld2FsbCI7CiAKICMgZHluYW1pY2FsbHkgaW5j
bHVkZSBQVkU6OlFlbXVTZXJ2ZXIgYW5kIFBWRTo6TFhDCiAjIHRvIGF2b2lkIGRlcGVuZGVuY3kg
cHJvYmxlbXMKQEAgLTEyOTAsNiArMTI5MSwxMiBAQCBvdXIgJGNsdXN0ZXJfb3B0aW9uX3Byb3Bl
cnRpZXMgPSB7CiAJb3B0aW9uYWwgPT4gMSwKIAllbnVtID0+IFsnQUNDRVBUJywgJ1JFSkVDVCcs
ICdEUk9QJ10sCiAgICAgfSwKKyAgICBwb2xpY3lfZm9yd2FyZCA9PiB7CisJZGVzY3JpcHRpb24g
PT4gIkZvcndhcmQgcG9saWN5LiIsCisJdHlwZSA9PiAnc3RyaW5nJywKKwlvcHRpb25hbCA9PiAx
LAorCWVudW0gPT4gWydBQ0NFUFQnLCAnRFJPUCddLAorICAgIH0sCiAgICAgbG9nX3JhdGVsaW1p
dCA9PiB7CiAJZGVzY3JpcHRpb24gPT4gIkxvZyByYXRlbGltaXRpbmcgc2V0dGluZ3MiLAogCXR5
cGUgPT4gJ3N0cmluZycsIGZvcm1hdCA9PiB7CkBAIC0xMzI5LDYgKzEzMzYsOCBAQCBvdXIgJGhv
c3Rfb3B0aW9uX3Byb3BlcnRpZXMgPSB7CiAJZGVzY3JpcHRpb24gPT4gIkxvZyBsZXZlbCBmb3Ig
aW5jb21pbmcgdHJhZmZpYy4iIH0pLAogICAgIGxvZ19sZXZlbF9vdXQgPT4gIGdldF9zdGFuZGFy
ZF9vcHRpb24oJ3B2ZS1mdy1sb2dsZXZlbCcsIHsKIAlkZXNjcmlwdGlvbiA9PiAiTG9nIGxldmVs
IGZvciBvdXRnb2luZyB0cmFmZmljLiIgfSksCisgICAgbG9nX2xldmVsX2ZvcndhcmQgPT4gIGdl
dF9zdGFuZGFyZF9vcHRpb24oJ3B2ZS1mdy1sb2dsZXZlbCcsIHsKKwlkZXNjcmlwdGlvbiA9PiAi
TG9nIGxldmVsIGZvciBmb3J3YXJkZWQgdHJhZmZpYy4iIH0pLAogICAgIHRjcF9mbGFnc19sb2df
bGV2ZWwgPT4gIGdldF9zdGFuZGFyZF9vcHRpb24oJ3B2ZS1mdy1sb2dsZXZlbCcsIHsKIAlkZXNj
cmlwdGlvbiA9PiAiTG9nIGxldmVsIGZvciBpbGxlZ2FsIHRjcCBmbGFncyBmaWx0ZXIuIiB9KSwK
ICAgICBzbXVyZl9sb2dfbGV2ZWwgPT4gIGdldF9zdGFuZGFyZF9vcHRpb24oJ3B2ZS1mdy1sb2ds
ZXZlbCcsIHsKQEAgLTE0NzYsNiArMTQ4NSwyMyBAQCBvdXIgJHZtX29wdGlvbl9wcm9wZXJ0aWVz
ID0gewogCiB9OwogCitvdXIgJHZuZXRfb3B0aW9uX3Byb3BlcnRpZXMgPSB7CisgICAgZW5hYmxl
ID0+IHsKKwlkZXNjcmlwdGlvbiA9PiAiRW5hYmxlL2Rpc2FibGUgZmlyZXdhbGwgcnVsZXMuIiwK
Kwl0eXBlID0+ICdib29sZWFuJywKKwlkZWZhdWx0ID0+IDAsCisJb3B0aW9uYWwgPT4gMSwKKyAg
ICB9LAorICAgIHBvbGljeV9mb3J3YXJkID0+IHsKKwlkZXNjcmlwdGlvbiA9PiAiRm9yd2FyZCBw
b2xpY3kuIiwKKwl0eXBlID0+ICdzdHJpbmcnLAorCW9wdGlvbmFsID0+IDEsCisJZW51bSA9PiBb
J0FDQ0VQVCcsICdEUk9QJ10sCisgICAgfSwKKyAgICBsb2dfbGV2ZWxfZm9yd2FyZCA9PiAgZ2V0
X3N0YW5kYXJkX29wdGlvbigncHZlLWZ3LWxvZ2xldmVsJywgeworCWRlc2NyaXB0aW9uID0+ICJM
b2cgbGV2ZWwgZm9yIGZvcndhcmRlZCB0cmFmZmljLiIgfSksCit9OworCiAKIG15ICRhZGRyX2xp
c3RfZGVzY3IgPSAiVGhpcyBjYW4gcmVmZXIgdG8gYSBzaW5nbGUgSVAgYWRkcmVzcywgYW4gSVAg
c2V0ICgnK2lwc2V0bmFtZScpIG9yIGFuIElQIGFsaWFzIGRlZmluaXRpb24uIFlvdSBjYW4gYWxz
byBzcGVjaWZ5IGFuIGFkZHJlc3MgcmFuZ2UgbGlrZSAnMjAuMzQuMTAxLjIwNy0yMDEuMy45Ljk5
Jywgb3IgYSBsaXN0IG9mIElQIGFkZHJlc3NlcyBhbmQgbmV0d29ya3MgKGVudHJpZXMgYXJlIHNl
cGFyYXRlZCBieSBjb21tYSkuIFBsZWFzZSBkbyBub3QgbWl4IElQdjQgYW5kIElQdjYgYWRkcmVz
c2VzIGluc2lkZSBzdWNoIGxpc3RzLiI7CiAKQEAgLTE0OTMsNyArMTUxOSw3IEBAIG15ICRydWxl
X3Byb3BlcnRpZXMgPSB7CiAJZGVzY3JpcHRpb24gPT4gIlJ1bGUgdHlwZS4iLAogCXR5cGUgPT4g
J3N0cmluZycsCiAJb3B0aW9uYWwgPT4gMSwKLQllbnVtID0+IFsnaW4nLCAnb3V0JywgJ2dyb3Vw
J10sCisJZW51bSA9PiBbJ2luJywgJ291dCcsICdmb3J3YXJkJywgJ2dyb3VwJ10sCiAgICAgfSwK
ICAgICBhY3Rpb24gPT4gewogCWRlc2NyaXB0aW9uID0+ICJSdWxlIGFjdGlvbiAoJ0FDQ0VQVCcs
ICdEUk9QJywgJ1JFSkVDVCcpIG9yIHNlY3VyaXR5IGdyb3VwIG5hbWUuIiwKQEAgLTE2NTEsMTAg
KzE2NzcsMjAgQEAgbXkgJHJ1bGVfZW52X2lmYWNlX2xvb2t1cCA9IHsKICAgICAnY3QnID0+IDEs
CiAgICAgJ3ZtJyA9PiAxLAogICAgICdncm91cCcgPT4gMCwKKyAgICAndm5ldCcgPT4gMCwKICAg
ICAnY2x1c3RlcicgPT4gMSwKICAgICAnaG9zdCcgPT4gMSwKIH07CiAKK215ICRydWxlX2Vudl9k
aXJlY3Rpb25fbG9va3VwID0geworICAgICdjdCcgPT4gWydpbicsICdvdXQnLCAnZ3JvdXAnXSwK
KyAgICAndm0nID0+IFsnaW4nLCAnb3V0JywgJ2dyb3VwJ10sCisgICAgJ2dyb3VwJyA9PiBbJ2lu
JywgJ291dCcsICdmb3J3YXJkJ10sCisgICAgJ2NsdXN0ZXInID0+IFsnaW4nLCAnb3V0JywgJ2Zv
cndhcmQnLCAnZ3JvdXAnXSwKKyAgICAnaG9zdCcgPT4gWydpbicsICdvdXQnLCAnZm9yd2FyZCcs
ICdncm91cCddLAorICAgICd2bmV0JyA9PiBbJ2ZvcndhcmQnLCAnZ3JvdXAnXSwKK307CisKIHN1
YiB2ZXJpZnlfcnVsZSB7CiAgICAgbXkgKCRydWxlLCAkY2x1c3Rlcl9jb25mLCAkZndfY29uZiwg
JHJ1bGVfZW52LCAkbm9lcnIpID0gQF87CiAKQEAgLTE3MjYsOCArMTc2MiwxNyBAQCBzdWIgdmVy
aWZ5X3J1bGUgewogICAgICYkYWRkX2Vycm9yKCdhY3Rpb24nLCAibWlzc2luZyBwcm9wZXJ0eSIp
IGlmICEkYWN0aW9uOwogCiAgICAgaWYgKCR0eXBlKSB7Ci0JaWYgKCR0eXBlIGVxICAnaW4nIHx8
ICR0eXBlIGVxICdvdXQnKSB7Ci0JICAgICYkYWRkX2Vycm9yKCdhY3Rpb24nLCAidW5rbm93biBh
Y3Rpb24gJyRhY3Rpb24nIikKKwlteSAkdmFsaWRfdHlwZXMgPSAkcnVsZV9lbnZfZGlyZWN0aW9u
X2xvb2t1cC0+eyRydWxlX2Vudn0KKwkgICAgb3IgZGllICJ1bmtub3duIHJ1bGVfZW52ICckcnVs
ZV9lbnYnXG4iOworCisJJGFkZF9lcnJvci0+KCd0eXBlJywgImludmFsaWQgcnVsZSB0eXBlICck
dHlwZScgZm9yIHJ1bGVfZW52ICckcnVsZV9lbnYnIikKKwkgICAgaWYgIShncmVwIHsgJF8gZXEg
JHR5cGUgfSBAJHZhbGlkX3R5cGVzKTsKKworCWlmICgkdHlwZSBlcSAgJ2luJyB8fCAkdHlwZSBl
cSAnb3V0JyB8fCAkdHlwZSBlcSAnZm9yd2FyZCcpIHsKKwkgICAgJGFkZF9lcnJvci0+KCdhY3Rp
b24nLCAnY2Fubm90IGRlZmluZSBSRUpFQ1QgcnVsZXMgb24gZm9yd2FyZCBjaGFpbicpCisJCWlm
ICR0eXBlIGVxICdmb3J3YXJkJyAmJiAkYWN0aW9uIGVxICdSRUpFQ1QnOworCisJICAgICRhZGRf
ZXJyb3ItPignYWN0aW9uJywgInVua25vd24gYWN0aW9uICckYWN0aW9uJyIpCiAJCWlmICRhY3Rp
b24gJiYgKCRhY3Rpb24gIX4gbS9eKEFDQ0VQVHxEUk9QfFJFSkVDVCkkLyk7CiAJfSBlbHNpZiAo
JHR5cGUgZXEgJ2dyb3VwJykgewogCSAgICAmJGFkZF9lcnJvcigndHlwZScsICJzZWN1cml0eSBn
cm91cHMgbm90IGFsbG93ZWQiKQpAQCAtMjgzMCw3ICsyODc1LDcgQEAgc3ViIHBhcnNlX2Z3X3J1
bGUgewogICAgICRydWxlLT57dHlwZX0gPSBsYygkMSk7CiAgICAgJHJ1bGUtPnthY3Rpb259ID0g
JDI7CiAKLSAgICBpZiAoJHJ1bGUtPnt0eXBlfSBlcSAgJ2luJyB8fCAkcnVsZS0+e3R5cGV9IGVx
ICdvdXQnKSB7CisgICAgaWYgKCRydWxlLT57dHlwZX0gZXEgICdpbicgfHwgJHJ1bGUtPnt0eXBl
fSBlcSAnb3V0JyB8fCAkcnVsZS0+e3R5cGV9IGVxICdmb3J3YXJkJykgewogCWlmICgkcnVsZS0+
e2FjdGlvbn0gPX4gbS9eKFxTKylcKChBQ0NFUFR8RFJPUHxSRUpFQ1QpXCkkLykgewogCSAgICAk
cnVsZS0+e21hY3JvfSA9ICQxOwogCSAgICAkcnVsZS0+e2FjdGlvbn0gPSAkMjsKQEAgLTI5NDQs
NyArMjk4OSw3IEBAIHN1YiBwYXJzZV9ob3N0Zndfb3B0aW9uIHsKICAgICBpZiAoJGxpbmUgPX4g
bS9eKGVuYWJsZXxub3NtdXJmc3x0Y3BmbGFnc3xuZHB8bG9nX25mX2Nvbm50cmFja3xuZl9jb25u
dHJhY2tfYWxsb3dfaW52YWxpZHxwcm90ZWN0aW9uX3N5bmZsb29kfG5mdGFibGVzKTpccyooMHwx
KVxzKiQvaSkgewogCSRvcHQgPSBsYygkMSk7CiAJJHZhbHVlID0gaW50KCQyKTsKLSAgICB9IGVs
c2lmICgkbGluZSA9fiBtL14obG9nX2xldmVsX2lufGxvZ19sZXZlbF9vdXR8dGNwX2ZsYWdzX2xv
Z19sZXZlbHxzbXVyZl9sb2dfbGV2ZWwpOlxzKigoJGxvZ2xldmVscylccyopPyQvaSkgeworICAg
IH0gZWxzaWYgKCRsaW5lID1+IG0vXihsb2dfbGV2ZWxfKD86aW58b3V0fGZvcndhcmQpfHRjcF9m
bGFnc19sb2dfbGV2ZWx8c211cmZfbG9nX2xldmVsKTpccyooKCRsb2dsZXZlbHMpXHMqKT8kL2kp
IHsKIAkkb3B0ID0gbGMoJDEpOwogCSR2YWx1ZSA9ICQyID8gbGMoJDMpIDogJyc7CiAgICAgfSBl
bHNpZiAoJGxpbmUgPX4gbS9eKG5mX2Nvbm50cmFja19oZWxwZXJzKTpccyooKChcUyspWyxdPykr
KVxzKiQvaSkgewpAQCAtMjk3NSw3ICszMDIwLDcgQEAgc3ViIHBhcnNlX2NsdXN0ZXJmd19vcHRp
b24gewogICAgIH0gZWxzaWYgKCRsaW5lID1+IG0vXihlYnRhYmxlcyk6XHMqKDB8MSlccyokL2kp
IHsKIAkkb3B0ID0gbGMoJDEpOwogCSR2YWx1ZSA9IGludCgkMik7Ci0gICAgfSBlbHNpZiAoJGxp
bmUgPX4gbS9eKHBvbGljeV8oaW58b3V0KSk6XHMqKEFDQ0VQVHxEUk9QfFJFSkVDVClccyokL2kp
IHsKKyAgICB9IGVsc2lmICgkbGluZSA9fiBtL14ocG9saWN5XyhpbnxvdXR8Zm9yd2FyZCkpOlxz
KihBQ0NFUFR8RFJPUHxSRUpFQ1QpXHMqJC9pKSB7CiAJJG9wdCA9IGxjKCQxKTsKIAkkdmFsdWUg
PSB1YygkMyk7CiAgICAgfSBlbHNpZiAoJGxpbmUgPX4gbS9eKGxvZ19yYXRlbGltaXQpOlxzKihc
UyspXHMqJC8pIHsKQEAgLTI5ODgsNiArMzAzMywyNCBAQCBzdWIgcGFyc2VfY2x1c3RlcmZ3X29w
dGlvbiB7CiAgICAgcmV0dXJuICgkb3B0LCAkdmFsdWUpOwogfQogCitzdWIgcGFyc2Vfdm5ldGZ3
X29wdGlvbiB7CisgICAgbXkgKCRsaW5lKSA9IEBfOworCisgICAgbXkgKCRvcHQsICR2YWx1ZSk7
CisKKyAgICBpZiAoJGxpbmUgPX4gbS9eKGVuYWJsZSk6XHMqKFxkKylccyokL2kpIHsKKwkkb3B0
ID0gbGMoJDEpOworCSR2YWx1ZSA9IGludCgkMik7CisgICAgfSBlbHNpZiAoJGxpbmUgPX4gbS9e
KHBvbGljeV9mb3J3YXJkKTpccyooQUNDRVBUfERST1ApXHMqJC9pKSB7CisJJG9wdCA9IGxjKCQx
KTsKKwkkdmFsdWUgPSB1YygkMik7CisgICAgfSBlbHNlIHsKKwlkaWUgImNhbid0IHBhcnNlIG9w
dGlvbiAnJGxpbmUnXG4iCisgICAgfQorCisgICAgcmV0dXJuICgkb3B0LCAkdmFsdWUpOworfQor
CiBzdWIgcmVzb2x2ZV9hbGlhcyB7CiAgICAgbXkgKCRjbHVzdGVyZndfY29uZiwgJGZ3X2NvbmYs
ICRjaWRyLCAkc2NvcGUpID0gQF87CiAKQEAgLTMxNTQsNiArMzIxNyw4IEBAIHN1YiBnZW5lcmlj
X2Z3X2NvbmZpZ19wYXJzZXIgewogCQkgICAgKCRvcHQsICR2YWx1ZSkgPSBwYXJzZV9jbHVzdGVy
Zndfb3B0aW9uKCRsaW5lKTsKIAkJfSBlbHNpZiAoJHJ1bGVfZW52IGVxICdob3N0JykgewogCQkg
ICAgKCRvcHQsICR2YWx1ZSkgPSBwYXJzZV9ob3N0Zndfb3B0aW9uKCRsaW5lKTsKKwkJfSBlbHNp
ZiAoJHJ1bGVfZW52IGVxICd2bmV0JykgeworCQkgICAgKCRvcHQsICR2YWx1ZSkgPSBwYXJzZV92
bmV0Zndfb3B0aW9uKCRsaW5lKTsKIAkJfSBlbHNlIHsKIAkJICAgICgkb3B0LCAkdmFsdWUpID0g
cGFyc2Vfdm1md19vcHRpb24oJGxpbmUpOwogCQl9CkBAIC0zMjkzLDYgKzMzNTgsMTAgQEAgc3Vi
IGxvY2tfdm1md19jb25mIHsKICAgICByZXR1cm4gUFZFOjpGaXJld2FsbDo6SGVscGVyczo6bG9j
a192bWZ3X2NvbmYoQF8pOwogfQogCitzdWIgbG9ja192bmV0ZndfY29uZiB7CisgICAgcmV0dXJu
IFBWRTo6RmlyZXdhbGw6OkhlbHBlcnM6OmxvY2tfdm5ldGZ3X2NvbmYoQF8pOworfQorCiBzdWIg
bG9hZF92bWZ3X2NvbmYgewogICAgIG15ICgkY2x1c3Rlcl9jb25mLCAkcnVsZV9lbnYsICR2bWlk
LCAkZGlyKSA9IEBfOwogCkBAIC0zMzE5LDcgKzMzODgsNyBAQCBteSAkZm9ybWF0X3J1bGVzID0g
c3ViIHsKICAgICBteSAkcmF3ID0gJyc7CiAKICAgICBmb3JlYWNoIG15ICRydWxlIChAJHJ1bGVz
KSB7Ci0JaWYgKCRydWxlLT57dHlwZX0gZXEgICdpbicgfHwgJHJ1bGUtPnt0eXBlfSBlcSAnb3V0
JyB8fCAkcnVsZS0+e3R5cGV9IGVxICdncm91cCcpIHsKKwlpZiAoZ3JlcCB7ICRfIGVxICRydWxl
LT57dHlwZX0gfSBxdyhpbiBvdXQgZm9yd2FyZCBncm91cCkpIHsKIAkgICAgJHJhdyAuPSAnfCcg
aWYgZGVmaW5lZCgkcnVsZS0+e2VuYWJsZX0pICYmICEkcnVsZS0+e2VuYWJsZX07CiAJICAgICRy
YXcgLj0gdWMoJHJ1bGUtPnt0eXBlfSk7CiAJICAgIGlmICgkcnVsZS0+e21hY3JvfSkgewpAQCAt
Mzc5Nyw2ICszODY2LDUwIEBAIHN1YiBzYXZlX2hvc3Rmd19jb25mIHsKICAgICB9CiB9CiAKK3N1
YiBsb2FkX3ZuZXRmd19jb25mIHsKKyAgICBteSAoJGNsdXN0ZXJfY29uZiwgJHJ1bGVfZW52LCAk
dm5ldCwgJGRpcikgPSBAXzsKKworICAgICRydWxlX2VudiA9ICd2bmV0JyBpZiAhZGVmaW5lZCgk
cnVsZV9lbnYpOworCisgICAgbXkgJGZpbGVuYW1lID0gIiR2bmV0ZndfY29uZl9kaXIvJHZuZXQu
ZnciOworCisgICAgbXkgJGVtcHR5X2NvbmYgPSB7CisJcnVsZXMgPT4gW10sCisJb3B0aW9ucyA9
PiB7fSwKKyAgICB9OworCisgICAgbXkgJHZuZXRmd19jb25mID0gZ2VuZXJpY19md19jb25maWdf
cGFyc2VyKCRmaWxlbmFtZSwgJGNsdXN0ZXJfY29uZiwgJGVtcHR5X2NvbmYsICRydWxlX2Vudik7
CisgICAgJHZuZXRmd19jb25mLT57dm5ldH0gPSAkdm5ldDsKKworICAgIHJldHVybiAkdm5ldGZ3
X2NvbmY7Cit9CisKK3N1YiBzYXZlX3ZuZXRmd19jb25mIHsKKyAgICBteSAoJHZuZXQsICRjb25m
KSA9IEBfOworCisgICAgbXkgJGZpbGVuYW1lID0gIiR2bmV0ZndfY29uZl9kaXIvJHZuZXQuZnci
OworCisgICAgbXkgJHJhdyA9ICcnOworCisgICAgbXkgJG9wdGlvbnMgPSAkY29uZi0+e29wdGlv
bnN9OworICAgICRyYXcgLj0gJiRmb3JtYXRfb3B0aW9ucygkb3B0aW9ucykgaWYgJG9wdGlvbnMg
JiYgc2NhbGFyKGtleXMgJSRvcHRpb25zKTsKKworICAgIG15ICRydWxlcyA9ICRjb25mLT57cnVs
ZXN9OworICAgIGlmICgkcnVsZXMgJiYgc2NhbGFyKEAkcnVsZXMpKSB7CisJJHJhdyAuPSAiW1JV
TEVTXVxuXG4iOworCSRyYXcgLj0gJiRmb3JtYXRfcnVsZXMoJHJ1bGVzLCAxKTsKKwkkcmF3IC49
ICJcbiI7CisgICAgfQorCisgICAgbWtkaXIoJHZuZXRmd19jb25mX2RpciwgMDc1NSkgaWYgIS1k
ICR2bmV0ZndfY29uZl9kaXI7CisKKyAgICBpZiAoJHJhdykgeworCVBWRTo6VG9vbHM6OmZpbGVf
c2V0X2NvbnRlbnRzKCRmaWxlbmFtZSwgJHJhdyk7CisgICAgfSBlbHNlIHsKKwl1bmxpbmsgJGZp
bGVuYW1lOworICAgIH0KK30KKwogc3ViIGNvbXBpbGUgewogICAgIG15ICgkY2x1c3Rlcl9jb25m
LCAkaG9zdGZ3X2NvbmYsICR2bWRhdGEsICRjb3Jvc3luY19jb25mKSA9IEBfOwogCmRpZmYgLS1n
aXQgYS9zcmMvUFZFL0ZpcmV3YWxsL0hlbHBlcnMucG0gYi9zcmMvUFZFL0ZpcmV3YWxsL0hlbHBl
cnMucG0KaW5kZXggN2RjYmNhMy4uMGI0NjVhZSAxMDA2NDQKLS0tIGEvc3JjL1BWRS9GaXJld2Fs
bC9IZWxwZXJzLnBtCisrKyBiL3NyYy9QVkUvRmlyZXdhbGwvSGVscGVycy5wbQpAQCAtMzIsNiAr
MzIsMTggQEAgc3ViIGxvY2tfdm1md19jb25mIHsKICAgICByZXR1cm4gJHJlczsKIH0KIAorc3Vi
IGxvY2tfdm5ldGZ3X2NvbmYgeworICAgIG15ICgkdm5ldCwgJHRpbWVvdXQsICRjb2RlLCBAcGFy
YW0pID0gQF87CisKKyAgICBkaWUgImNhbid0IGxvY2sgdm5ldCBmaXJld2FsbCBjb25maWcgZm9y
IHVuZGVmaW5lZCB2bmV0XG4iCisJaWYgIWRlZmluZWQoJHZuZXQpOworCisgICAgbXkgJHJlcyA9
IFBWRTo6Q2x1c3Rlcjo6Y2ZzX2xvY2tfZmlyZXdhbGwoInZuZXQtJHZuZXQiLCAkdGltZW91dCwg
JGNvZGUsIEBwYXJhbSk7CisgICAgZGllICRAIGlmICRAOworCisgICAgcmV0dXJuICRyZXM7Cit9
CisKIHN1YiByZW1vdmVfdm1md19jb25mIHsKICAgICBteSAoJHZtaWQpID0gQF87CiAKLS0gCjIu
MzkuNQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCnB2
ZS1kZXZlbCBtYWlsaW5nIGxpc3QKcHZlLWRldmVsQGxpc3RzLnByb3htb3guY29tCmh0dHBzOi8v
bGlzdHMucHJveG1veC5jb20vY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3B2ZS1kZXZlbAo=