From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-eopbgr80051.outbound.protection.outlook.com [40.107.8.51]) by dpdk.org (Postfix) with ESMTP id 947A0F11 for ; Thu, 6 Sep 2018 00:13:30 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector1-arm-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6zdFLjJgV7a88vQIzJKsIKurUAeTrHukdqT8iPjLKuA=; b=VyVKQQYoHyEKM4D3gT/Ok30a62h2i8c+aGHKift6IFoVhNlJSZvIJ11vaMecCYmwwd6t7bTjeoDN3DLCWVAt1tbIIM3NoaGsgfGxACDdXTM6zr3t8vyKToLF8l2VqZ47YBSZOIyMS6trtJ+oyRJwXsdhYrByiK/+YRNfMtiH7vA= Received: from AM6PR08MB3672.eurprd08.prod.outlook.com (20.177.115.29) by AM6PR08MB3462.eurprd08.prod.outlook.com (20.177.113.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1080.17; Wed, 5 Sep 2018 22:13:29 +0000 Received: from AM6PR08MB3672.eurprd08.prod.outlook.com ([fe80::649b:b10d:ef69:7fd2]) by AM6PR08MB3672.eurprd08.prod.outlook.com ([fe80::649b:b10d:ef69:7fd2%4]) with mapi id 15.20.1080.020; Wed, 5 Sep 2018 22:13:29 +0000 From: Honnappa Nagarahalli To: Michel Machado , Qiaobin Fu , "bruce.richardson@intel.com" , "pablo.de.lara.guarch@intel.com" CC: "dev@dpdk.org" , "doucette@bu.edu" , "keith.wiles@intel.com" , "sameh.gobriel@intel.com" , "charlie.tai@intel.com" , "stephen@networkplumber.org" , nd , "yipeng1.wang@intel.com" Thread-Topic: [PATCH v3] hash table: add an iterator over conflicting entries Thread-Index: AQHUQUrktx3ADshLHUm/2g6PS6B8FKTdbJBQgAMeHgCAAbOIcA== Date: Wed, 5 Sep 2018 22:13:29 +0000 Message-ID: References: <20180831165101.20026-1-qiaobinf@bu.edu> <8ff2d6be-df5b-51cb-95e9-f227127b7d45@digirati.com.br> In-Reply-To: <8ff2d6be-df5b-51cb-95e9-f227127b7d45@digirati.com.br> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Honnappa.Nagarahalli@arm.com; x-originating-ip: [217.140.111.135] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; AM6PR08MB3462; 6:3wGDFwf2xeAgEyuC+trc7FUZNREmxO3AeeFRQ+SRBcjloKbai3QbpJduMcCNgoK696qG89Jkypr5GNBORKz5uniWp9RtTaVCpagJrK4bPe2b1fisnLbQqi/SGM/WT7TpOQk97RYIZYna0DbuJhdbJhqTm7yXfOuheayQfoSQKdnnlDWj2F2zUuxFsdnLNuDvzED4RlE28jFM1dQtN9/6rjaXZZzagxbdRNqCeZrDJ3VIN2ltxWvv2XfdcqVmtsk042Hekn2wc9ovI5ACucndAnhMIoPhk++5XcT0sQQF36srFJnldNUKv6ufhFW6fVHa38UW7WMQ5AL7jwb3lgAqguByquFcqUMTVz6ZU52ziw4xtnBPdrYi56xNVe8kN6cDLE6Y8qQiD3JxGVzbqGBVKQW/lAHgg4+w8whQqWVndAf26yWc3DEx4F2n1Nq9aMrrDKcVyZMFsmP4RB07uf8HFQ==; 5:03B6kCVP92m9grewGGXH+sY9ipIPb+QLltqYvw2g1icQ1GSrm3i3utr9xDis4nKqeyNTDDYWwAimNVYcm16EMtHu8zOqTP805qX/KG9vK8OChObn5jUfII2JxA4cfn/N5L6Yp7TarWOzn9S7Uoje6GsoaoUTL4ZIeqzva+u7Muw=; 7:OMIcl42R6fMDAc1+oYgJbrUfeSC/5pTXjnnAnXJBRgf0OoiHRSNnA3QJS+tKsxePAEIsI28puSDSywEIkMGcJ2uiNVsAUsJ9M3RWHtW06m7S2iWOP0iA8/dsRRSwAMPzfz7TW9pqUGWpUZwyUNxQ3yq2T8i/GjXK4d7HqXZ5glh+qYITyHutyHk8PeMzmT6wGHoha3Q/FBJj5HbFmxyu7GjfT4QMjlathqbTrffKvEK4vjEvvrdDXHNniFU4NsEj x-ms-exchange-antispam-srfa-diagnostics: SOS; x-ms-office365-filtering-correlation-id: c5521237-ca59-40af-4700-08d6137ccf42 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989137)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:AM6PR08MB3462; x-ms-traffictypediagnostic: AM6PR08MB3462: nodisclaimer: True x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(180628864354917)(278428928389397)(238701278423138)(166494164430575)(228905959029699)(17755550239193); x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(823301075)(93006095)(93001095)(3231311)(944501410)(52105095)(10201501046)(3002001)(6055026)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123562045)(20161123558120)(20161123564045)(201708071742011)(7699016); SRVR:AM6PR08MB3462; BCL:0; PCL:0; RULEID:; SRVR:AM6PR08MB3462; x-forefront-prvs: 078693968A x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(366004)(136003)(376002)(346002)(39860400002)(396003)(199004)(189003)(13464003)(345774005)(26005)(81156014)(81166006)(478600001)(8676002)(105586002)(53546011)(102836004)(6436002)(186003)(106356001)(446003)(86362001)(68736007)(5250100002)(7696005)(14454004)(53936002)(476003)(11346002)(229853002)(316002)(72206003)(486006)(2201001)(2906002)(99286004)(2501003)(966005)(14444005)(256004)(7416002)(6116002)(5660300001)(2900100001)(4326008)(6246003)(66066001)(97736004)(76176011)(3846002)(8936002)(6306002)(110136005)(25786009)(7736002)(54906003)(9686003)(305945005)(33656002)(74316002)(2171002)(55016002)(6506007); DIR:OUT; SFP:1101; SCL:1; SRVR:AM6PR08MB3462; H:AM6PR08MB3672.eurprd08.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: PgLuEX6HsS0mdhRuo65BfEPyUqWXZ3FCLc645kHjx6zcqh8jvujJwsMFQNGviqyEpppYG4VBDGlPWBFwp+vGYdUXqDjo7Mly2aLnHBVr811xFWrgSjdsdQl0CV+NnWhB6Y4zU1Q7Q7bnCyIXu57WdXwWSz1NgRyF71UJudOLdd77yvnujAikrGuYc9WXpEqWixnINh3JQjKnE2RX3R1SRjqMEAjjehWqZQijAlHaj6MTIKGSONfy0wY9JzLPY7y334UeBtclbNApzR6q+iZXQbcNKUpxVaC6NUJHQ7CyiRZ+vy46QVdwO+JT2T86D2KbZcviQk2zoo3qRMNnTB238TYOguxMPptclkyZZo9OoLs= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-Network-Message-Id: c5521237-ca59-40af-4700-08d6137ccf42 X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Sep 2018 22:13:29.1892 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB3462 Subject: Re: [dpdk-dev] [PATCH v3] hash table: add an iterator over conflicting entries X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 05 Sep 2018 22:13:30 -0000 DQoNCi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQpGcm9tOiBNaWNoZWwgTWFjaGFkbyA8bWlj aGVsQGRpZ2lyYXRpLmNvbS5icj4gDQpTZW50OiBUdWVzZGF5LCBTZXB0ZW1iZXIgNCwgMjAxOCAy OjM3IFBNDQpUbzogSG9ubmFwcGEgTmFnYXJhaGFsbGkgPEhvbm5hcHBhLk5hZ2FyYWhhbGxpQGFy bS5jb20+OyBRaWFvYmluIEZ1IDxxaWFvYmluZkBidS5lZHU+OyBicnVjZS5yaWNoYXJkc29uQGlu dGVsLmNvbTsgcGFibG8uZGUubGFyYS5ndWFyY2hAaW50ZWwuY29tDQpDYzogZGV2QGRwZGsub3Jn OyBkb3VjZXR0ZUBidS5lZHU7IGtlaXRoLndpbGVzQGludGVsLmNvbTsgc2FtZWguZ29icmllbEBp bnRlbC5jb207IGNoYXJsaWUudGFpQGludGVsLmNvbTsgc3RlcGhlbkBuZXR3b3JrcGx1bWJlci5v cmc7IG5kIDxuZEBhcm0uY29tPjsgeWlwZW5nMS53YW5nQGludGVsLmNvbQ0KU3ViamVjdDogUmU6 IFtQQVRDSCB2M10gaGFzaCB0YWJsZTogYWRkIGFuIGl0ZXJhdG9yIG92ZXIgY29uZmxpY3Rpbmcg ZW50cmllcw0KDQpIaSBIb25uYXBwYSwNCg0KT24gMDkvMDIvMjAxOCAwNjowNSBQTSwgSG9ubmFw cGEgTmFnYXJhaGFsbGkgd3JvdGU6DQo+ICsvKiBpc3RhdGUgc3RhbmRzIGZvciBpbnRlcm5hbCBz dGF0ZS4gKi8gc3RydWN0IA0KPiArcnRlX2hhc2hfaXRlcmF0b3JfaXN0YXRlIHsNCj4gKwljb25z dCBzdHJ1Y3QgcnRlX2hhc2ggKmg7DQo+IFRoaXMgY2FuIGJlIG91dHNpZGUgb2YgdGhpcyBzdHJ1 Y3R1cmUuIFRoaXMgd2lsbCBoZWxwIGtlZXAgdGhlIEFQSSBkZWZpbml0aW9ucyBjb25zaXN0ZW50 IHdpdGggZXhpc3RpbmcgQVBJcy4gUGxlYXNlIHNlZSBmdXJ0aGVyIGNvbW1lbnRzIGJlbG93Lg0K DQogICAgRGlzY3Vzc2VkIGxhdGVyLg0KDQo+ICsJdWludDMyX3QgICAgICAgICAgICAgIG5leHQ7 DQo+ICsJdWludDMyX3QgICAgICAgICAgICAgIHRvdGFsX2VudHJpZXM7DQo+ICt9Ow0KPiBUaGlz IHN0cnVjdHVyZSBjYW4gYmUgbW92ZWQgdG8gcnRlX2N1Y2tvb19oYXNoLmggZmlsZS4NCg0KICAg IFdoYXQncyB0aGUgcHVycG9zZSBvZiBtb3ZpbmcgdGhpcyBzdHJ1Y3QgdG8gYSBoZWFkZXIgZmls ZSBzaW5jZSBpdCdzIG9ubHkgdXNlZCBpbiB0aGUgQyBmaWxlIHJ0ZV9jdWNrb29faGFzaC5jPw0K DQpUaGlzIGlzIHRvIG1haW50YWluIGNvbnNpc3RlbmN5LiBGb3IgZXg6ICdzdHJ1Y3QgcXVldWVf bm9kZScsIHdoaWNoIGlzIGFuIGludGVybmFsIHN0cnVjdHVyZSwgaXMga2VwdCBpbiBydGVfY3Vj a29vX2hhc2guaA0KDQo+ICtpbnQzMl90DQo+ICtydGVfaGFzaF9pdGVyYXRvcl9pbml0KGNvbnN0 IHN0cnVjdCBydGVfaGFzaCAqaCwNCj4gKwlzdHJ1Y3QgcnRlX2hhc2hfaXRlcmF0b3Jfc3RhdGUg KnN0YXRlKSB7DQo+ICsJc3RydWN0IHJ0ZV9oYXNoX2l0ZXJhdG9yX2lzdGF0ZSAqX19zdGF0ZTsN Cj4gJ19fc3RhdGUnIGNhbiBiZSByZXBsYWNlZCBieSAncycuDQo+IA0KPiArDQo+ICsJUkVUVVJO X0lGX1RSVUUoKChoID09IE5VTEwpIHx8IChzdGF0ZSA9PSBOVUxMKSksIC1FSU5WQUwpOw0KPiAr DQo+ICsJX19zdGF0ZSA9IChzdHJ1Y3QgcnRlX2hhc2hfaXRlcmF0b3JfaXN0YXRlICopc3RhdGU7 DQo+ICsJX19zdGF0ZS0+aCA9IGg7DQo+ICsJX19zdGF0ZS0+bmV4dCA9IDA7DQo+ICsJX19zdGF0 ZS0+dG90YWxfZW50cmllcyA9IGgtPm51bV9idWNrZXRzICogUlRFX0hBU0hfQlVDS0VUX0VOVFJJ RVM7DQo+ICsNCj4gKwlyZXR1cm4gMDsNCj4gK30NCj4gSU1PLCBjcmVhdGluZyB0aGlzIEFQSSBj YW4gYmUgYXZvaWRlZCBpZiB0aGUgaW5pdGlhbGl6YXRpb24gaXMgaGFuZGxlZCBpbiAncnRlX2hh c2hfaXRlcmF0ZScgZnVuY3Rpb24uIFRoZSBjb3N0IG9mIGRvaW5nIHRoaXMgaXMgdmVyeSB0cml2 aWFsIChvbmUgZXh0cmEgJ2lmJyBzdGF0ZW1lbnQpIGluICdydGVfaGFzaF9pdGVyYXRlJyBmdW5j dGlvbi4gSXQgd2lsbCBoZWxwIGtlZXAgdGhlIG51bWJlciBvZiBBUElzIHRvIG1pbmltYWwuDQoN CiAgICBBcHBsaWNhdGlvbnMgd291bGQgaGF2ZSB0byBpbml0aWFsaXplIHN0cnVjdCBydGVfaGFz aF9pdGVyYXRvcl9zdGF0ZSAqc3RhdGUgYmVmb3JlIGNhbGxpbmcgcnRlX2hhc2hfaXRlcmF0ZSgp IGFueXdheS4gV2h5IG5vdCBpbml0aWFsaXppbmcgdGhlIGZpZWxkcyBvZiBhIHN0YXRlIG9ubHkg b25jZT8NCg0KTXkgY29uY2VybiBpcyBhYm91dCBjcmVhdGluZyBhbm90aGVyIEFQSSBmb3IgZXZl cnkgaXRlcmF0b3IgQVBJLiBZb3UgaGF2ZSBhIHZhbGlkIHBvaW50IG9uIHNhdmluZyBjeWNsZXMg YXMgdGhpcyBBUEkgYXBwbGllcyBmb3IgZGF0YSBwbGFuZS4gSGF2ZSB5b3UgZG9uZSBhbnkgcGVy Zm9ybWFuY2UgYmVuY2htYXJraW5nIHdpdGggYW5kIHdpdGhvdXQgdGhpcyBBUEk/IE1heSBiZSB3 ZSBjYW4gZ3VpZGUgb3VyIGRlY2lzaW9uIGJhc2VkIG9uIHRoYXQuDQoNCj4gICBpbnQzMl90DQo+ IC1ydGVfaGFzaF9pdGVyYXRlKGNvbnN0IHN0cnVjdCBydGVfaGFzaCAqaCwgY29uc3Qgdm9pZCAq KmtleSwgdm9pZCANCj4gKipkYXRhLCB1aW50MzJfdCAqbmV4dCkNCj4gK3J0ZV9oYXNoX2l0ZXJh dGUoDQo+ICsJc3RydWN0IHJ0ZV9oYXNoX2l0ZXJhdG9yX3N0YXRlICpzdGF0ZSwgY29uc3Qgdm9p ZCAqKmtleSwgdm9pZCANCj4gKyoqZGF0YSkNCj4gDQo+IElNTywgYXMgc3VnZ2VzdGVkIGFib3Zl LCBkbyBub3Qgc3RvcmUgJ3N0cnVjdCBydGVfaGFzaCAqaCcgaW4gJ3N0cnVjdCBydGVfaGFzaF9p dGVyYXRvcl9zdGF0ZScuIEluc3RlYWQsIGNoYW5nZSB0aGUgQVBJIGRlZmluaXRpb24gYXMgZm9s bG93czoNCj4gcnRlX2hhc2hfaXRlcmF0ZShjb25zdCBzdHJ1Y3QgcnRlX2hhc2ggKmgsIGNvbnN0 IHZvaWQgKiprZXksIHZvaWQgDQo+ICoqZGF0YSwgc3RydWN0IHJ0ZV9oYXNoX2l0ZXJhdG9yX3N0 YXRlICpzdGF0ZSkNCj4gDQo+IFRoaXMgd2lsbCBoZWxwIGtlZXAgdGhlIEFQSSBzaWduYXR1cmUg Y29uc2lzdGVudCB3aXRoIGV4aXN0aW5nIEFQSXMuDQo+IA0KPiBUaGlzIGlzIGFuIEFCSSBjaGFu Z2UuIFBsZWFzZSB0YWtlIGEgbG9vayBhdCBodHRwczovL2RvYy5kcGRrLm9yZy9ndWlkZXMvY29u dHJpYnV0aW5nL3ZlcnNpb25pbmcuaHRtbC4NCg0KICAgIFRoZSBBQkkgd2lsbCBjaGFuZ2UgaW4g YSB3YXkgb3IgYW5vdGhlciwgc28gd2h5IG5vdCBnb2luZyBmb3IgYSBzaW5nbGUgc3RhdGUgaW5z dGVhZCBvZiByZXF1aXJpbmcgcGFyYW1ldGVycyB0aGF0IGFyZSBhbHJlYWR5IG5lZWRlZCBmb3Ig dGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBzdGF0ZT8NCg0KQXJlIHRoZXJlIGFueSBjb3N0IHNh dmluZ3Mgd2UgY2FuIGFjaGlldmUgYnkga2VlcGluZyB0aGUgJ2gnIGluIHRoZSBpdGVyYXRvciBz dGF0ZT8NCg0KICAgIFRoYW5rIHlvdSBmb3IgdGhlIGxpbmsuIFdlJ2xsIGNoZWNrIGhvdyB0byBw cm9jZWVkIHdpdGggdGhlIEFCSSBjaGFuZ2UuDQoNCj4gICB7DQo+ICsJc3RydWN0IHJ0ZV9oYXNo X2l0ZXJhdG9yX2lzdGF0ZSAqX19zdGF0ZTsNCj4gJ19fc3RhdGUnIGNhbiBiZSByZXBsYWNlZCB3 aXRoICdzJy4NCg0KICAgIEdhw6t0YW4gUml2ZXQgaGFzIGFscmVhZHkgcG9pbnRlZCB0aGlzIG91 dCBpbiBoaXMgcmV2aWV3IG9mIHRoaXMgdmVyc2lvbiBvZiBvdXIgcGF0Y2guDQoNCj4gICAJdWlu dDMyX3QgYnVja2V0X2lkeCwgaWR4LCBwb3NpdGlvbjsNCj4gICAJc3RydWN0IHJ0ZV9oYXNoX2tl eSAqbmV4dF9rZXk7DQo+ICAgDQo+IC0JUkVUVVJOX0lGX1RSVUUoKChoID09IE5VTEwpIHx8IChu ZXh0ID09IE5VTEwpKSwgLUVJTlZBTCk7DQo+ICsJUkVUVVJOX0lGX1RSVUUoKChzdGF0ZSA9PSBO VUxMKSB8fCAoa2V5ID09IE5VTEwpIHx8DQo+ICsJCShkYXRhID09IE5VTEwpKSwgLUVJTlZBTCk7 DQo+ICsNCj4gKwlfX3N0YXRlID0gKHN0cnVjdCBydGVfaGFzaF9pdGVyYXRvcl9pc3RhdGUgKilz dGF0ZTsNCj4gICANCj4gLQljb25zdCB1aW50MzJfdCB0b3RhbF9lbnRyaWVzID0gaC0+bnVtX2J1 Y2tldHMgKiBSVEVfSEFTSF9CVUNLRVRfRU5UUklFUzsNCj4gICAJLyogT3V0IG9mIGJvdW5kcyAq Lw0KPiAtCWlmICgqbmV4dCA+PSB0b3RhbF9lbnRyaWVzKQ0KPiArCWlmIChfX3N0YXRlLT5uZXh0 ID49IF9fc3RhdGUtPnRvdGFsX2VudHJpZXMpDQo+ICAgCQlyZXR1cm4gLUVOT0VOVDsNCj4gICAN Cj4gJ2lmIChfX3N0YXRlLT5uZXh0ID09IDApJyBpcyByZXF1aXJlZCB0byBhdm9pZCBjcmVhdGlu ZyAncnRlX2hhc2hfaXRlcmF0b3JfaW5pdCcgQVBJLg0KDQogICAgVGhlIGFyZ3VtZW50IHRvIGtl ZXAgX2luaXQoKSBpcyBwcmVzZW50ZWQgYWJvdmUgaW4gdGhpcyBlbWFpbC4NCg0KPiAgIAkvKiBD YWxjdWxhdGUgYnVja2V0IGFuZCBpbmRleCBvZiBjdXJyZW50IGl0ZXJhdG9yICovDQo+IC0JYnVj a2V0X2lkeCA9ICpuZXh0IC8gUlRFX0hBU0hfQlVDS0VUX0VOVFJJRVM7DQo+IC0JaWR4ID0gKm5l eHQgJSBSVEVfSEFTSF9CVUNLRVRfRU5UUklFUzsNCj4gKwlidWNrZXRfaWR4ID0gX19zdGF0ZS0+ bmV4dCAvIFJURV9IQVNIX0JVQ0tFVF9FTlRSSUVTOw0KPiArCWlkeCA9IF9fc3RhdGUtPm5leHQg JSBSVEVfSEFTSF9CVUNLRVRfRU5UUklFUzsNCj4gICANCj4gICAJLyogSWYgY3VycmVudCBwb3Np dGlvbiBpcyBlbXB0eSwgZ28gdG8gdGhlIG5leHQgb25lICovDQo+IC0Jd2hpbGUgKGgtPmJ1Y2tl dHNbYnVja2V0X2lkeF0ua2V5X2lkeFtpZHhdID09IEVNUFRZX1NMT1QpIHsNCj4gLQkJKCpuZXh0 KSsrOw0KPiArCXdoaWxlIChfX3N0YXRlLT5oLT5idWNrZXRzW2J1Y2tldF9pZHhdLmtleV9pZHhb aWR4XSA9PSBFTVBUWV9TTE9UKSB7DQo+ICsJCV9fc3RhdGUtPm5leHQrKzsNCj4gICAJCS8qIEVu ZCBvZiB0YWJsZSAqLw0KPiAtCQlpZiAoKm5leHQgPT0gdG90YWxfZW50cmllcykNCj4gKwkJaWYg KF9fc3RhdGUtPm5leHQgPT0gX19zdGF0ZS0+dG90YWxfZW50cmllcykNCj4gICAJCQlyZXR1cm4g LUVOT0VOVDsNCj4gLQkJYnVja2V0X2lkeCA9ICpuZXh0IC8gUlRFX0hBU0hfQlVDS0VUX0VOVFJJ RVM7DQo+IC0JCWlkeCA9ICpuZXh0ICUgUlRFX0hBU0hfQlVDS0VUX0VOVFJJRVM7DQo+ICsJCWJ1 Y2tldF9pZHggPSBfX3N0YXRlLT5uZXh0IC8gUlRFX0hBU0hfQlVDS0VUX0VOVFJJRVM7DQo+ICsJ CWlkeCA9IF9fc3RhdGUtPm5leHQgJSBSVEVfSEFTSF9CVUNLRVRfRU5UUklFUzsNCj4gICAJfQ0K PiAtCV9faGFzaF9yd19yZWFkZXJfbG9jayhoKTsNCj4gKwlfX2hhc2hfcndfcmVhZGVyX2xvY2so X19zdGF0ZS0+aCk7DQo+ICAgCS8qIEdldCBwb3NpdGlvbiBvZiBlbnRyeSBpbiBrZXkgdGFibGUg Ki8NCj4gLQlwb3NpdGlvbiA9IGgtPmJ1Y2tldHNbYnVja2V0X2lkeF0ua2V5X2lkeFtpZHhdOw0K PiAtCW5leHRfa2V5ID0gKHN0cnVjdCBydGVfaGFzaF9rZXkgKikgKChjaGFyICopaC0+a2V5X3N0 b3JlICsNCj4gLQkJCQlwb3NpdGlvbiAqIGgtPmtleV9lbnRyeV9zaXplKTsNCj4gKwlwb3NpdGlv biA9IF9fc3RhdGUtPmgtPmJ1Y2tldHNbYnVja2V0X2lkeF0ua2V5X2lkeFtpZHhdOw0KPiArCW5l eHRfa2V5ID0gKHN0cnVjdCBydGVfaGFzaF9rZXkgKikgKChjaGFyICopX19zdGF0ZS0+aC0+a2V5 X3N0b3JlICsNCj4gKwkJCQlwb3NpdGlvbiAqIF9fc3RhdGUtPmgtPmtleV9lbnRyeV9zaXplKTsN Cj4gICAJLyogUmV0dXJuIGtleSBhbmQgZGF0YSAqLw0KPiAgIAkqa2V5ID0gbmV4dF9rZXktPmtl eTsNCj4gICAJKmRhdGEgPSBuZXh0X2tleS0+cGRhdGE7DQo+ICAgDQo+IC0JX19oYXNoX3J3X3Jl YWRlcl91bmxvY2soaCk7DQo+ICsJX19oYXNoX3J3X3JlYWRlcl91bmxvY2soX19zdGF0ZS0+aCk7 DQo+ICAgDQo+ICAgCS8qIEluY3JlbWVudCBpdGVyYXRvciAqLw0KPiAtCSgqbmV4dCkrKzsNCj4g KwlfX3N0YXRlLT5uZXh0Kys7DQo+IFRoaXMgY29tbWVudCBpcyBub3QgcmVsYXRlZCB0byB0aGlz IGNoYW5nZSwgaXQgaXMgYmV0dGVyIHRvIHBsYWNlIHRoaXMgaW5zaWRlIHRoZSBsb2NrLg0KDQog ICAgRXZlbiB0aG91Z2ggX19zdGF0ZS0+bmV4dCBkb2VzIG5vdCBkZXBlbmQgb24gdGhlIGxvY2s/ DQoNCkl0IGRlcGVuZHMgb24gaWYgdGhpcyBBUEkgbmVlZHMgdG8gYmUgbXVsdGktdGhyZWFkIHNh ZmUuIEludGVyZXN0aW5nbHksIHRoZSBkb2N1bWVudGF0aW9uIGRvZXMgbm90IHNheSBpdCBpcyBt dWx0aS10aHJlYWQgc2FmZS4gSWYgaXQgaGFzIHRvIGJlIG11bHRpLXRocmVhZCBzYWZlLCB0aGVu IHRoZSBzdGF0ZSBhbHNvIG5lZWRzIHRvIGJlIHByb3RlY3RlZC4gRm9yIGV4OiB3aGF0IGhhcHBl bnMgaWYgdGhlIHVzZXIgdXNlcyBhIGdsb2JhbCB2YXJpYWJsZSBmb3IgdGhlIHN0YXRlPw0KDQo+ ICAgCXJldHVybiBwb3NpdGlvbiAtIDE7DQo+ICAgfQ0KPiArDQo+ICsvKiBpc3RhdGUgc3RhbmRz IGZvciBpbnRlcm5hbCBzdGF0ZS4gKi8gc3RydWN0IA0KPiArcnRlX2hhc2hfaXRlcmF0b3JfY29u ZmxpY3RfZW50cmllc19pc3RhdGUgew0KPiArCWNvbnN0IHN0cnVjdCBydGVfaGFzaCAqaDsNCj4g VGhpcyBjYW4gYmUgbW92ZWQgb3V0c2lkZSBvZiB0aGlzIHN0cnVjdHVyZS4NCg0KICAgIERpc2N1 c3NlZCBlYXJsaWVyLg0KDQo+ICsJdWludDMyX3QgICAgICAgICAgICAgIHZuZXh0Ow0KPiArCXVp bnQzMl90ICAgICAgICAgICAgICBwcmltYXJ5X2JpZHg7DQo+ICsJdWludDMyX3QgICAgICAgICAg ICAgIHNlY29uZGFyeV9iaWR4Ow0KPiArfTsNCj4gKw0KPiAraW50MzJfdCBfX3J0ZV9leHBlcmlt ZW50YWwNCj4gK3J0ZV9oYXNoX2l0ZXJhdG9yX2NvbmZsaWN0X2VudHJpZXNfaW5pdF93aXRoX2hh c2goY29uc3Qgc3RydWN0IHJ0ZV9oYXNoICpoLA0KPiArCWhhc2hfc2lnX3Qgc2lnLCBzdHJ1Y3Qg cnRlX2hhc2hfaXRlcmF0b3Jfc3RhdGUgKnN0YXRlKSB7DQo+ICsJc3RydWN0IHJ0ZV9oYXNoX2l0 ZXJhdG9yX2NvbmZsaWN0X2VudHJpZXNfaXN0YXRlICpfX3N0YXRlOw0KPiArDQo+ICsJUkVUVVJO X0lGX1RSVUUoKChoID09IE5VTEwpIHx8IChzdGF0ZSA9PSBOVUxMKSksIC1FSU5WQUwpOw0KPiAr DQo+ICsJX19zdGF0ZSA9IChzdHJ1Y3QgcnRlX2hhc2hfaXRlcmF0b3JfY29uZmxpY3RfZW50cmll c19pc3RhdGUgKilzdGF0ZTsNCj4gKwlfX3N0YXRlLT5oID0gaDsNCj4gKwlfX3N0YXRlLT52bmV4 dCA9IDA7DQo+ICsNCj4gKwkvKiBHZXQgdGhlIHByaW1hcnkgYnVja2V0IGluZGV4IGdpdmVuIHRo ZSBwcmVjb21wdXRlZCBoYXNoIHZhbHVlLiAqLw0KPiArCV9fc3RhdGUtPnByaW1hcnlfYmlkeCA9 IHNpZyAmIGgtPmJ1Y2tldF9iaXRtYXNrOw0KPiArCS8qIEdldCB0aGUgc2Vjb25kYXJ5IGJ1Y2tl dCBpbmRleCBnaXZlbiB0aGUgcHJlY29tcHV0ZWQgaGFzaCB2YWx1ZS4gKi8NCj4gKwlfX3N0YXRl LT5zZWNvbmRhcnlfYmlkeCA9DQo+ICsJCXJ0ZV9oYXNoX3NlY29uZGFyeV9oYXNoKHNpZykgJiBo LT5idWNrZXRfYml0bWFzazsNCj4gKw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiBJTU8sIGFzIG1l bnRpb25lZCBhYm92ZSwgaXQgaXMgcG9zc2libGUgdG8gYXZvaWQgY3JlYXRpbmcgdGhpcyBBUEku DQoNCiAgICBEaXNjdXNzZWQgZWFybGllci4NCg0KPiArDQo+ICtpbnQzMl90IF9fcnRlX2V4cGVy aW1lbnRhbA0KPiArcnRlX2hhc2hfaXRlcmF0ZV9jb25mbGljdF9lbnRyaWVzKA0KPiArCXN0cnVj dCBydGVfaGFzaF9pdGVyYXRvcl9zdGF0ZSAqc3RhdGUsIGNvbnN0IHZvaWQgKiprZXksIHZvaWQg DQo+ICsqKmRhdGEpDQo+IFNpZ25hdHVyZSBvZiB0aGlzIEFQSSBjYW4gYmUgY2hhbmdlZCBhcyBm b2xsb3dzOg0KPiBydGVfaGFzaF9pdGVyYXRlX2NvbmZsaWN0X2VudHJpZXMoDQo+IAlzdHJ1Y3Qg cnRlX2hhc2ggKmgsIGNvbnN0IHZvaWQgKiprZXksIHZvaWQgKipkYXRhLCBzdHJ1Y3QgDQo+IHJ0 ZV9oYXNoX2l0ZXJhdG9yX3N0YXRlICpzdGF0ZSkNCg0KICAgIERpc2N1c3NlZCBlYXJsaWVyLg0K DQo+ICt7DQo+ICsJc3RydWN0IHJ0ZV9oYXNoX2l0ZXJhdG9yX2NvbmZsaWN0X2VudHJpZXNfaXN0 YXRlICpfX3N0YXRlOw0KPiArDQo+ICsJUkVUVVJOX0lGX1RSVUUoKChzdGF0ZSA9PSBOVUxMKSB8 fCAoa2V5ID09IE5VTEwpIHx8DQo+ICsJCShkYXRhID09IE5VTEwpKSwgLUVJTlZBTCk7DQo+ICsN Cj4gKwlfX3N0YXRlID0gKHN0cnVjdCBydGVfaGFzaF9pdGVyYXRvcl9jb25mbGljdF9lbnRyaWVz X2lzdGF0ZSAqKXN0YXRlOw0KPiArDQo+ICsJd2hpbGUgKF9fc3RhdGUtPnZuZXh0IDwgUlRFX0hB U0hfQlVDS0VUX0VOVFJJRVMgKiAyKSB7DQo+ICsJCXVpbnQzMl90IGJpZHggPSBfX3N0YXRlLT52 bmV4dCA8IFJURV9IQVNIX0JVQ0tFVF9FTlRSSUVTID8NCj4gKwkJCV9fc3RhdGUtPnByaW1hcnlf YmlkeCA6IF9fc3RhdGUtPnNlY29uZGFyeV9iaWR4Ow0KPiArCQl1aW50MzJfdCBuZXh0ID0gX19z dGF0ZS0+dm5leHQgJiAoUlRFX0hBU0hfQlVDS0VUX0VOVFJJRVMgLSAxKTsNCj4gDQo+IHRha2Ug dGhlIHJlYWRlciBsb2NrIGJlZm9yZSByZWFkaW5nIGJ1Y2tldCBlbnRyeQ0KDQogICAgVGhhbmtz IGZvciBwb2ludGluZyB0aGlzIG91dC4gV2UgYXJlIGdvaW5nIHRvIGRvIHNvLiBUaGUgbG9jayBj YW1lIGluIGFzIHdlIGdvIHRocm91Z2ggdGhlIHZlcnNpb25zIG9mIHRoaXMgcGF0Y2guDQoNCj4g KwkJdWludDMyX3QgcG9zaXRpb24gPSBfX3N0YXRlLT5oLT5idWNrZXRzW2JpZHhdLmtleV9pZHhb bmV4dF07DQo+ICsJCXN0cnVjdCBydGVfaGFzaF9rZXkgKm5leHRfa2V5Ow0KPiArDQo+ICsJCS8q IEluY3JlbWVudCBpdGVyYXRvci4gKi8NCj4gKwkJX19zdGF0ZS0+dm5leHQrKzsNCj4gKw0KPiAr CQkvKg0KPiArCQkgKiBUaGUgdGVzdCBiZWxvdyBpcyB1bmxpa2VseSBiZWNhdXNlIHRoaXMgaXRl cmF0b3IgaXMgbWVhbnQNCj4gKwkJICogdG8gYmUgdXNlZCBhZnRlciBhIGZhaWxlZCBpbnNlcnQu DQo+ICsJCSAqLw0KPiArCQlpZiAodW5saWtlbHkocG9zaXRpb24gPT0gRU1QVFlfU0xPVCkpDQo+ ICsJCQljb250aW51ZTsNCj4gKw0KPiArCQkvKiBHZXQgdGhlIGVudHJ5IGluIGtleSB0YWJsZS4g Ki8NCj4gKwkJbmV4dF9rZXkgPSAoc3RydWN0IHJ0ZV9oYXNoX2tleSAqKSAoDQo+ICsJCQkoY2hh ciAqKV9fc3RhdGUtPmgtPmtleV9zdG9yZSArDQo+ICsJCQlwb3NpdGlvbiAqIF9fc3RhdGUtPmgt PmtleV9lbnRyeV9zaXplKTsNCj4gKwkJLyogUmV0dXJuIGtleSBhbmQgZGF0YS4gKi8NCj4gKwkJ KmtleSA9IG5leHRfa2V5LT5rZXk7DQo+ICsJCSpkYXRhID0gbmV4dF9rZXktPnBkYXRhOw0KPiBn aXZlIHRoZSByZWFkZXIgbG9jaw0KDQogICAgV2UnbGwgZG8gc28uDQoNCj4gKw0KPiArCQlyZXR1 cm4gcG9zaXRpb24gLSAxOw0KPiArCX0NCj4gKw0KPiArCXJldHVybiAtRU5PRU5UOw0KPiArfQ0K PiBkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV9oYXNoL3J0ZV9oYXNoLmggYi9saWIvbGlicnRlX2hh c2gvcnRlX2hhc2guaCANCj4gaW5kZXggOWU3ZDkzMTVmLi5mZGIwMTAyM2UgMTAwNjQ0DQo+IC0t LSBhL2xpYi9saWJydGVfaGFzaC9ydGVfaGFzaC5oDQo+ICsrKyBiL2xpYi9saWJydGVfaGFzaC9y dGVfaGFzaC5oDQo+IEBAIC0xNCw2ICsxNCw4IEBADQo+ICAgI2luY2x1ZGUgPHN0ZGludC5oPg0K PiAgICNpbmNsdWRlIDxzdGRkZWYuaD4NCj4gICANCj4gKyNpbmNsdWRlIDxydGVfY29tcGF0Lmg+ DQo+ICsNCj4gICAjaWZkZWYgX19jcGx1c3BsdXMNCj4gICBleHRlcm4gIkMiIHsNCj4gICAjZW5k aWYNCj4gQEAgLTY0LDYgKzY2LDE2IEBAIHN0cnVjdCBydGVfaGFzaF9wYXJhbWV0ZXJzIHsNCj4g ICAvKiogQGludGVybmFsIEEgaGFzaCB0YWJsZSBzdHJ1Y3R1cmUuICovICBzdHJ1Y3QgcnRlX2hh c2g7DQo+ICAgDQo+ICsvKioNCj4gKyAqIEB3YXJuaW5nDQo+ICsgKiBAYiBFWFBFUklNRU5UQUw6 IHRoaXMgQVBJIG1heSBjaGFuZ2Ugd2l0aG91dCBwcmlvciBub3RpY2UuDQo+ICsgKg0KPiArICog QGludGVybmFsIEEgaGFzaCB0YWJsZSBpdGVyYXRvciBzdGF0ZSBzdHJ1Y3R1cmUuDQo+ICsgKi8N Cj4gK3N0cnVjdCBydGVfaGFzaF9pdGVyYXRvcl9zdGF0ZSB7DQo+ICsJdWludDhfdCBzcGFjZVs2 NF07DQo+IEkgd291bGQgY2FsbCB0aGlzICdzdGF0ZScuIDY0IGNhbiBiZSByZXBsYWNlZCBieSAn UlRFX0NBQ0hFX0xJTkVfU0laRScuDQoNCiAgICBPa2F5Lg0KDQpbIF0ncw0KTWljaGVsIE1hY2hh ZG8NCg==