From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by dpdk.org (Postfix) with ESMTP id 7E4E269A5 for ; Tue, 11 Apr 2017 16:17:58 +0200 (CEST) Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga104.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 11 Apr 2017 07:17:57 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.37,185,1488873600"; d="scan'208";a="844563775" Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by FMSMGA003.fm.intel.com with ESMTP; 11 Apr 2017 07:17:57 -0700 Received: from fmsmsx117.amr.corp.intel.com (10.18.116.17) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 11 Apr 2017 07:17:57 -0700 Received: from fmsmsx113.amr.corp.intel.com ([169.254.13.235]) by fmsmsx117.amr.corp.intel.com ([169.254.3.194]) with mapi id 14.03.0319.002; Tue, 11 Apr 2017 07:17:56 -0700 From: "Wiles, Keith" To: Pascal Mazon CC: "dev@dpdk.org" Thread-Topic: [dpdk-dev] [PATCH] net/tap: add support for fixed mac addresses Thread-Index: AQHSsib8ksIIBxsBsUq6QitCJudBlKHAOMeAgABl2oCAAAjNgIAABm+A Date: Tue, 11 Apr 2017 14:17:55 +0000 Message-ID: <86B786CB-214B-4F44-857C-2FB61341CD7A@intel.com> References: <20170410181850.44845-1-keith.wiles@intel.com> <20170411091851.62ab28ad@paques.dev.6wind.com> <20170411155453.4cdc3e85@paques.dev.6wind.com> In-Reply-To: <20170411155453.4cdc3e85@paques.dev.6wind.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.254.98.247] Content-Type: text/plain; charset="utf-8" Content-ID: <81DC0290C2534849B4BDF268B7971DC3@intel.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH] net/tap: add support for fixed mac addresses 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: Tue, 11 Apr 2017 14:17:59 -0000 DQo+IE9uIEFwciAxMSwgMjAxNywgYXQgODo1NCBBTSwgUGFzY2FsIE1hem9uIDxwYXNjYWwubWF6 b25ANndpbmQuY29tPiB3cm90ZToNCj4gDQo+IE9uIFR1ZSwgMTEgQXByIDIwMTcgMTM6MjM6MjQg KzAwMDANCj4gIldpbGVzLCBLZWl0aCIgPGtlaXRoLndpbGVzQGludGVsLmNvbT4gd3JvdGU6DQo+ IA0KPj4gDQo+Pj4gT24gQXByIDExLCAyMDE3LCBhdCAyOjE4IEFNLCBQYXNjYWwgTWF6b24gPHBh c2NhbC5tYXpvbkA2d2luZC5jb20+IHdyb3RlOg0KPj4+IA0KPj4+IEhpIEtlaXRoLA0KPj4+IA0K Pj4+IEkgaGF2ZSBhIGZldyBjb21tZW50cyBvbiB5b3VyIHBhdGNoLCBzZWUgaW5saW5lLg0KPj4+ IA0KPj4+IE9uIE1vbiwgMTAgQXByIDIwMTcgMTM6MTg6NTAgLTA1MDANCj4+PiBLZWl0aCBXaWxl cyA8a2VpdGgud2lsZXNAaW50ZWwuY29tPiB3cm90ZToNCj4+PiANCj4+Pj4gU3VwcG9ydCBmb3Ig YSBmaXhlZCBNQUMgYWRkcmVzcyBmb3IgdGVzdGluZyB3aXRoIHRoZSBsYXN0IG9jdGV0DQo+Pj4+ IGluY3JlbWVudGluZyBieSBvbmUgZm9yIGVhY2ggaW50ZXJmYWNlIGRlZmluZWQgd2l0aCB0aGUg bmV3ICdtYWM9Zml4ZWQnDQo+Pj4+IHN0cmluZyBvbiB0aGUgLS12ZGV2IG9wdGlvbi4gVGhlIGRl ZmF1bHQgb3B0aW9uIGlzIHN0aWxsIHRvIHJhbmRvbWl6ZQ0KPj4+PiB0aGUgTUFDIGFkZHJlc3Mg Zm9yIGVhY2ggdGFwIGludGVyZmFjZS4NCj4+Pj4gDQo+Pj4+IFNpZ25lZC1vZmYtYnk6IEtlaXRo IFdpbGVzIDxrZWl0aC53aWxlc0BpbnRlbC5jb20+DQo+Pj4+IC0tLQ0KPj4+PiBkb2MvZ3VpZGVz L25pY3MvdGFwLnJzdCAgICAgICB8IDEzICsrKysrKysrKysrLQ0KPj4+PiBkcml2ZXJzL25ldC90 YXAvcnRlX2V0aF90YXAuYyB8IDQ5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKystLS0NCj4+Pj4gMiBmaWxlcyBjaGFuZ2VkLCA1OCBpbnNlcnRpb25zKCspLCA0IGRlbGV0 aW9ucygtKQ0KPj4+PiANCj4+Pj4gZGlmZiAtLWdpdCBhL2RvYy9ndWlkZXMvbmljcy90YXAucnN0 IGIvZG9jL2d1aWRlcy9uaWNzL3RhcC5yc3QNCj4+Pj4gaW5kZXggNWM1YmE1MzU3Li5lMzgxOTgz NmEgMTAwNjQ0DQo+Pj4+IC0tLSBhL2RvYy9ndWlkZXMvbmljcy90YXAucnN0DQo+Pj4+ICsrKyBi L2RvYy9ndWlkZXMvbmljcy90YXAucnN0DQo+Pj4+IEBAIC00Niw3ICs0Niw3IEBAIFRoZXNlIFRB UCBpbnRlcmZhY2VzIGNhbiBiZSB1c2VkIHdpdGggV2lyZXNoYXJrIG9yIHRjcGR1bXAgb3IgUGt0 Z2VuLURQREsNCj4+Pj4gYWxvbmcgd2l0aCBiZWluZyBhYmxlIHRvIGJlIHVzZWQgYXMgYSBuZXR3 b3JrIGNvbm5lY3Rpb24gdG8gdGhlIERQREsNCj4+Pj4gYXBwbGljYXRpb24uIFRoZSBtZXRob2Qg ZW5hYmxlIG9uZSBvciBtb3JlIGludGVyZmFjZXMgaXMgdG8gdXNlIHRoZQ0KPj4+PiBgYC0tdmRl dj1uZXRfdGFwMGBgIG9wdGlvbiBvbiB0aGUgRFBESyBhcHBsaWNhdGlvbiBjb21tYW5kIGxpbmUu IEVhY2gNCj4+Pj4gLWBgLS12ZGV2PW5ldF90YXAxYGAgb3B0aW9uIGdpdmUgd2lsbCBjcmVhdGUg YW4gaW50ZXJmYWNlIG5hbWVkIGR0YXAwLCBkdGFwMSwNCj4+Pj4gK2BgLS12ZGV2PW5ldF90YXAx YGAgb3B0aW9uIGdpdmVuIHdpbGwgY3JlYXRlIGFuIGludGVyZmFjZSBuYW1lZCBkdGFwMCwgZHRh cDEsDQo+Pj4+IGFuZCBzbyBvbi4NCj4+Pj4gDQo+Pj4+IFRoZSBpbnRlcmZhY2UgbmFtZSBjYW4g YmUgY2hhbmdlZCBieSBhZGRpbmcgdGhlIGBgaWZhY2U9Zm9vMGBgLCBmb3IgZXhhbXBsZTo6DQo+ Pj4+IEBAIC01OCw2ICs1OCwxNyBAQCBuZWVkZWQsIGJ1dCB0aGUgaW50ZXJmYWNlIGRvZXMgbm90 IGVuZm9yY2UgdGhhdCBzcGVlZCwgZm9yIGV4YW1wbGU6Og0KPj4+PiANCj4+Pj4gICAtLXZkZXY9 bmV0X3RhcDAsaWZhY2U9Zm9vMCxzcGVlZD0yNTAwMA0KPj4+PiANCj4+Pj4gK05vcm1hbGx5IHRo ZSBQTUQgd2lsbCBnZW5lcmF0ZSByYW5kb20gTUFDIGFkZHJlc3MsIGJ1dCB3aGVuIHRlc3Rpbmcg b3Igd2l0aA0KPj4+IA0KPj4+ICJyYW5kb20gTUFDIiAtPiAiYSByYW5kb20gTUFDIg0KPj4+IA0K Pj4+PiArYSBzdGF0aWMgY29uZmlndXJhdGlvbnMgdGhlIGRldmVsb3BlciBtYXkgbmVlZCBhIGZp eGVkIE1BQyBhZGRyZXNzIHN0eWxlLg0KPj4+IA0KPj4+ICJjb25maWd1cmF0aW9ucyIgLT4gImNv bmZpZ3VyYXRpb24iDQo+Pj4gDQo+Pj4+ICtVc2luZyB0aGUgb3B0aW9uIGBgbWFjPWZpeGVkYGAg eW91IGNhbiBjcmVhdGUgYSBmaXhlZCBrbm93biBNQUMgYWRkcmVzczo6DQo+Pj4+ICsNCj4+Pj4g KyAgIC0tdmRldj1uZXRfdGFwMCxtYWM9Zml4ZWQNCj4+Pj4gKw0KPj4+PiArVGhlIE1BQyBhZGRy ZXNzIHdpbGwgYmUgZml4ZWQgdmFsdWUgd2l0aCB0aGUgbGFzdCBvY3RldCBpbmNyZW1lbnRpbmcg Ynkgb25lDQo+Pj4gDQo+Pj4gImJlIiAtPiAiaGF2ZSBhIg0KPj4+IA0KPj4+PiArZWFjaCB0aW1l IGZvciBlYWNoIGludGVyZmFjZSBzdHJpbmcgY29udGFpbmluZyBgYG1hYz1maXhlZGBgLiBUaGUg TUFDIGFkZHJlc3MNCj4+PiANCj4+PiAiZWFjaCB0aW1lIiAtPiAiIg0KPj4+IA0KPj4+PiAraXMg Zm9ybWF0dGVkIGFzIDAwOidkJzondCc6J2EnOidwJzpbMDAtRkZdIGNvbnZlcnQgdGhlIGNoYXJh Y3RlcnMgdG8gaGV4DQo+Pj4gDQo+Pj4gIiBjb252ZXJ0IiAtPiAiLiBDb252ZXJ0Ig0KPj4+IA0K Pj4+PiArYW5kIHlvdSBnZXQgYGAwMDo2NDo3NDo2MTo3MDpbMDAtRkZdYGAuDQo+Pj4+ICsNCj4+ Pj4gSXQgaXMgcG9zc2libGUgdG8gc3BlY2lmeSBhIHJlbW90ZSBuZXRkZXZpY2UgdG8gY2FwdHVy ZSBwYWNrZXRzIGZyb20gYnkgYWRkaW5nDQo+Pj4+IGBgcmVtb3RlPWZvbzFgYCwgZm9yIGV4YW1w bGU6Og0KPj4+PiANCj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3RhcC9ydGVfZXRoX3Rh cC5jIGIvZHJpdmVycy9uZXQvdGFwL3J0ZV9ldGhfdGFwLmMNCj4+Pj4gaW5kZXggMzQ3YTgwNzQx Li43YTY3NmM1ODggMTAwNjQ0DQo+Pj4+IC0tLSBhL2RyaXZlcnMvbmV0L3RhcC9ydGVfZXRoX3Rh cC5jDQo+Pj4+ICsrKyBiL2RyaXZlcnMvbmV0L3RhcC9ydGVfZXRoX3RhcC5jDQo+Pj4+IEBAIC0x LDcgKzEsNyBAQA0KPj4+PiAvKi0NCj4+Pj4gKiAgIEJTRCBMSUNFTlNFDQo+Pj4+ICoNCj4+Pj4g LSAqICAgQ29weXJpZ2h0KGMpIDIwMTYgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVz ZXJ2ZWQuDQo+Pj4+ICsgKiAgIENvcHlyaWdodChjKSAyMDE3IEludGVsIENvcnBvcmF0aW9uLiBB bGwgcmlnaHRzIHJlc2VydmVkLg0KPj4+IA0KPj4+IFNob3VsZG4ndCBpdCBiZSAiMjAxNi0yMDE3 Ij8NCj4+PiANCj4+Pj4gKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+Pj4+ICoNCj4+Pj4gKiAg IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg b3Igd2l0aG91dA0KPj4+PiBAQCAtNzEsNiArNzEsMTMgQEANCj4+Pj4gI2RlZmluZSBFVEhfVEFQ X0lGQUNFX0FSRyAgICAgICAiaWZhY2UiDQo+Pj4+ICNkZWZpbmUgRVRIX1RBUF9TUEVFRF9BUkcg ICAgICAgInNwZWVkIg0KPj4+PiAjZGVmaW5lIEVUSF9UQVBfUkVNT1RFX0FSRyAgICAgICJyZW1v dGUiDQo+Pj4+ICsjZGVmaW5lIEVUSF9UQVBfTUFDX0FSRwkJIm1hYyINCj4+PiANCj4+PiBZb3Ug dXNlZCB0YWJzIGluc3RlYWQgb2Ygc3BhY2VzLg0KPj4+IA0KPj4+PiArDQo+Pj4+ICsjaWZkZWYg SUZGX01VTFRJX1FVRVVFDQo+Pj4+ICsjZGVmaW5lIFJURV9QTURfVEFQX01BWF9RVUVVRVMJMTYN Cj4+Pj4gKyNlbHNlDQo+Pj4+ICsjZGVmaW5lIFJURV9QTURfVEFQX01BWF9RVUVVRVMJMQ0KPj4+ PiArI2VuZGlmDQo+Pj4gDQo+Pj4gUmVtb3ZlIHRoaXMgSUZGX01VTFRJX1FVRVVFIGRlZmluaXRp b24gYXMgaXQgaXMgZG9uZSBpbiBydGVfZXRoX3RhcC5oIG5vdyAobmVlZGVkIGZvciBwbWRfaW50 ZXJuYWxzKS4NCj4+IA0KPj4gVGhpcyBzaG91bGQgaGF2ZSBiZWVuIHJlbW92ZWQgaW4geW91ciBw YXRjaCBhbmQgbm93IHRoYXQgRmVycnVoIHdhbnRzIHlvdSB0byBzdWJtaXQgYSBwYXRjaCBmb3Ig dGhlIHN0cmluZyBhdCB0aGUgYm90dG9tIG9mIHRoZSBQTUQsIGNhbiB5b3UgcmVtb3ZlIGl0Pw0K Pj4gDQo+PiBJIGNhbiBkbyBib3RoIGluIG15IHBhdGNoLCBidXQgRmVycnVoIGFuZCB5b3UgbmVl ZCB0byBhZ3JlZSBiZWZvcmUgSSBjYW4gc3VibWl0IG15IHBhdGNoLg0KPiANCj4gRmVycnVoIGRl dGFpbHMgaG93IGl0J3MgYmVlbiBpbnRlZ3JhdGVkIGluIG5leHQtbmV0LCBub3RoaW5nIHRvIGFk ZCB0aGVyZSA6KQ0KPiANCj4+IA0KPj4+IA0KPj4+PiANCj4+Pj4gI2RlZmluZSBGTE9XRVJfS0VS TkVMX1ZFUlNJT04gS0VSTkVMX1ZFUlNJT04oNCwgMiwgMCkNCj4+Pj4gI2RlZmluZSBGTE9XRVJf VkxBTl9LRVJORUxfVkVSU0lPTiBLRVJORUxfVkVSU0lPTig0LCA5LCAwKQ0KPj4+PiBAQCAtODEs MTAgKzg4LDEyIEBAIHN0YXRpYyBjb25zdCBjaGFyICp2YWxpZF9hcmd1bWVudHNbXSA9IHsNCj4+ Pj4gCUVUSF9UQVBfSUZBQ0VfQVJHLA0KPj4+PiAJRVRIX1RBUF9TUEVFRF9BUkcsDQo+Pj4+IAlF VEhfVEFQX1JFTU9URV9BUkcsDQo+Pj4+ICsJRVRIX1RBUF9NQUNfQVJHLA0KPj4+PiAJTlVMTA0K Pj4+PiB9Ow0KPj4+PiANCj4+Pj4gc3RhdGljIGludCB0YXBfdW5pdDsNCj4+Pj4gK3N0YXRpYyBp bnQgZml4ZWRfbWFjX3R5cGU7DQo+Pj4gDQo+Pj4gVGhlcmUgaXMgbm8gbmVlZCBmb3IgYSBnbG9i YWwgdmFyaWFibGUsIGVzcGVjaWFsbHkgYXMgdGhlIHZhbHVlIHNob3VsZCBub3QgYmUgdGhlIHNh bWUgZm9yIGVhY2ggZHJpdmVyIGluc3RhbmNlLg0KPj4+IFR5cGljYWxseSB3aGVuIG9uZSB0YXAg dXNlcyAibWFjPWZpeGVkIiBhbmQgdGhlIG5leHQgb25lIGRvZXNuJ3QuDQo+Pj4gTW9yZSBjb21t ZW50cyBiZWxsb3cgZm9yIHRoYXQuDQo+Pj4gDQo+Pj4+IA0KPj4+PiBzdGF0aWMgdm9sYXRpbGUg dWludDMyX3QgdGFwX3RyaWdnZXI7CS8qIFJ4IHRyaWdnZXIgKi8NCj4+Pj4gDQo+Pj4+IEBAIC0x MjMwLDcgKzEyMzksMTcgQEAgZXRoX2Rldl90YXBfY3JlYXRlKGNvbnN0IGNoYXIgKm5hbWUsIGNo YXIgKnRhcF9uYW1lLCBjaGFyICpyZW1vdGVfaWZhY2UpDQo+Pj4+IAkJcnRlX21lbWNweSgmcG1k LT5ldGhfYWRkciwgaWZyLmlmcl9od2FkZHIuc2FfZGF0YSwNCj4+Pj4gCQkJICAgRVRIRVJfQURE Ul9MRU4pOw0KPj4+PiAJfSBlbHNlIHsNCj4+Pj4gLQkJZXRoX3JhbmRvbV9hZGRyKCh1aW50OF90 ICopJnBtZC0+ZXRoX2FkZHIpOw0KPj4+PiArCQlpZiAoZml4ZWRfbWFjX3R5cGUpIHsNCj4+Pj4g KwkJCXN0YXRpYyBpbnQgaWZhY2VfaWR4Ow0KPiANCj4gSSdkIHN1Z2dlc3QgdXNpbmcgc29tZXRo aW5nIGxpa2UgdGhpcywgYXMgdGhlcmUncyBubyBuZWVkIGZvciBzbyBtdWNoIGxpbmVzIHRvIGRv IHRoZSBzYW1lOg0KPiANCj4gY2hhciBtYWNbRVRIRVJfQUREUl9MRU5dID0gIlx4MDBceDY0XHg3 NFx4NjFceDcwXHgwMCI7IC8qIDA6ZDp0OmE6cDowICovDQo+IA0KPiBtYWNbRVRIRVJfQUREUl9M RU4tMV0gPSBpZmFjZV9pZHgrKzsNCj4gcnRlX21lbWNweSgmcG1kLT5ldGhfYWRkciwgbWFjLCBF VEhFUl9BRERSX0xFTik7DQoNCkhlcmUgaXMgdGhlIGFib3ZlIGNvZGU6DQoJCQlzdGF0aWMgaW50 IGlmYWNlX2lkeDsNCgkJCWNoYXIgbWFjW0VUSEVSX0FERFJfTEVOXSA9DQoJCQkJIlx4MDBceDY0 XHg3NFx4NjFceDcwXHgwMCI7IC8qIDA6ZDp0OmE6cDowICovDQoJCQltYWNbRVRIRVJfQUREUl9M RU4gLSAxXSA9IGlmYWNlX2lkeCsrOw0KCQkJcnRlX21lbWNweSgmcG1kLT5ldGhfYWRkciwgbWFj LCBFVEhFUl9BRERSX0xFTik7DQoNCk5vdCBtdWNoIGluIHRoZSB3YXkgb2YgZmV3ZXIgbGluZXMg YW5kIG5vdCByZWFsbHkgdGhhdCByZWFkYWJsZSwgc28geW91ciBvYmplY3Rpb24gaGVyZSBpcyBv bmx5IHRoYXQgeW91IHdvdWxkIGhhdmUgY29kZWQgaXQgZGlmZmVyZW50bHkgbm90IHRoYXQgaXQg aXMgaW5jb3JyZWN0LCByaWdodD8gUGVyc29uYWxseSBJIGxpa2UgdGhlIGNvZGUgYmVsb3cgYXMg aXQgaXMgZWFzaWVyIHRvIHJlYWR5IElNSE8sIGJ1dCBJIHdpbGwgY292ZXJ0IGl0IHlvdXIgc3Vn Z2VzdGlvbi4NCg0KPiANCj4gDQo+Pj4+ICsNCj4+Pj4gKwkJCXBtZC0+ZXRoX2FkZHIuYWRkcl9i eXRlc1swXSA9IDB4MDA7DQo+Pj4+ICsJCQlwbWQtPmV0aF9hZGRyLmFkZHJfYnl0ZXNbMV0gPSAn ZCc7DQo+Pj4+ICsJCQlwbWQtPmV0aF9hZGRyLmFkZHJfYnl0ZXNbMl0gPSAndCc7DQo+Pj4+ICsJ CQlwbWQtPmV0aF9hZGRyLmFkZHJfYnl0ZXNbM10gPSAnYSc7DQo+Pj4+ICsJCQlwbWQtPmV0aF9h ZGRyLmFkZHJfYnl0ZXNbNF0gPSAncCc7DQo+Pj4+ICsJCQlwbWQtPmV0aF9hZGRyLmFkZHJfYnl0 ZXNbNV0gPSAwICsgaWZhY2VfaWR4Kys7DQo+Pj4+ICsJCX0gZWxzZQ0KPj4+PiArCQkJZXRoX3Jh bmRvbV9hZGRyKCh1aW50OF90ICopJnBtZC0+ZXRoX2FkZHIpOw0KPj4+IA0KPj4+IFRvIGF2b2lk IGNoZWNrcGF0Y2ggd2FybmluZywgdXNlIGVsc2UgeyB9Lg0KPj4gDQo+PiBGZXJydWgsIHN0YXRl cyB0aGlzIGlzIE9LIGFuZCBkb2VzIG5vdCBuZWVkIHRvIGhhdmUgdGhlIHsgfSBhZGRlZC4gSSB3 aWxsIG5vdCBhZGQgdGhlIHsgfSBoZXJlLg0KPiANCj4gVmVyeSB3ZWxsIQ0KPiANCj4+IA0KPj4+ IA0KPj4+PiAJfQ0KPj4+PiANCj4+Pj4gCXJldHVybiAwOw0KPj4+PiBAQCAtMTI4NSw2ICsxMzA0 LDE2IEBAIHNldF9yZW1vdGVfaWZhY2UoY29uc3QgY2hhciAqa2V5IF9fcnRlX3VudXNlZCwNCj4+ Pj4gCXJldHVybiAwOw0KPj4+PiB9DQo+Pj4+IA0KPj4+PiArc3RhdGljIGludA0KPj4+PiArc2V0 X21hY190eXBlKGNvbnN0IGNoYXIgKmtleSBfX3J0ZV91bnVzZWQsIGNvbnN0IGNoYXIgKnZhbHVl LCB2b2lkICpleHRyYV9hcmdzKQ0KPj4+PiArew0KPj4+PiArCS8qIEFzc3VtZSByYW5kb20gbWFj IGFkZHJlc3MgKi8NCj4+Pj4gKwkqKGludCAqKWV4dHJhX2FyZ3MgPSAwOw0KPj4+IA0KPj4+IFdp dGggYW4gYXV0b21hdGljIHZhcmlhYmxlIGZvciBmaXhlZF9tYWNfdHlwZSBpbiBydGVfcG1kX3Rh cF9wcm9iZSgpLCBubyBuZWVkIGZvciBzZXR0aW5nIGl0IHRvIDAgaGVyZS4NCj4+IA0KPj4gSXQg ZG9lcyBuZWVkIHRvIGJlIHNldCBvZiBlYWNoIGluc3RhbmNlIG9mIHRoZSBjYWxsIHRvIHRoaXMg cm91dGluZSBldmVuIGlmIEkgcmVtb3ZlIHRoZSBnbG9iYWwuIEVhY2ggaW50ZXJmYWNlIGNhbiBo YXZlIGEgZGlmZmVyZW50IHN0YXRlLg0KPj4gDQo+Pj4gDQo+Pj4+ICsJaWYgKHZhbHVlICYmICFz dHJjYXNlY21wKCJmaXhlZCIsIHZhbHVlKSkNCj4+PiANCj4+PiBJIHRoaW5rIGEgbWFjcm8gZm9y ICJmaXhlZCIgd291bGQgYmUgYmV0dGVyLiBNYXliZSBhIEVUSF9UQVBfTUFDX0ZJWEVEICJmaXhl ZCIgYXQgdGhlIHRvcD8NCj4+IA0KPj4gSSB3aWxsIHVzZSB0aGUgYWxyZWFkeSBleGlzdGluZyBt YWNybyBFVEhfVEFQX01BQ19BUkcgaW5zdGVhZC4NCj4+PiANCj4+Pj4gKwkJKihpbnQgKilleHRy YV9hcmdzID0gMTsNCj4+Pj4gKwlyZXR1cm4gMDsNCj4+Pj4gK30NCj4+Pj4gKw0KPj4+PiAvKiBP cGVuIGEgVEFQIGludGVyZmFjZSBkZXZpY2UuDQo+Pj4+ICovDQo+Pj4+IHN0YXRpYyBpbnQNCj4+ Pj4gQEAgLTEzMDEsNiArMTMzMCw3IEBAIHJ0ZV9wbWRfdGFwX3Byb2JlKGNvbnN0IGNoYXIgKm5h bWUsIGNvbnN0IGNoYXIgKnBhcmFtcykNCj4+Pj4gCQkgREVGQVVMVF9UQVBfTkFNRSwgdGFwX3Vu aXQrKyk7DQo+Pj4+IAltZW1zZXQocmVtb3RlX2lmYWNlLCAwLCBSVEVfRVRIX05BTUVfTUFYX0xF Tik7DQo+Pj4+IA0KPj4+PiArCWZpeGVkX21hY190eXBlID0gMDsNCj4+PiANCj4+PiBUdXJuIGZp eGVkX21hY190eXBlIHRvIGFuIGF1dG9tYXRpYyB2YXJpYWJsZSwgbG9jYWwgdG8gdGhpcyBmdW5j dGlvbi4NCj4+PiBBbmQgYWRkIHRoZSBhcmd1bWVudCB0byBldGhfZGV2X3RhcF9jcmVhdGUoKS4N Cj4+IA0KPj4gTmVlZCB0byBoYXZlIHRoZSBnbG9iYWwgdG8gZXhpc3QsIGJlY2F1c2UgSSBuZWVk IHRvIGJlIGFibGUgdG8gdGVzdCB0aGUgdmFyaWFibGUgbGF0ZXIuIFRoZSB2YXJpYWJsZSBjb3Vs ZCBiZSBwbGFjZWQgaW4gYSBhbGxvY2F0ZWQgc3RydWN0dXJlLCBidXQgZG9lcyBpdCByZWFsbHkg bWF0dGVyIHRvIGhhdmUgYSBzdGF0aWMgdmFyaWFibGUgaGVyZT8NCj4gDQo+IEkgZGlzYWdyZWUg aGVyZSwgSSd2ZSBzZWVuIGZpeGVkX21hY190eXBlIG9ubHkgdXNlZCBkdXJpbmcgcHJvYmluZywg aW4gcnRlX3BtZF90YXBfcHJvYmUoKSBhbmQgcnRlX2V0aF9kZXZfdGFwX2NyZWF0ZSgpLg0KPiBU aGUgY2FzZSBpcyBzaW1pbGFyIHRvIHRoZSAiaWZhY2UiIHBhcmFtLCB3ZSBuZWVkIGl0IGR1cmlu ZyBwcm9iaW5nLCB3aGVyZSBpdCBpcyB1c2VkIGFwcHJvcHJpYXRlbHkgKGVpdGhlciBzZXR0aW5n IHRoZSBwbWQtPmV0aF9hZGRyIGZvciB5b3VyIGZpeGVkIG1hYywgb3Igc2V0dGluZyBwbWQtPnJl bW90ZV9pZmFjZSBmb3IgaWZhY2UpLg0KDQpUaGlzIGNvZGUgaXMgbm90IHJlYWxseSBjbG9zZSB0 byDigJxpZmFjZeKAnSBjb2RlIGFzIHRoZSBpZmFjZSBjb2RlIGhhcyBhIHBsYWNlIHRvIHB1dCB0 aGUgc3RyaW5nIGluIHRoZSBwbWQgc3RydWN0dXJlIGFuZCB0aGUgcG1kLT5ldGhfYWRkciBpcyBz ZXR1cCBsYXRlciBvbiBpbiB0aGUgY29kZS4gSSB3b3VsZCBoYXZlIHRvIGFkZCBhIGhvbGRpbmcg cGxhY2UgaW4gdGhlIHBtZCBzdHJ1Y3R1cmUgdG8gaG9sZCB0aGUgcmFuZG9tIG9yIGZpeGVkIG1h YyBhZGRyZXNzIG9yIGZsYWcgdG8gYmUgdXNlZCBpbiB0aGUgcm91dGluZSBldGhfZGV2X3RhcF9j cmVhdGUoKS4NCg0KTWF5YmUgSSBhbSBqdXN0IGJlaW5nIHNsb3cgdGhpcyBtb3JuaW5nLCBidXQg SSBkbyBub3Qgc2VlIGhvdyB5b3Ugd2FudCB0aGUgY29kZSB0byBiZSBkb25lIGhlcmUgYXMgSSBk byBub3Qgc2VlIGF3YXkgYXJvdW5kIGEgZmxhZyBzb21lcGxhY2UuDQoNCj4gDQo+PiANCj4+PiAN Cj4+Pj4gCWlmIChwYXJhbXMgJiYgKHBhcmFtc1swXSAhPSAnXDAnKSkgew0KPj4+PiAJCVJURV9M T0coREVCVUcsIFBNRCwgInBhcmFtYXRlcnMgKCVzKVxuIiwgcGFyYW1zKTsNCj4+Pj4gDQo+Pj4+ IEBAIC0xMzMyLDYgKzEzNjIsMTUgQEAgcnRlX3BtZF90YXBfcHJvYmUoY29uc3QgY2hhciAqbmFt ZSwgY29uc3QgY2hhciAqcGFyYW1zKQ0KPj4+PiAJCQkJaWYgKHJldCA9PSAtMSkNCj4+Pj4gCQkJ CQlnb3RvIGxlYXZlOw0KPj4+PiAJCQl9DQo+Pj4+ICsNCj4+Pj4gKwkJCWlmIChydGVfa3Zhcmdz X2NvdW50KGt2bGlzdCwgRVRIX1RBUF9NQUNfQVJHKSA9PSAxKSB7DQo+Pj4+ICsJCQkJcmV0ID0g cnRlX2t2YXJnc19wcm9jZXNzKGt2bGlzdCwNCj4+Pj4gKwkJCQkJCQkgRVRIX1RBUF9NQUNfQVJH LA0KPj4+PiArCQkJCQkJCSAmc2V0X21hY190eXBlLA0KPj4+PiArCQkJCQkJCSAmZml4ZWRfbWFj X3R5cGUpOw0KPj4+PiArCQkJCWlmIChyZXQgPT0gLTEpDQo+Pj4+ICsJCQkJCWdvdG8gbGVhdmU7 DQo+Pj4+ICsJCQl9DQo+Pj4+IAkJfQ0KPj4+PiAJfQ0KPj4+PiAJcG1kX2xpbmsubGlua19zcGVl ZCA9IHNwZWVkOw0KPj4+PiBAQCAtMTM5NCw0ICsxNDMzLDggQEAgc3RhdGljIHN0cnVjdCBydGVf dmRldl9kcml2ZXIgcG1kX3RhcF9kcnYgPSB7DQo+Pj4+IH07DQo+Pj4+IFJURV9QTURfUkVHSVNU RVJfVkRFVihuZXRfdGFwLCBwbWRfdGFwX2Rydik7DQo+Pj4+IFJURV9QTURfUkVHSVNURVJfQUxJ QVMobmV0X3RhcCwgZXRoX3RhcCk7DQo+Pj4+IC1SVEVfUE1EX1JFR0lTVEVSX1BBUkFNX1NUUklO RyhuZXRfdGFwLCAiaWZhY2U9PHN0cmluZz4sc3BlZWQ9TiIpOw0KPj4+PiArUlRFX1BNRF9SRUdJ U1RFUl9QQVJBTV9TVFJJTkcobmV0X3RhcCwNCj4+Pj4gKwkJCSAgICAgICJpZmFjZT08c3RyaW5n PiwiDQo+Pj4+ICsJCQkgICAgICAic3BlZWQ9TiwiDQo+Pj4+ICsJCQkgICAgICAicmVtb3RlPTxz dHJpbmc+LCINCj4+Pj4gKwkJCSAgICAgICJtYWM9Zml4ZWQiKTsNCj4+PiANCj4+PiBJbmRlZWQs IEkgZm9yZ290IHRvIHVwZGF0ZSB0aGF0IHdoZW4gSSBpbnRyb2R1Y2VkIHRoZSByZW1vdGUhDQo+ Pj4gDQo+Pj4gVGhhdCdzIGl0IGZvciBtZSwNCj4+PiBUaGFuayB5b3UuDQo+Pj4gDQo+Pj4gUGFz Y2FsDQo+PiANCj4+IFJlZ2FyZHMsDQo+PiBLZWl0aA0KDQpSZWdhcmRzLA0KS2VpdGgNCg0K