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=HHLofg5F; dkim-atps=neutral Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by passt.top (Postfix) with ESMTPS id 182365A0265 for ; Tue, 26 May 2026 14:31:39 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1779798698; 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=5VY4NYeD8Ts7iiVc4atezTmrDTu2Cg9sGGUa3sCDyK4=; b=HHLofg5F8yT+FHcVubuTxeyEFgAinvmTd948NZAYdoMQ1Frk3mVn/HR11lUyh+8ELgJQ/W vUHb0iJomPiUHqsVogt1HdOmSsEkj02zuwTmeI05+UXc0QuxP/VavBA7o8D8oifecxuUX7 J+3b/NWYKD09mQg4NUO/IyoeyUUiQN4= Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-157-LpErtc4ZMkqobAW8n9m7eg-1; Tue, 26 May 2026 08:31:34 -0400 X-MC-Unique: LpErtc4ZMkqobAW8n9m7eg-1 X-Mimecast-MFC-AGG-ID: LpErtc4ZMkqobAW8n9m7eg_1779798693 Received: from mx-prod-int-10.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-10.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.95]) (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-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 3D8DB1800627; Tue, 26 May 2026 12:31:33 +0000 (UTC) Received: from anskuma-thinkpadp1gen7.bengluru.csb (unknown [10.74.65.90]) by mx-prod-int-10.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 79CB51686; Tue, 26 May 2026 12:31:30 +0000 (UTC) From: Anshu Kumari To: anskuma@redhat.com, passt-dev@passt.top, sbrivio@redhat.com Subject: [PATCH v2 3/6] dhcp: Add option type table and value parser Date: Tue, 26 May 2026 18:01:10 +0530 Message-ID: <20260526123115.1226166-4-anskuma@redhat.com> In-Reply-To: <20260526123115.1226166-1-anskuma@redhat.com> References: <20260526123115.1226166-1-anskuma@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.6 on 10.30.177.95 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: FizGjfgmP9JdUBHC5wo2idxJU-ny3Ortjp-GFGod37g_1779798693 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Message-ID-Hash: GLFCYIF2OUBUBYSSJ365KLYUXPM4T4MR X-Message-ID-Hash: GLFCYIF2OUBUBYSSJ365KLYUXPM4T4MR 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: jmaloy@redhat.com, lvivier@redhat.com, david@gibson.dropbear.id.au 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 dGhlIC0tZGhjcC1vcHQgaGFuZGxlciBzbyB0aGF0IHZhbHVlcyBhcmUNCnZhbGlkYXRlZCBhbmQg ZW5jb2RlZCBhdCBjb25maWd1cmF0aW9uIHRpbWUuDQoNCkxpbms6IGh0dHBzOi8vYnVncy5wYXNz dC50b3Avc2hvd19idWcuY2dpP2lkPTE5Mg0KU2lnbmVkLW9mZi1ieTogQW5zaHUgS3VtYXJpIDxh bnNrdW1hQHJlZGhhdC5jb20+DQotLS0NCnYyOg0KICAtIFJlcGxhY2VkIHN0cnVjdCBsb29rdXAg dGFibGUgKyBkaGNwX29wdF90eXBlX2xvb2t1cCgpIGZ1bmN0aW9uIHdpdGggZmxhdCBkaGNwX29w dF90eXBlc1syNTZdIGFycmF5IGluZGV4ZWQgYnkgY29kZS4NCiAgLSBDb25zb2xpZGF0ZWQgREhD UF9PUFRfVUlOVDgvVUlOVDE2L1VJTlQzMiBpbnRvIHNpbmdsZSBESENQX09QVF9JTlRFR0VSIHdp dGggZGhjcF9vcHRfaW50X3dpZHRoWzI1Nl0gdGFibGUuDQogIC0gRHJvcHBlZCBESENQX09QVF9S T1VURVMgLyBvcHRpb24gMTIxIGVudGlyZWx5Lg0KICAtIEFkZGVkIGtlcm5lbGRvYyBmb3IgZW51 bSBkaGNwX29wdF90eXBlIHZhbHVlcy4NCiAgLSBSZW1vdmVkIGN1cmx5IGJyYWNlcyBmcm9tIHN3 aXRjaCBjYXNlcywgZGVjbGFyYXRpb25zIGJlZm9yZSBzd2l0Y2guDQogIC0gQWRkZWQgbmV3bGlu ZXMgYmVmb3JlIHJldHVybiBzdGF0ZW1lbnRzLg0KICAtIENoYW5nZWQgSVAgbGlzdCBkZWxpbWl0 ZXIgZnJvbSBzcGFjZSB0byBjb21tYSAoLS1kaGNwLW9wdCA2LDEuMS4xLjEsOC44LjguOCkuDQog IC0gRGVmaW5lZCBESENQX09QVF9QQVJTRV9CVUYgY29uc3RhbnQgZm9yIGJhcmUgMTAyNC4NCiAg LSBBZGRlZCBsZW4gYW5kIHZhbFsyNTVdIGZpZWxkcyB0byBzdHJ1Y3QgaGVyZSAobW92ZWQgZnJv bSBwYXRjaMKgMSkuDQogIC0gQWRkZWQga2VybmVsZG9jIGZvciBAY3VzdG9tX29wdHMubGVuIGFu ZCBAY3VzdG9tX29wdHMudmFsLg0KICAtIFdpcmVkIGRoY3Bfb3B0X3BhcnNlKCkgaW50byBjYXNl IDMyICgtLWRoY3AtYm9vdCkgdG8gcG9wdWxhdGUgdmFsL2xlbi4NCi0tLQ0KIGNvbmYuYyAgfCAg MTYgKysrKysrDQogZGhjcC5jICB8IDE0OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKw0KIGRoY3AuaCAgfCAgMTcgKysrKysrKw0KIHBhc3N0 LmggfCAgIDQgKysNCiA0IGZpbGVzIGNoYW5nZWQsIDE4NSBpbnNlcnRpb25zKCspDQoNCmRpZmYg LS1naXQgYS9jb25mLmMgYi9jb25mLmMNCmluZGV4IGFlOGVlMjYuLjNhNWY0NWQgMTAwNjQ0DQot LS0gYS9jb25mLmMNCisrKyBiL2NvbmYuYw0KQEAgLTEyNjYsNiArMTI2Niw3IEBAIHZvaWQgY29u ZihzdHJ1Y3QgY3R4ICpjLCBpbnQgYXJnYywgY2hhciAqKmFyZ3YpDQogCWNoYXIgKmVuZDsNCiAJ dWlkX3QgdWlkOw0KIAlnaWRfdCBnaWQ7DQorCWludCBsZW47DQogCQ0KIA0KIAlpZiAoYy0+bW9k ZSA9PSBNT0RFX1BBU1RBKQ0KQEAgLTE0ODIsNyArMTQ4MywxNCBAQCB2b2lkIGNvbmYoc3RydWN0 IGN0eCAqYywgaW50IGFyZ2MsIGNoYXIgKiphcmd2KQ0KIAkJCQlkaWUoIlRvbyBtYW55IERIQ1Ag b3B0aW9ucyAobWF4ICVkKSIsDQogCQkJCSAgICBNQVhfQ1VTVE9NX0RIQ1BfT1BUUyk7DQogDQor CQkJcmV0ID0gZGhjcF9vcHRfcGFyc2UoNjcsIG9wdGFyZywNCisJCQkJCSAgICAgYy0+Y3VzdG9t X29wdHNbYy0+Y3VzdG9tX29wdHNfY291bnRdLnZhbCwNCisJCQkJCSAgICAgc2l6ZW9mKGMtPmN1 c3RvbV9vcHRzWzBdLnZhbCkpOw0KKwkJCWlmIChyZXQgPCAwKQ0KKwkJCQlkaWUoIkludmFsaWQg Ym9vdCBmaWxlIHZhbHVlOiAlcyIsIG9wdGFyZyk7DQorDQogCQkJYy0+Y3VzdG9tX29wdHNbYy0+ Y3VzdG9tX29wdHNfY291bnRdLmNvZGUgPSA2NzsNCisJCQljLT5jdXN0b21fb3B0c1tjLT5jdXN0 b21fb3B0c19jb3VudF0ubGVuID0gcmV0Ow0KIAkJCWlmIChzbnByaW50Zl9jaGVjayhjLT5jdXN0 b21fb3B0c1tjLT5jdXN0b21fb3B0c19jb3VudF0uc3RyLA0KIAkJCQkJICAgc2l6ZW9mKGMtPmN1 c3RvbV9vcHRzWzBdLnN0ciksDQogCQkJCQkgICAiJXMiLCBvcHRhcmcpKQ0KQEAgLTE1MDMsNyAr MTUxMSwxNSBAQCB2b2lkIGNvbmYoc3RydWN0IGN0eCAqYywgaW50IGFyZ2MsIGNoYXIgKiphcmd2 KQ0KIAkJCQlkaWUoIlRvbyBtYW55IC0tZGhjcC1vcHQgZW50cmllcyAobWF4ICVkKSIsDQogCQkJ CSAgICBNQVhfQ1VTVE9NX0RIQ1BfT1BUUyk7DQogDQorCQkJbGVuID0gZGhjcF9vcHRfcGFyc2Uo b3B0Y29kZSwgY29tbWEgKyAxLA0KKwkJCQkJICAgICBjLT5jdXN0b21fb3B0c1tjLT5jdXN0b21f b3B0c19jb3VudF0udmFsLA0KKwkJCQkJICAgICBzaXplb2YoYy0+Y3VzdG9tX29wdHNbMF0udmFs KSk7DQorCQkJaWYgKGxlbiA8IDApDQorCQkJCWRpZSgiSW52YWxpZCB2YWx1ZSBmb3IgREhDUCBv cHRpb24gJWx1OiAlcyIsDQorCQkJCSAgICBvcHRjb2RlLCBjb21tYSArIDEpOw0KKw0KIAkJCWMt PmN1c3RvbV9vcHRzW2MtPmN1c3RvbV9vcHRzX2NvdW50XS5jb2RlID0gb3B0Y29kZTsNCisJCQlj LT5jdXN0b21fb3B0c1tjLT5jdXN0b21fb3B0c19jb3VudF0ubGVuID0gbGVuOw0KIAkJCWlmIChz bnByaW50Zl9jaGVjayhjLT5jdXN0b21fb3B0c1tjLT5jdXN0b21fb3B0c19jb3VudF0uc3RyLA0K IAkJCQkJICAgc2l6ZW9mKGMtPmN1c3RvbV9vcHRzWzBdLnN0ciksDQogCQkJCQkgICAiJXMiLCBj b21tYSArIDEpKQ0KZGlmZiAtLWdpdCBhL2RoY3AuYyBiL2RoY3AuYw0KaW5kZXggMWZmOGNiYS4u ZTFjOTVhZCAxMDA2NDQNCi0tLSBhL2RoY3AuYw0KKysrIGIvZGhjcC5jDQpAQCAtMzMsNiArMzMs MTU0IEBADQogI2luY2x1ZGUgImxvZy5oIg0KICNpbmNsdWRlICJkaGNwLmgiDQogDQorLyoqDQor ICogZGhjcF9vcHRfdHlwZXMgLSBNYXBzIG9wdGlvbiBjb2RlIHRvIFJGQyAyMTMyIHZhbHVlIHR5 cGUsIGluZGV4ZWQgYnkgY29kZQ0KKyAqLw0KK3N0YXRpYyBjb25zdCBlbnVtIGRoY3Bfb3B0X3R5 cGUgZGhjcF9vcHRfdHlwZXNbMjU2XSA9IHsNCisJWzFdICA9IERIQ1BfT1BUX0lQVjQsCQkvKiBT dWJuZXQgTWFzayAqLw0KKwlbMl0gID0gREhDUF9PUFRfSU5URUdFUiwJLyogVGltZSBPZmZzZXQg Ki8NCisJWzNdICA9IERIQ1BfT1BUX0lQVjRfTElTVCwJLyogUm91dGVyICovDQorCVs0XSAgPSBE SENQX09QVF9JUFY0X0xJU1QsCS8qIFRpbWUgU2VydmVyICovDQorCVs1XSAgPSBESENQX09QVF9J UFY0X0xJU1QsCS8qIE5hbWUgU2VydmVyICovDQorCVs2XSAgPSBESENQX09QVF9JUFY0X0xJU1Qs CS8qIERvbWFpbiBOYW1lIFNlcnZlciAqLw0KKwlbN10gID0gREhDUF9PUFRfSVBWNF9MSVNULAkv KiBMb2cgU2VydmVyICovDQorCVs4XSAgPSBESENQX09QVF9JUFY0X0xJU1QsCS8qIENvb2tpZSBT ZXJ2ZXIgKi8NCisJWzldICA9IERIQ1BfT1BUX0lQVjRfTElTVCwJLyogTFBSIFNlcnZlciAqLw0K KwlbMTBdID0gREhDUF9PUFRfSVBWNF9MSVNULAkvKiBJbXByZXNzIFNlcnZlciAqLw0KKwlbMTFd ID0gREhDUF9PUFRfSVBWNF9MSVNULAkvKiBSZXNvdXJjZSBMb2NhdGlvbiBTZXJ2ZXIgKi8NCisJ WzEyXSA9IERIQ1BfT1BUX1NUUiwJCS8qIEhvc3QgTmFtZSAqLw0KKwlbMTNdID0gREhDUF9PUFRf SU5URUdFUiwJLyogQm9vdCBGaWxlIFNpemUgKi8NCisJWzE1XSA9IERIQ1BfT1BUX1NUUiwJCS8q IERvbWFpbiBOYW1lICovDQorCVsxNl0gPSBESENQX09QVF9JUFY0LAkJLyogU3dhcCBTZXJ2ZXIg Ki8NCisJWzE3XSA9IERIQ1BfT1BUX1NUUiwJCS8qIFJvb3QgUGF0aCAqLw0KKwlbMTldID0gREhD UF9PUFRfSU5URUdFUiwJLyogSVAgRm9yd2FyZGluZyAqLw0KKwlbMjNdID0gREhDUF9PUFRfSU5U RUdFUiwJLyogRGVmYXVsdCBJUCBUVEwgKi8NCisJWzI2XSA9IERIQ1BfT1BUX0lOVEVHRVIsCS8q IEludGVyZmFjZSBNVFUgKi8NCisJWzI4XSA9IERIQ1BfT1BUX0lQVjQsCQkvKiBCcm9hZGNhc3Qg QWRkcmVzcyAqLw0KKwlbMzNdID0gREhDUF9PUFRfSVBWNF9MSVNULAkvKiBTdGF0aWMgUm91dGVz ICovDQorCVszN10gPSBESENQX09QVF9JTlRFR0VSLAkvKiBUQ1AgRGVmYXVsdCBUVEwgKi8NCisJ WzM4XSA9IERIQ1BfT1BUX0lOVEVHRVIsCS8qIFRDUCBLZWVwYWxpdmUgSW50ZXJ2YWwgKi8NCisJ WzQwXSA9IERIQ1BfT1BUX1NUUiwJCS8qIE5JUyBEb21haW4gTmFtZSAqLw0KKwlbNDFdID0gREhD UF9PUFRfSVBWNF9MSVNULAkvKiBOSVMgU2VydmVycyAqLw0KKwlbNDJdID0gREhDUF9PUFRfSVBW NF9MSVNULAkvKiBOVFAgU2VydmVycyAqLw0KKwlbNDRdID0gREhDUF9PUFRfSVBWNF9MSVNULAkv KiBOZXRCSU9TIE5hbWUgU2VydmVyICovDQorCVs1MF0gPSBESENQX09QVF9JUFY0LAkJLyogUmVx dWVzdGVkIElQIEFkZHJlc3MgKi8NCisJWzUxXSA9IERIQ1BfT1BUX0lOVEVHRVIsCS8qIElQIEFk ZHJlc3MgTGVhc2UgVGltZSAqLw0KKwlbNTNdID0gREhDUF9PUFRfSU5URUdFUiwJLyogREhDUCBN ZXNzYWdlIFR5cGUgKi8NCisJWzU0XSA9IERIQ1BfT1BUX0lQVjQsCQkvKiBTZXJ2ZXIgSWRlbnRp ZmllciAqLw0KKwlbNTVdID0gREhDUF9PUFRfU1RSLAkJLyogUGFyYW1ldGVyIFJlcXVlc3QgTGlz dCAqLw0KKwlbNTddID0gREhDUF9PUFRfSU5URUdFUiwJLyogTWF4IERIQ1AgTWVzc2FnZSBTaXpl ICovDQorCVs1OF0gPSBESENQX09QVF9JTlRFR0VSLAkvKiBSZW5ld2FsIChUMSkgVGltZSAqLw0K KwlbNTldID0gREhDUF9PUFRfSU5URUdFUiwJLyogUmViaW5kaW5nIChUMikgVGltZSAqLw0KKwlb NjBdID0gREhDUF9PUFRfU1RSLAkJLyogVmVuZG9yIENsYXNzIElkZW50aWZpZXIgKi8NCisJWzYx XSA9IERIQ1BfT1BUX1NUUiwJCS8qIENsaWVudCBJZGVudGlmaWVyICovDQorCVs2Nl0gPSBESENQ X09QVF9TVFIsCQkvKiBURlRQIFNlcnZlciBOYW1lICovDQorCVs2N10gPSBESENQX09QVF9TVFIs CQkvKiBCb290ZmlsZSBOYW1lICovDQorCVsxMTldID0gREhDUF9PUFRfU1RSLAkJLyogRG9tYWlu IFNlYXJjaCBMaXN0ICovDQorCVsyNTJdID0gREhDUF9PUFRfU1RSLAkJLyogV1BBRCBVUkwgKi8N Cit9Ow0KKw0KKy8qKg0KKyAqIGRoY3Bfb3B0X2ludF93aWR0aCAtIEludGVnZXIgd2lkdGggaW4g Ynl0ZXMgZm9yIElOVEVHRVItdHlwZWQgb3B0aW9ucw0KKyAqLw0KK3N0YXRpYyBjb25zdCB1aW50 OF90IGRoY3Bfb3B0X2ludF93aWR0aFsyNTZdID0gew0KKwlbMl0gID0gNCwJLyogVGltZSBPZmZz ZXQgKi8NCisJWzEzXSA9IDIsCS8qIEJvb3QgRmlsZSBTaXplICovDQorCVsxOV0gPSAxLAkvKiBJ UCBGb3J3YXJkaW5nICovDQorCVsyM10gPSAxLAkvKiBEZWZhdWx0IElQIFRUTCAqLw0KKwlbMjZd ID0gMiwJLyogSW50ZXJmYWNlIE1UVSAqLw0KKwlbMzddID0gMSwJLyogVENQIERlZmF1bHQgVFRM ICovDQorCVszOF0gPSA0LAkvKiBUQ1AgS2VlcGFsaXZlIEludGVydmFsICovDQorCVs1MV0gPSA0 LAkvKiBJUCBBZGRyZXNzIExlYXNlIFRpbWUgKi8NCisJWzUzXSA9IDEsCS8qIERIQ1AgTWVzc2Fn ZSBUeXBlICovDQorCVs1N10gPSAyLAkvKiBNYXggREhDUCBNZXNzYWdlIFNpemUgKi8NCisJWzU4 XSA9IDQsCS8qIFJlbmV3YWwgKFQxKSBUaW1lICovDQorCVs1OV0gPSA0LAkvKiBSZWJpbmRpbmcg KFQyKSBUaW1lICovDQorfTsNCisNCisjZGVmaW5lIERIQ1BfT1BUX1BBUlNFX0JVRgkxMDI0DQor DQorLyoqDQorICogZGhjcF9vcHRfcGFyc2UoKSAtIFBhcnNlIGEgREhDUCBvcHRpb24gdmFsdWUN CisgKiBAY29kZToJREhDUCBvcHRpb24gY29kZQ0KKyAqIEBzdHI6CURIQ1AgVmFsdWUgc3RyaW5n IGZyb20gY29tbWFuZCBsaW5lDQorICogQGJ1ZjoJT3V0cHV0IGJ1ZmZlcg0KKyAqIEBidWZfbGVu OglTaXplIG9mIG91dHB1dCBidWZmZXINCisgKg0KKyAqIFJldHVybjogbnVtYmVyIG9mIGJ5dGVz IHdyaXR0ZW4gdG8gQGJ1Ziwgb3IgLTEgb24gZXJyb3INCisgKi8NCitpbnQgZGhjcF9vcHRfcGFy c2UodWludDhfdCBjb2RlLCBjb25zdCBjaGFyICpzdHIsIHVpbnQ4X3QgKmJ1Ziwgc2l6ZV90IGJ1 Zl9sZW4pDQorew0KKwllbnVtIGRoY3Bfb3B0X3R5cGUgdHlwZSA9IGRoY3Bfb3B0X3R5cGVzW2Nv ZGVdOw0KKwljaGFyIHRtcFtESENQX09QVF9QQVJTRV9CVUZdOw0KKwljaGFyICp0b2ssICpzYXZl cHRyLCAqZW5kOw0KKwlzdHJ1Y3QgaW5fYWRkciBhZGRyOw0KKwl1bnNpZ25lZCBsb25nIHZhbDsN CisJdW5zaWduZWQgaW50IGk7DQorCXVpbnQ4X3Qgd2lkdGg7DQorCXNpemVfdCBzbGVuOw0KKwlp bnQgbGVuOw0KKw0KKwlzd2l0Y2ggKHR5cGUpIHsNCisJY2FzZSBESENQX09QVF9OT05FOg0KKwkJ ZGllKCJVbnN1cHBvcnRlZCBESENQIG9wdGlvbjogJXUsIg0KKwkJICAgICIgc2VlIHBhc3N0KDEp IGZvciBzdXBwb3J0ZWQgY29kZXMiLCBjb2RlKTsNCisJY2FzZSBESENQX09QVF9JUFY0Og0KKwkJ aWYgKGluZXRfcHRvbihBRl9JTkVULCBzdHIsICZhZGRyKSAhPSAxKQ0KKwkJCXJldHVybiAtMTsN CisNCisJCWlmIChidWZfbGVuIDwgc2l6ZW9mKGFkZHIpKQ0KKwkJCXJldHVybiAtMTsNCisNCisJ CW1lbWNweShidWYsICZhZGRyLCBzaXplb2YoYWRkcikpOw0KKw0KKwkJcmV0dXJuIHNpemVvZihh ZGRyKTsNCisJY2FzZSBESENQX09QVF9JUFY0X0xJU1Q6DQorCQlsZW4gPSAwOw0KKw0KKwkJaWYg KHNucHJpbnRmX2NoZWNrKHRtcCwgc2l6ZW9mKHRtcCksICIlcyIsIHN0cikpDQorCQkJcmV0dXJu IC0xOw0KKw0KKwkJZm9yICh0b2sgPSBzdHJ0b2tfcih0bXAsICIsIiwgJnNhdmVwdHIpOyB0b2s7 DQorCQkgICAgIHRvayA9IHN0cnRva19yKE5VTEwsICIsIiwgJnNhdmVwdHIpKSB7DQorCQkJaWYg KGluZXRfcHRvbihBRl9JTkVULCB0b2ssICZhZGRyKSAhPSAxKQ0KKwkJCQlyZXR1cm4gLTE7DQor DQorCQkJaWYgKGxlbiArIChpbnQpc2l6ZW9mKGFkZHIpID4gKGludClidWZfbGVuKQ0KKwkJCQly ZXR1cm4gLTE7DQorDQorCQkJbWVtY3B5KGJ1ZiArIGxlbiwgJmFkZHIsIHNpemVvZihhZGRyKSk7 DQorCQkJbGVuICs9IHNpemVvZihhZGRyKTsNCisJCX0NCisJCXJldHVybiBsZW47DQorCWNhc2Ug REhDUF9PUFRfSU5URUdFUjoNCisJCXdpZHRoID0gZGhjcF9vcHRfaW50X3dpZHRoW2NvZGVdOw0K KwkJdmFsID0gc3RydG91bChzdHIsICZlbmQsIDApOw0KKw0KKwkJaWYgKCplbmQgfHwgYnVmX2xl biA8IHdpZHRoKQ0KKwkJCXJldHVybiAtMTsNCisNCisJCWlmICh3aWR0aCA8IDQgJiYgdmFsID49 ICgxVUwgPDwgKHdpZHRoICogOCkpKQ0KKwkJCXJldHVybiAtMTsNCisNCisJCWZvciAoaSA9IDA7 IGkgPCB3aWR0aDsgaSsrKQ0KKwkJCWJ1ZltpXSA9ICh2YWwgPj4gKCh3aWR0aCAtIDEgLSBpKSAq IDgpKSAmIDB4ZmY7DQorDQorCQlyZXR1cm4gd2lkdGg7DQorCWNhc2UgREhDUF9PUFRfU1RSOg0K KwkJc2xlbiA9IHN0cmxlbihzdHIpOw0KKw0KKwkJaWYgKCFzbGVuIHx8IHNsZW4gPj0gYnVmX2xl bikNCisJCQlyZXR1cm4gLTE7DQorDQorCQlzdHJuY3B5KChjaGFyICopYnVmLCBzdHIsIGJ1Zl9s ZW4pOw0KKw0KKwkJcmV0dXJuIHNsZW47DQorCX0NCisNCisJcmV0dXJuIC0xOw0KK30NCisNCiAv KioNCiAgKiBzdHJ1Y3Qgb3B0IC0gREhDUCBvcHRpb24NCiAgKiBAc2VudDoJQ29udmVuaWVuY2Ug ZmxhZywgc2V0IHdoaWxlIGZpbGxpbmcgcmVwbGllcw0KZGlmZiAtLWdpdCBhL2RoY3AuaCBiL2Ro Y3AuaA0KaW5kZXggY2Q1MGM5OS4uM2RhNTcxYyAxMDA2NDQNCi0tLSBhL2RoY3AuaA0KKysrIGIv ZGhjcC5oDQpAQCAtNiw3ICs2LDI0IEBADQogI2lmbmRlZiBESENQX0gNCiAjZGVmaW5lIERIQ1Bf SA0KIA0KKy8qKg0KKyAqIGVudW0gZGhjcF9vcHRfdHlwZSAtIERIQ1Agb3B0aW9uIHZhbHVlIHR5 cGVzIHBlciBSRkMgMjEzMg0KKyAqIEBESENQX09QVF9OT05FOglVbnN1cHBvcnRlZCBvciB1bmtu b3duIG9wdGlvbg0KKyAqIEBESENQX09QVF9TVFI6CVZhcmlhYmxlLWxlbmd0aCBzdHJpbmcNCisg KiBAREhDUF9PUFRfSVBWNDoJU2luZ2xlIElQdjQgYWRkcmVzcw0KKyAqIEBESENQX09QVF9JUFY0 X0xJU1Q6TXVsdGlwbGUgSVB2NCBhZGRyZXNzZXMsIGNvbW1hLXNlcGFyYXRlZA0KKyAqIEBESENQ X09QVF9JTlRFR0VSOglVbnNpZ25lZCBpbnRlZ2VyICgxLCAyLCBvciA0IGJ5dGVzKQ0KKyAqLw0K K2VudW0gZGhjcF9vcHRfdHlwZSB7DQorCURIQ1BfT1BUX05PTkUsDQorCURIQ1BfT1BUX1NUUiwN CisJREhDUF9PUFRfSVBWNCwNCisJREhDUF9PUFRfSVBWNF9MSVNULA0KKwlESENQX09QVF9JTlRF R0VSLA0KK307DQorDQogaW50IGRoY3AoY29uc3Qgc3RydWN0IGN0eCAqYywgc3RydWN0IGlvdl90 YWlsICpkYXRhKTsNCiB2b2lkIGRoY3BfaW5pdCh2b2lkKTsNCitpbnQgZGhjcF9vcHRfcGFyc2Uo dWludDhfdCBjb2RlLCBjb25zdCBjaGFyICpzdHIsIHVpbnQ4X3QgKmJ1Ziwgc2l6ZV90IGJ1Zl9s ZW4pOw0KIA0KICNlbmRpZiAvKiBESENQX0ggKi8NCmRpZmYgLS1naXQgYS9wYXNzdC5oIGIvcGFz c3QuaA0KaW5kZXggM2EwODE2Zi4uNzUxZmVlMyAxMDA2NDQNCi0tLSBhL3Bhc3N0LmgNCisrKyBi L3Bhc3N0LmgNCkBAIC0xODQsNiArMTg0LDggQEAgc3RydWN0IGlwNl9jdHggew0KICAqIEBmcWRu OgkJR3Vlc3QgRlFETg0KICAqIEBjdXN0b21fb3B0czoJVXNlci1zcGVjaWZpZWQgREhDUCBvcHRp b25zIGZyb20gLS1kaGNwLW9wdA0KICAqIEBjdXN0b21fb3B0cy5jb2RlOglESENQIG9wdGlvbiBj b2RlDQorICogQGN1c3RvbV9vcHRzLmxlbjoJTGVuZ3RoIG9mIGJpbmFyeSB2YWx1ZSBpbiBAdmFs DQorICogQGN1c3RvbV9vcHRzLnZhbDoJQmluYXJ5LWVuY29kZWQgb3B0aW9uIHZhbHVlDQogICog QGN1c3RvbV9vcHRzLnN0cjoJT3JpZ2luYWwgc3RyaW5nIHZhbHVlIGZyb20gY29tbWFuZCBsaW5l DQogICogQGN1c3RvbV9vcHRzX2NvdW50OglOdW1iZXIgb2YgZW50cmllcyBpbiBAY3VzdG9tX29w dHMNCiAgKiBAaWZpNjoJCVRlbXBsYXRlIGludGVyZmFjZSBmb3IgSVB2NiwgLTE6IG5vbmUsIDA6 IElQdjYgZGlzYWJsZWQNCkBAIC0yNzEsNiArMjczLDggQEAgc3RydWN0IGN0eCB7DQogDQogCXN0 cnVjdCB7DQogCQl1aW50OF90IGNvZGU7DQorCQl1aW50OF90IGxlbjsNCisJCXVpbnQ4X3QgdmFs WzI1NV07DQogCQljaGFyIHN0clsyNTZdOw0KIAl9IGN1c3RvbV9vcHRzW01BWF9DVVNUT01fREhD UF9PUFRTXTsNCiAJaW50IGN1c3RvbV9vcHRzX2NvdW50Ow0KLS0gDQoyLjU0LjANCg0K