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=dEI6yH/5; 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 256135A0269 for ; Mon, 01 Jun 2026 09:38:21 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1780299500; 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=kOYmLbHs+yVtYKMLhxLazTNcpMesbbQKoHF7ufzm+EY=; b=dEI6yH/5A5xQ2741JEP2R81Hngn6gOx9LrTCQOUBrW4wFF5rIV9W3QQmr2R8R5azDNNlMi wGfS4bt67NcAQ+wqD9KN+cacj7euPQWu9IJ7yhCOoRn2BJMl2s4sA9lda6DJjCph5/OiG+ jl7hkQK2IszoAG3UEJLgIDhjPd8vlpQ= Received: from mx-prod-mc-03.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-104-MBmZiqLXOLGVwMtuchwOBQ-1; Mon, 01 Jun 2026 03:38:18 -0400 X-MC-Unique: MBmZiqLXOLGVwMtuchwOBQ-1 X-Mimecast-MFC-AGG-ID: MBmZiqLXOLGVwMtuchwOBQ_1780299498 Received: from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111]) (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-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 73B0F195606F; Mon, 1 Jun 2026 07:38:17 +0000 (UTC) Received: from anskuma-thinkpadp1gen7.bengluru.csb (unknown [10.74.80.95]) by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id E38C81800352; Mon, 1 Jun 2026 07:38:13 +0000 (UTC) From: Anshu Kumari To: passt-dev@passt.top, anskuma@redhat.com, sbrivio@redhat.com Subject: [PATCH v3 3/6] dhcp: Add option type table and value parser Date: Mon, 1 Jun 2026 13:07:53 +0530 Message-ID: <20260601073758.1571317-4-anskuma@redhat.com> In-Reply-To: <20260601073758.1571317-1-anskuma@redhat.com> References: <20260601073758.1571317-1-anskuma@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.111 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: Nmkm_lnWmSIDm6N8h1Y8jz7Ei1b6OLlQ9e8q3mRcftM_1780299498 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Message-ID-Hash: 6PJF6ISTSFJHPZ74A3DUCSJZJH5UR2VQ X-Message-ID-Hash: 6PJF6ISTSFJHPZ74A3DUCSJZJH5UR2VQ X-MailFrom: anskuma@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: david@gibson.dropbear.id.au, jmaloy@redhat.com, lvivier@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: QWRkIGFuIFJGQyAyMTMyIHR5cGUgbG9va3VwIHRhYmxlIG1hcHBpbmcgREhDUCBvcHRpb24gY29k ZXMgdG8gdGhlaXINCmV4cGVjdGVkIHZhbHVlIGZvcm1hdHMsIGFuZCBhIGRoY3Bfb3B0X3BhcnNl KCkgZnVuY3Rpb24gdGhhdCBjb252ZXJ0cw0KQ0xJIHN0cmluZyB2YWx1ZXMgaW50byB0aGVpciBi aW5hcnkgd2lyZSByZXByZXNlbnRhdGlvbi4NCg0KV2lyZSBkaGNwX29wdF9wYXJzZSgpIGludG8g ZGhjcF9hZGRfb3B0aW9uKCkgc28gdGhhdCB2YWx1ZXMgYXJlDQp2YWxpZGF0ZWQgYW5kIGVuY29k ZWQgYXQgY29uZmlndXJhdGlvbiB0aW1lLg0KDQpMaW5rOiBodHRwczovL2J1Z3MucGFzc3QudG9w L3Nob3dfYnVnLmNnaT9pZD0xOTINClNpZ25lZC1vZmYtYnk6IEFuc2h1IEt1bWFyaSA8YW5za3Vt YUByZWRoYXQuY29tPg0KLS0tDQp2MzoNCiAgLSBSZXBsYWNlZCBESENQX09QVF9JTlRFR0VSIHdp dGggc2VwYXJhdGUgREhDUF9PUFRfSU5UOC9JTlQxNi9JTlQzMg0KICAgIGVudW1zLCByZW1vdmVk IGRoY3Bfb3B0X2ludF93aWR0aFtdIGFycmF5Lg0KICAtIFNoYXJlZCBsb2dpYyBiZXR3ZWVuIERI Q1BfT1BUX0lQVjQgYW5kIERIQ1BfT1BUX0lQVjRfTElTVCDigJQgcGFyc2UNCiAgICBib3RoIGFz IGxpc3QsIGVycm9yIGlmID4xIGluIHNpbmdsZSBjYXNlLg0KICAtIEFkZGVkIGVycm5vID0gMCBi ZWZvcmUgc3RydG91bCgpIGFuZCBjaGVjayBhZnRlci4NCiAgLSBGaXhlZCByYW5nZSBjaGVjazog MVVMTCA8PCAod2lkdGggKiA4KSBmb3IgYWxsIHdpZHRocyBpbmNsdWRpbmcNCiAgICB3aWR0aD09 NC4NCiAgLSBzdHJuY3B5IOKGkiBtZW1jcHkgZm9yIERIQ1BfT1BUX1NUUi4NCiAgLSBNb3ZlZCBl bnVtIHRvIGRoY3AuYyBzaW5jZSBub3QgdXNlZCBpbiBvdGhlciBmaWxlcy4NCiAgLSBSZW1vdmVk IG9wdGlvbnMgNTUsIDYxIChjbGllbnQtb25seSksIDExOSAoRE5TIGNvbXByZXNzaW9uLCB1c2UN CiAgICAtLWRoY3Atc2VhcmNoIGluc3RlYWQpLCAzMyAoSVAgcGFpcnMgbm90IHN1cHBvcnRlZCku DQogIC0gREhDUF9PUFRfUEFSU0VfQlVGIDEwMjQg4oaSIGNoYXIgdG1wWzI1Nl0uDQogIC0gVXBn cmFkZWQgZGhjcF9hZGRfb3B0aW9uKCkgdG8gY2FsbCBkaGNwX29wdF9wYXJzZSgpIGFuZCBwb3B1 bGF0ZQ0KICAgIHZhbFtdL2xlbi4NCiAgLSBBbGlnbmVkIGFycmF5IGVudHJpZXMgZm9yIHJlYWRh YmlsaXR5Lg0KICAtIEFkZGVkIHRhYiBhZnRlciBAREhDUF9PUFRfSVBWNF9MSVNUOiBpbiBrZXJu ZWxkb2MuDQogIC0gUmVqZWN0IGVtcHR5IHZhbHVlIHN0cmluZ3MgYmVmb3JlIHBhcnNpbmcNCiAg LSBSZWplY3QgbGVhZGluZy90cmFpbGluZy9jb25zZWN1dGl2ZSBjb21tYXMgaW4gSVAgbGlzdCB2 YWx1ZXMuDQoNCnYyOg0KICAtIFJlcGxhY2VkIHN0cnVjdCBsb29rdXAgdGFibGUgKyBkaGNwX29w dF90eXBlX2xvb2t1cCgpIGZ1bmN0aW9uIHdpdGggZmxhdCBkaGNwX29wdF90eXBlc1syNTZdIGFy cmF5IGluZGV4ZWQgYnkgY29kZS4NCiAgLSBDb25zb2xpZGF0ZWQgREhDUF9PUFRfVUlOVDgvVUlO VDE2L1VJTlQzMiBpbnRvIHNpbmdsZSBESENQX09QVF9JTlRFR0VSIHdpdGggZGhjcF9vcHRfaW50 X3dpZHRoWzI1Nl0gdGFibGUuDQogIC0gRHJvcHBlZCBESENQX09QVF9ST1VURVMgLyBvcHRpb24g MTIxIGVudGlyZWx5Lg0KICAtIEFkZGVkIGtlcm5lbGRvYyBmb3IgZW51bSBkaGNwX29wdF90eXBl IHZhbHVlcy4NCiAgLSBSZW1vdmVkIGN1cmx5IGJyYWNlcyBmcm9tIHN3aXRjaCBjYXNlcywgZGVj bGFyYXRpb25zIGJlZm9yZSBzd2l0Y2guDQogIC0gQWRkZWQgbmV3bGluZXMgYmVmb3JlIHJldHVy biBzdGF0ZW1lbnRzLg0KICAtIENoYW5nZWQgSVAgbGlzdCBkZWxpbWl0ZXIgZnJvbSBzcGFjZSB0 byBjb21tYSAoLS1kaGNwLW9wdCA2LDEuMS4xLjEsOC44LjguOCkuDQogIC0gRGVmaW5lZCBESENQ X09QVF9QQVJTRV9CVUYgY29uc3RhbnQgZm9yIGJhcmUgMTAyNC4NCiAgLSBBZGRlZCBsZW4gYW5k IHZhbFsyNTVdIGZpZWxkcyB0byBzdHJ1Y3QgaGVyZSAobW92ZWQgZnJvbSBwYXRjaCAxKS4NCiAg LSBBZGRlZCBrZXJuZWxkb2MgZm9yIEBjdXN0b21fb3B0cy5sZW4gYW5kIEBjdXN0b21fb3B0cy52 YWwuDQogIC0gV2lyZWQgZGhjcF9vcHRfcGFyc2UoKSBpbnRvIGNhc2UgMzIgKC0tZGhjcC1ib290 KSB0byBwb3B1bGF0ZSB2YWwvbGVuLg0KLS0tDQogZGhjcC5jICB8IDE4MCArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQ0KIHBhc3N0LmggfCAg IDQgKysNCiAyIGZpbGVzIGNoYW5nZWQsIDE4MSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygt KQ0KDQpkaWZmIC0tZ2l0IGEvZGhjcC5jIGIvZGhjcC5jDQppbmRleCBjNWZiZjM3Li4wN2E0MmI5 IDEwMDY0NA0KLS0tIGEvZGhjcC5jDQorKysgYi9kaGNwLmMNCkBAIC0yMyw2ICsyMyw3IEBADQog I2luY2x1ZGUgPHVuaXN0ZC5oPg0KICNpbmNsdWRlIDxzdHJpbmcuaD4NCiAjaW5jbHVkZSA8bGlt aXRzLmg+DQorI2luY2x1ZGUgPGVycm5vLmg+DQogDQogI2luY2x1ZGUgInV0aWwuaCINCiAjaW5j bHVkZSAiaXAuaCINCkBAIC0zMyw2ICszNCwxNzAgQEANCiAjaW5jbHVkZSAibG9nLmgiDQogI2lu Y2x1ZGUgImRoY3AuaCINCiANCisvKioNCisgKiBlbnVtIGRoY3Bfb3B0X3R5cGUgLSBESENQIG9w dGlvbiB2YWx1ZSB0eXBlcyBwZXIgUkZDIDIxMzINCisgKiBAREhDUF9PUFRfTk9ORToJVW5zdXBw b3J0ZWQgb3IgdW5rbm93biBvcHRpb24NCisgKiBAREhDUF9PUFRfU1RSOglWYXJpYWJsZS1sZW5n dGggc3RyaW5nDQorICogQERIQ1BfT1BUX0lQVjQ6CVNpbmdsZSBJUHY0IGFkZHJlc3MNCisgKiBA REhDUF9PUFRfSVBWNF9MSVNUOglNdWx0aXBsZSBJUHY0IGFkZHJlc3NlcywgY29tbWEtc2VwYXJh dGVkDQorICogQERIQ1BfT1BUX0lOVDg6CVVuc2lnbmVkIDgtYml0IGludGVnZXINCisgKiBAREhD UF9PUFRfSU5UMTY6CVVuc2lnbmVkIDE2LWJpdCBpbnRlZ2VyDQorICogQERIQ1BfT1BUX0lOVDMy OglVbnNpZ25lZCAzMi1iaXQgaW50ZWdlcg0KKyAqLw0KK2VudW0gZGhjcF9vcHRfdHlwZSB7DQor CURIQ1BfT1BUX05PTkUsDQorCURIQ1BfT1BUX1NUUiwNCisJREhDUF9PUFRfSVBWNCwNCisJREhD UF9PUFRfSVBWNF9MSVNULA0KKwlESENQX09QVF9JTlQ4LA0KKwlESENQX09QVF9JTlQxNiwNCisJ REhDUF9PUFRfSU5UMzIsDQorfTsNCisNCisvKioNCisgKiBkaGNwX29wdF90eXBlcyAtIE1hcHMg b3B0aW9uIGNvZGUgdG8gUkZDIDIxMzIgdmFsdWUgdHlwZSwgaW5kZXhlZCBieSBjb2RlDQorICov DQorc3RhdGljIGNvbnN0IGVudW0gZGhjcF9vcHRfdHlwZSBkaGNwX29wdF90eXBlc1syNTZdID0g ew0KKwlbMV0gICA9IERIQ1BfT1BUX0lQVjQsCQkvKiBTdWJuZXQgTWFzayAqLw0KKwlbMl0gICA9 IERIQ1BfT1BUX0lOVDMyLAkJLyogVGltZSBPZmZzZXQgKi8NCisJWzNdICAgPSBESENQX09QVF9J UFY0X0xJU1QsCS8qIFJvdXRlciAqLw0KKwlbNF0gICA9IERIQ1BfT1BUX0lQVjRfTElTVCwJLyog VGltZSBTZXJ2ZXIgKi8NCisJWzVdICAgPSBESENQX09QVF9JUFY0X0xJU1QsCS8qIE5hbWUgU2Vy dmVyICovDQorCVs2XSAgID0gREhDUF9PUFRfSVBWNF9MSVNULAkvKiBEb21haW4gTmFtZSBTZXJ2 ZXIgKi8NCisJWzddICAgPSBESENQX09QVF9JUFY0X0xJU1QsCS8qIExvZyBTZXJ2ZXIgKi8NCisJ WzhdICAgPSBESENQX09QVF9JUFY0X0xJU1QsCS8qIENvb2tpZSBTZXJ2ZXIgKi8NCisJWzldICAg PSBESENQX09QVF9JUFY0X0xJU1QsCS8qIExQUiBTZXJ2ZXIgKi8NCisJWzEwXSAgPSBESENQX09Q VF9JUFY0X0xJU1QsCS8qIEltcHJlc3MgU2VydmVyICovDQorCVsxMV0gID0gREhDUF9PUFRfSVBW NF9MSVNULAkvKiBSZXNvdXJjZSBMb2NhdGlvbiBTZXJ2ZXIgKi8NCisJWzEyXSAgPSBESENQX09Q VF9TVFIsCQkvKiBIb3N0IE5hbWUgKi8NCisJWzEzXSAgPSBESENQX09QVF9JTlQxNiwJCS8qIEJv b3QgRmlsZSBTaXplICovDQorCVsxNV0gID0gREhDUF9PUFRfU1RSLAkJLyogRG9tYWluIE5hbWUg Ki8NCisJWzE2XSAgPSBESENQX09QVF9JUFY0LAkJLyogU3dhcCBTZXJ2ZXIgKi8NCisJWzE3XSAg PSBESENQX09QVF9TVFIsCQkvKiBSb290IFBhdGggKi8NCisJWzE5XSAgPSBESENQX09QVF9JTlQ4 LAkJLyogSVAgRm9yd2FyZGluZyAqLw0KKwlbMjNdICA9IERIQ1BfT1BUX0lOVDgsCQkvKiBEZWZh dWx0IElQIFRUTCAqLw0KKwlbMjZdICA9IERIQ1BfT1BUX0lOVDE2LAkJLyogSW50ZXJmYWNlIE1U VSAqLw0KKwlbMjhdICA9IERIQ1BfT1BUX0lQVjQsCQkvKiBCcm9hZGNhc3QgQWRkcmVzcyAqLw0K KwlbMzddICA9IERIQ1BfT1BUX0lOVDgsCQkvKiBUQ1AgRGVmYXVsdCBUVEwgKi8NCisJWzM4XSAg PSBESENQX09QVF9JTlQzMiwJCS8qIFRDUCBLZWVwYWxpdmUgSW50ZXJ2YWwgKi8NCisJWzQwXSAg PSBESENQX09QVF9TVFIsCQkvKiBOSVMgRG9tYWluIE5hbWUgKi8NCisJWzQxXSAgPSBESENQX09Q VF9JUFY0X0xJU1QsCS8qIE5JUyBTZXJ2ZXJzICovDQorCVs0Ml0gID0gREhDUF9PUFRfSVBWNF9M SVNULAkvKiBOVFAgU2VydmVycyAqLw0KKwlbNDRdICA9IERIQ1BfT1BUX0lQVjRfTElTVCwJLyog TmV0QklPUyBOYW1lIFNlcnZlciAqLw0KKwlbNTBdICA9IERIQ1BfT1BUX0lQVjQsCQkvKiBSZXF1 ZXN0ZWQgSVAgQWRkcmVzcyAqLw0KKwlbNTFdICA9IERIQ1BfT1BUX0lOVDMyLAkJLyogSVAgQWRk cmVzcyBMZWFzZSBUaW1lICovDQorCVs1M10gID0gREhDUF9PUFRfSU5UOCwJCS8qIERIQ1AgTWVz c2FnZSBUeXBlICovDQorCVs1NF0gID0gREhDUF9PUFRfSVBWNCwJCS8qIFNlcnZlciBJZGVudGlm aWVyICovDQorCVs1N10gID0gREhDUF9PUFRfSU5UMTYsCQkvKiBNYXggREhDUCBNZXNzYWdlIFNp emUgKi8NCisJWzU4XSAgPSBESENQX09QVF9JTlQzMiwJCS8qIFJlbmV3YWwgKFQxKSBUaW1lICov DQorCVs1OV0gID0gREhDUF9PUFRfSU5UMzIsCQkvKiBSZWJpbmRpbmcgKFQyKSBUaW1lICovDQor CVs2MF0gID0gREhDUF9PUFRfU1RSLAkJLyogVmVuZG9yIENsYXNzIElkZW50aWZpZXIgKi8NCisJ WzY2XSAgPSBESENQX09QVF9TVFIsCQkvKiBURlRQIFNlcnZlciBOYW1lICovDQorCVs2N10gID0g REhDUF9PUFRfU1RSLAkJLyogQm9vdGZpbGUgTmFtZSAqLw0KKwlbMjUyXSA9IERIQ1BfT1BUX1NU UiwJCS8qIFdQQUQgVVJMICovDQorfTsNCisNCisvKioNCisgKiBkaGNwX29wdF9wYXJzZSgpIC0g UGFyc2UgYSBESENQIG9wdGlvbiB2YWx1ZQ0KKyAqIEBjb2RlOglESENQIG9wdGlvbiBjb2RlDQor ICogQHN0cjoJVmFsdWUgc3RyaW5nIGZyb20gY29tbWFuZCBsaW5lDQorICogQGJ1ZjoJT3V0cHV0 IGJ1ZmZlciBmb3IgYmluYXJ5IHZhbHVlDQorICogQGJ1Zl9sZW46CVNpemUgb2Ygb3V0cHV0IGJ1 ZmZlcg0KKyAqDQorICogUmV0dXJuOiBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbiB0byBAYnVmLCBv ciAtMSBvbiBlcnJvcg0KKyAqLw0KK3N0YXRpYyBpbnQgZGhjcF9vcHRfcGFyc2UodWludDhfdCBj b2RlLCBjb25zdCBjaGFyICpzdHIsDQorCQkJICB1aW50OF90ICpidWYsIHNpemVfdCBidWZfbGVu KQ0KK3sNCisJZW51bSBkaGNwX29wdF90eXBlIHR5cGUgPSBkaGNwX29wdF90eXBlc1tjb2RlXTsN CisJY2hhciAqdG9rLCAqc2F2ZXB0ciwgKmVuZDsNCisJc3RydWN0IGluX2FkZHIgYWRkcjsNCisJ dW5zaWduZWQgbG9uZyB2YWw7DQorCXVuc2lnbmVkIGludCBpOw0KKwl1aW50OF90IHdpZHRoOw0K KwljaGFyIHRtcFsyNTZdOw0KKwlzaXplX3Qgc2xlbjsNCisJaW50IGxlbjsNCisNCisJaWYgKCEq c3RyKQ0KKwkJZGllKCJFbXB0eSB2YWx1ZSBmb3IgREhDUCBvcHRpb24gJXUiLCBjb2RlKTsNCisN CisJc3dpdGNoICh0eXBlKSB7DQorCWNhc2UgREhDUF9PUFRfTk9ORToNCisJCWRpZSgiVW5zdXBw b3J0ZWQgREhDUCBvcHRpb246ICV1LCINCisJCSAgICAiIHNlZSBwYXNzdCgxKSBmb3Igc3VwcG9y dGVkIGNvZGVzIiwgY29kZSk7DQorCWNhc2UgREhDUF9PUFRfSVBWNDoNCisJY2FzZSBESENQX09Q VF9JUFY0X0xJU1Q6DQorCQlsZW4gPSAwOw0KKw0KKwkJLyogUmVqZWN0IGVtcHR5LCBsZWFkaW5n L3RyYWlsaW5nLCBvciBjb25zZWN1dGl2ZSBjb21tYXMgKi8NCisJCWlmICghKnN0ciB8fCAqc3Ry ID09ICcsJyB8fCBzdHJbc3RybGVuKHN0cikgLSAxXSA9PSAnLCcgfHwNCisJCSAgICBzdHJzdHIo c3RyLCAiLCwiKSkNCisJCQlyZXR1cm4gLTE7DQorDQorCQlpZiAoc25wcmludGZfY2hlY2sodG1w LCBzaXplb2YodG1wKSwgIiVzIiwgc3RyKSkNCisJCQlyZXR1cm4gLTE7DQorDQorCQlmb3IgKHRv ayA9IHN0cnRva19yKHRtcCwgIiwiLCAmc2F2ZXB0cik7IHRvazsNCisJCSAgICAgdG9rID0gc3Ry dG9rX3IoTlVMTCwgIiwiLCAmc2F2ZXB0cikpIHsNCisJCQlpZiAoaW5ldF9wdG9uKEFGX0lORVQs IHRvaywgJmFkZHIpICE9IDEpDQorCQkJCXJldHVybiAtMTsNCisNCisJCQlpZiAobGVuICsgKGlu dClzaXplb2YoYWRkcikgPiAoaW50KWJ1Zl9sZW4pDQorCQkJCXJldHVybiAtMTsNCisNCisJCQlt ZW1jcHkoYnVmICsgbGVuLCAmYWRkciwgc2l6ZW9mKGFkZHIpKTsNCisJCQlsZW4gKz0gc2l6ZW9m KGFkZHIpOw0KKw0KKwkJCWlmICh0eXBlID09IERIQ1BfT1BUX0lQVjQpDQorCQkJCWJyZWFrOw0K KwkJfQ0KKw0KKwkJaWYgKHR5cGUgPT0gREhDUF9PUFRfSVBWNCAmJiBzdHJ0b2tfcihOVUxMLCAi LCIsICZzYXZlcHRyKSkNCisJCQlyZXR1cm4gLTE7DQorDQorCQlyZXR1cm4gbGVuOw0KKwljYXNl IERIQ1BfT1BUX0lOVDg6DQorCWNhc2UgREhDUF9PUFRfSU5UMTY6DQorCWNhc2UgREhDUF9PUFRf SU5UMzI6DQorCQlpZiAodHlwZSA9PSBESENQX09QVF9JTlQ4KQ0KKwkJCXdpZHRoID0gMTsNCisJ CWVsc2UgaWYgKHR5cGUgPT0gREhDUF9PUFRfSU5UMTYpDQorCQkJd2lkdGggPSAyOw0KKwkJZWxz ZQ0KKwkJCXdpZHRoID0gNDsNCisNCisJCWVycm5vID0gMDsNCisJCXZhbCA9IHN0cnRvdWwoc3Ry LCAmZW5kLCAwKTsNCisNCisJCWlmICgqZW5kIHx8IGVycm5vKQ0KKwkJCXJldHVybiAtMTsNCisN CisJCWlmIChidWZfbGVuIDwgd2lkdGgpDQorCQkJcmV0dXJuIC0xOw0KKw0KKwkJaWYgKHZhbCA+ PSAoMVVMTCA8PCAod2lkdGggKiA4KSkpDQorCQkJcmV0dXJuIC0xOw0KKw0KKwkJZm9yIChpID0g d2lkdGg7IGkgPiAwOyBpLS0pIHsNCisJCQlidWZbaSAtIDFdID0gdmFsICYgMHhmZjsNCisJCQl2 YWwgPj49IDg7DQorCQl9DQorDQorCQlyZXR1cm4gd2lkdGg7DQorCWNhc2UgREhDUF9PUFRfU1RS Og0KKwkJc2xlbiA9IHN0cmxlbihzdHIpOw0KKw0KKwkJaWYgKCFzbGVuIHx8IHNsZW4gPj0gYnVm X2xlbikNCisJCQlyZXR1cm4gLTE7DQorDQorCQltZW1jcHkoYnVmLCBzdHIsIHNsZW4pOw0KKw0K KwkJcmV0dXJuIHNsZW47DQorCX0NCisNCisJcmV0dXJuIC0xOw0KK30NCiANCiAvKioNCiAgKiBk aGNwX2FkZF9vcHRpb24oKSAtIEFkZCBvciB1cGRhdGUgYSBjdXN0b20gREhDUCBvcHRpb24NCkBA IC00MCwxNCArMjA1LDE1IEBADQogICogQGNvZGU6CURIQ1Agb3B0aW9uIGNvZGUNCiAgKiBAdmFs X3N0cjoJVmFsdWUgc3RyaW5nIGZyb20gY29tbWFuZCBsaW5lDQogICoNCi0gKiBJZiBAY29kZSB3 YXMgYWxyZWFkeSBhZGRlZCwgdGhlIHByZXZpb3VzIHZhbHVlIGlzIG92ZXJ3cml0dGVuLg0KLSAq IENhbGxzIGRpZSgpIG9uIGFueSBlcnJvci4NCisgKiBQYXJzZXMgQHZhbF9zdHIgYWNjb3JkaW5n IHRvIHRoZSB0eXBlIHJlZ2lzdGVyZWQgZm9yIEBjb2RlIGluDQorICogZGhjcF9vcHRfdHlwZXNb XS4gSWYgQGNvZGUgd2FzIGFscmVhZHkgYWRkZWQsIHRoZSBwcmV2aW91cyB2YWx1ZQ0KKyAqIGlz IG92ZXJ3cml0dGVuLiBDYWxscyBkaWUoKSBvbiBhbnkgZXJyb3IuDQogICoNCiAgKiBSZXR1cm46 IDAgb24gc3VjY2Vzcw0KICAqLw0KIGludCBkaGNwX2FkZF9vcHRpb24oc3RydWN0IGN0eCAqYywg dWludDhfdCBjb2RlLCBjb25zdCBjaGFyICp2YWxfc3RyKQ0KIHsNCi0JaW50IGlkeDsNCisJaW50 IGlkeCwgcmV0Ow0KIA0KIAlmb3IgKGlkeCA9IDA7IGlkeCA8IGMtPmN1c3RvbV9vcHRzX2NvdW50 OyBpZHgrKykgew0KIAkJaWYgKGMtPmN1c3RvbV9vcHRzW2lkeF0uY29kZSA9PSBjb2RlKQ0KQEAg LTYxLDcgKzIyNywxNSBAQCBpbnQgZGhjcF9hZGRfb3B0aW9uKHN0cnVjdCBjdHggKmMsIHVpbnQ4 X3QgY29kZSwgY29uc3QgY2hhciAqdmFsX3N0cikNCiAJCWMtPmN1c3RvbV9vcHRzX2NvdW50Kys7 DQogCX0NCiANCisJcmV0ID0gZGhjcF9vcHRfcGFyc2UoY29kZSwgdmFsX3N0ciwNCisJCQkgICAg IGMtPmN1c3RvbV9vcHRzW2lkeF0udmFsLA0KKwkJCSAgICAgc2l6ZW9mKGMtPmN1c3RvbV9vcHRz WzBdLnZhbCkpOw0KKwlpZiAocmV0IDwgMCkNCisJCWRpZSgiSW52YWxpZCB2YWx1ZSBmb3IgREhD UCBvcHRpb24gJXU6ICVzIiwNCisJCSAgICBjb2RlLCB2YWxfc3RyKTsNCisNCiAJYy0+Y3VzdG9t X29wdHNbaWR4XS5jb2RlID0gY29kZTsNCisJYy0+Y3VzdG9tX29wdHNbaWR4XS5sZW4gPSByZXQ7 DQogDQogCWlmIChzbnByaW50Zl9jaGVjayhjLT5jdXN0b21fb3B0c1tpZHhdLnN0ciwNCiAJCQkg ICBzaXplb2YoYy0+Y3VzdG9tX29wdHNbMF0uc3RyKSwNCmRpZmYgLS1naXQgYS9wYXNzdC5oIGIv cGFzc3QuaA0KaW5kZXggM2EwODE2Zi4uNzUxZmVlMyAxMDA2NDQNCi0tLSBhL3Bhc3N0LmgNCisr KyBiL3Bhc3N0LmgNCkBAIC0xODQsNiArMTg0LDggQEAgc3RydWN0IGlwNl9jdHggew0KICAqIEBm cWRuOgkJR3Vlc3QgRlFETg0KICAqIEBjdXN0b21fb3B0czoJVXNlci1zcGVjaWZpZWQgREhDUCBv cHRpb25zIGZyb20gLS1kaGNwLW9wdA0KICAqIEBjdXN0b21fb3B0cy5jb2RlOglESENQIG9wdGlv biBjb2RlDQorICogQGN1c3RvbV9vcHRzLmxlbjoJTGVuZ3RoIG9mIGJpbmFyeSB2YWx1ZSBpbiBA dmFsDQorICogQGN1c3RvbV9vcHRzLnZhbDoJQmluYXJ5LWVuY29kZWQgb3B0aW9uIHZhbHVlDQog ICogQGN1c3RvbV9vcHRzLnN0cjoJT3JpZ2luYWwgc3RyaW5nIHZhbHVlIGZyb20gY29tbWFuZCBs aW5lDQogICogQGN1c3RvbV9vcHRzX2NvdW50OglOdW1iZXIgb2YgZW50cmllcyBpbiBAY3VzdG9t X29wdHMNCiAgKiBAaWZpNjoJCVRlbXBsYXRlIGludGVyZmFjZSBmb3IgSVB2NiwgLTE6IG5vbmUs IDA6IElQdjYgZGlzYWJsZWQNCkBAIC0yNzEsNiArMjczLDggQEAgc3RydWN0IGN0eCB7DQogDQog CXN0cnVjdCB7DQogCQl1aW50OF90IGNvZGU7DQorCQl1aW50OF90IGxlbjsNCisJCXVpbnQ4X3Qg dmFsWzI1NV07DQogCQljaGFyIHN0clsyNTZdOw0KIAl9IGN1c3RvbV9vcHRzW01BWF9DVVNUT01f REhDUF9PUFRTXTsNCiAJaW50IGN1c3RvbV9vcHRzX2NvdW50Ow0KLS0gDQoyLjU0LjANCg0K