From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eric Garver Subject: Re: [PATCH net-next v21 3/4] openvswitch: 802.1AD Flow handling, actions, vlan parsing, netlink attributes Date: Sat, 3 Sep 2016 13:30:12 -0400 Message-ID: <20160903173012.GJ31705@egarver> References: <1472762727-25844-1-git-send-email-e@erig.me> <1472762727-25844-4-git-send-email-e@erig.me> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: ovs dev , Linux Kernel Network Developers , Thomas F Herbert To: pravin shelar Return-path: Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces-yBygre7rU0TnMu66kgdUjQ@public.gmane.org Sender: "dev" List-Id: netdev.vger.kernel.org UHJhdmluLAoKVGhhbmtzIGZvciB0aGUgZmVlZGJhY2suIFNvbWUgcmVwbGllcyBiZWxvdy4KClRo YW5rcy4KRXJpYy4KCk9uIEZyaSwgU2VwIDAyLCAyMDE2IGF0IDAyOjQyOjMwUE0gLTA3MDAsIHBy YXZpbiBzaGVsYXIgd3JvdGU6Cj4gT24gVGh1LCBTZXAgMSwgMjAxNiBhdCAxOjQ1IFBNLCBFcmlj IEdhcnZlciA8ZUBlcmlnLm1lPiB3cm90ZToKPiA+IEFkZCBzdXBwb3J0IGZvciA4MDIuMWFkIGlu Y2x1ZGluZyB0aGUgYWJpbGl0eSB0byBwdXNoIGFuZCBwb3AgZG91YmxlCj4gPiB0YWdnZWQgdmxh bnMuIEFkZCBzdXBwb3J0IGZvciA4MDIuMWFkIHRvIG5ldGxpbmsgcGFyc2luZyBhbmQgZmxvdwo+ ID4gY29udmVyc2lvbi4gVXNlcyBkb3VibGUgbmVzdGVkIGVuY2FwIGF0dHJpYnV0ZXMgdG8gcmVw cmVzZW50IGRvdWJsZQo+ID4gdGFnZ2VkIHZsYW4uIElubmVyIFRQSUQgZW5jb2RlZCBhbG9uZyB3 aXRoIGN0Y2kgaW4gbmVzdGVkIGF0dHJpYnV0ZXMuCj4gPgo+ID4gVGhpcyBpcyBiYXNlZCBvbiBU aG9tYXMgRiBIZXJiZXJ0J3Mgb3JpZ2luYWwgdjIwIHBhdGNoLiBJIG1hZGUgc29tZQo+ID4gc21h bGwgY2xlYW4gdXBzIGFuZCBidWcgZml4ZXMuCj4gPgo+ID4gU2lnbmVkLW9mZi1ieTogVGhvbWFz IEYgSGVyYmVydCA8dGhvbWFzZmhlcmJlcnRAZ21haWwuY29tPgo+ID4gU2lnbmVkLW9mZi1ieTog RXJpYyBHYXJ2ZXIgPGVAZXJpZy5tZT4KPiAKPiBUaGFua3MgZm9yIHdvcmtpbmcgb24gdGhpcy4g VGhpcyB2ZXJzaW9uIGxvb2tzIHByZXR0eSBjbG9uZSB0byBjb21wbGV0ZS4KPiAKPiA+IC0tLQo+ ID4gIG5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMgICAgICB8ICAxNiArLS0KPiA+ICBuZXQvb3Bl bnZzd2l0Y2gvZmxvdy5jICAgICAgICAgfCAgNjQgKysrKysrKystLS0tCj4gPiAgbmV0L29wZW52 c3dpdGNoL2Zsb3cuaCAgICAgICAgIHwgICA4ICstCj4gPiAgbmV0L29wZW52c3dpdGNoL2Zsb3df bmV0bGluay5jIHwgMjI3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0t Cj4gPiAgbmV0L29wZW52c3dpdGNoL3Zwb3J0LmMgICAgICAgIHwgICA3ICstCj4gPiAgNSBmaWxl cyBjaGFuZ2VkLCAyMzUgaW5zZXJ0aW9ucygrKSwgODcgZGVsZXRpb25zKC0pCj4gPgo+IC4uLgo+ ID4gZGlmZiAtLWdpdCBhL25ldC9vcGVudnN3aXRjaC9mbG93LmMgYi9uZXQvb3BlbnZzd2l0Y2gv Zmxvdy5jCj4gPiBpbmRleCAwZWExMjhlZWVhYjIuLjEzZjZlYmRmMzc5YiAxMDA2NDQKPiA+IC0t LSBhL25ldC9vcGVudnN3aXRjaC9mbG93LmMKPiA+ICsrKyBiL25ldC9vcGVudnN3aXRjaC9mbG93 LmMKPiA+IEBAIC0zMDIsMjQgKzMwMiw1NiBAQCBzdGF0aWMgYm9vbCBpY21wNmhkcl9vayhzdHJ1 Y3Qgc2tfYnVmZiAqc2tiKQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp emVvZihzdHJ1Y3QgaWNtcDZoZHIpKTsKPiA+ICB9Cj4gPgo+ID4gLXN0YXRpYyBpbnQgcGFyc2Vf dmxhbihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgc3dfZmxvd19rZXkgKmtleSkKPiA+ICsv KioKPiA+ICsgKiBQYXJzZSB2bGFuIHRhZyBmcm9tIHZsYW4gaGVhZGVyLgo+ID4gKyAqIFJldHVy bnMgRVJST1Igb24gbWVtb3J5IGVycm9yLgo+ID4gKyAqIFJldHVybnMgMCBpZiBpdCBlbmNvdW50 ZXJzIGEgbm9uLXZsYW4gb3IgaW5jb21wbGV0ZSBwYWNrZXQuCj4gPiArICogUmV0dXJucyAxIGFm dGVyIHN1Y2Nlc3NmdWxseSBwYXJzaW5nIHZsYW4gdGFnLgo+ID4gKyAqLwo+ID4gK3N0YXRpYyBp bnQgcGFyc2Vfdmxhbl90YWcoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHZsYW5faGVhZCAq dmxhbikKPiA+ICB7Cj4gPiAtICAgICAgIHN0cnVjdCBxdGFnX3ByZWZpeCB7Cj4gPiAtICAgICAg ICAgICAgICAgX19iZTE2IGV0aF90eXBlOyAvKiBFVEhfUF84MDIxUSAqLwo+ID4gLSAgICAgICAg ICAgICAgIF9fYmUxNiB0Y2k7Cj4gPiAtICAgICAgIH07Cj4gPiAtICAgICAgIHN0cnVjdCBxdGFn X3ByZWZpeCAqcXA7Cj4gPiArICAgICAgIHN0cnVjdCB2bGFuX2hlYWQgKnFwID0gKHN0cnVjdCB2 bGFuX2hlYWQgKilza2ItPmRhdGE7Cj4gPgo+ID4gLSAgICAgICBpZiAodW5saWtlbHkoc2tiLT5s ZW4gPCBzaXplb2Yoc3RydWN0IHF0YWdfcHJlZml4KSArIHNpemVvZihfX2JlMTYpKSkKPiA+ICsg ICAgICAgaWYgKGxpa2VseSghZXRoX3R5cGVfdmxhbihxcC0+dHBpZCkpKQo+ID4gICAgICAgICAg ICAgICAgIHJldHVybiAwOwo+ID4KPiA+IC0gICAgICAgaWYgKHVubGlrZWx5KCFwc2tiX21heV9w dWxsKHNrYiwgc2l6ZW9mKHN0cnVjdCBxdGFnX3ByZWZpeCkgKwo+ID4gLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoX19iZTE2KSkpKQo+ID4gKyAgICAgICBp ZiAodW5saWtlbHkoc2tiLT5sZW4gPCBzaXplb2Yoc3RydWN0IHZsYW5faGVhZCkgKyBzaXplb2Yo X19iZTE2KSkpCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4gPiArCj4gPiArICAgICAg IGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIHNpemVvZihzdHJ1Y3Qgdmxhbl9oZWFk KSArCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoX19iZTE2KSkp KQo+ID4gICAgICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOwo+ID4KPiBwc2tiX21heV9wdWxs KCkgY2FuIGNoYW5nZSBza2ItPmRhdGEsIHNvIHlvdSBuZWVkIHRvIHJlZnJlc2ggcXAgcG9pbnRl ci4KPiAKCkdvb2QgY2F0Y2ghCgo+ID4gLSAgICAgICBxcCA9IChzdHJ1Y3QgcXRhZ19wcmVmaXgg Kikgc2tiLT5kYXRhOwo+ID4gLSAgICAgICBrZXktPmV0aC50Y2kgPSBxcC0+dGNpIHwgaHRvbnMo VkxBTl9UQUdfUFJFU0VOVCk7Cj4gPiAtICAgICAgIF9fc2tiX3B1bGwoc2tiLCBzaXplb2Yoc3Ry dWN0IHF0YWdfcHJlZml4KSk7Cj4gPiArICAgICAgIHZsYW4tPnRjaSA9IHFwLT50Y2kgfCBodG9u cyhWTEFOX1RBR19QUkVTRU5UKTsKPiA+ICsgICAgICAgdmxhbi0+dHBpZCA9IHFwLT50cGlkOwo+ ID4gKwo+ID4gKyAgICAgICBfX3NrYl9wdWxsKHNrYiwgc2l6ZW9mKHN0cnVjdCB2bGFuX2hlYWQp KTsKPiA+ICsgICAgICAgcmV0dXJuIDE7Cj4gPiArfQo+ID4gKwo+IC4uLgo+IC4uLgo+IAo+ID4g ZGlmZiAtLWdpdCBhL25ldC9vcGVudnN3aXRjaC9mbG93X25ldGxpbmsuYyBiL25ldC9vcGVudnN3 aXRjaC9mbG93X25ldGxpbmsuYwo+ID4gaW5kZXggYzc4YTZhMTQ3NmZiLi5mYmU5ZTBlNDc5MmQg MTAwNjQ0Cj4gPiAtLS0gYS9uZXQvb3BlbnZzd2l0Y2gvZmxvd19uZXRsaW5rLmMKPiA+ICsrKyBi L25ldC9vcGVudnN3aXRjaC9mbG93X25ldGxpbmsuYwo+IC4uLgo+IAo+ID4gK3N0YXRpYyBpbnQg X19wYXJzZV92bGFuX2Zyb21fbmxhdHRycyhzdHJ1Y3Qgc3dfZmxvd19tYXRjaCAqbWF0Y2gsCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTY0ICprZXlfYXR0cnMsIGJv b2wgaW5uZXIsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg c3RydWN0IG5sYXR0ciAqKmEsIGJvb2wgaXNfbWFzaywKPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBib29sIGxvZykKPiA+ICt7Cj4gPiArICAgICAgIGludCBlcnI7Cj4g PiArICAgICAgIGNvbnN0IHN0cnVjdCBubGF0dHIgKmVuY2FwOwo+ID4gKwo+ID4gKyAgICAgICBl cnIgPSBlbmNvZGVfdmxhbl9mcm9tX25sYXR0cnMobWF0Y2gsIGEsIGlzX21hc2ssIGlubmVyLCBs b2cpOwo+ID4gKyAgICAgICBpZiAoZXJyKQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiBlcnI7 Cj4gPiArCj4gPiArICAgICAgICprZXlfYXR0cnMgJj0gfigxIDw8IE9WU19LRVlfQVRUUl9FTkNB UCk7Cj4gPiArCj4gPiArICAgICAgIC8qIEVuc3VyZSB0aGF0IHRjaSBrZXkgYXR0cmlidXRlIGlz bid0Cj4gPiArICAgICAgICAqIG92ZXJ3cml0dGVuIGJ5IGVuY2Fwc3VsYXRlZCBjdXN0b21lciB0 Y2kuCj4gPiArICAgICAgICAqIEV0aGVydHlwZSBpcyBjbGVhcmVkIGJlY2F1c2UgaXQgaXMgY190 cGlkLgo+ID4gKyAgICAgICAgKi8KPiA+ICsgICAgICAgKmtleV9hdHRycyAmPSB+KDEgPDwgT1ZT X0tFWV9BVFRSX1ZMQU4pOwo+ID4gKyAgICAgICAqa2V5X2F0dHJzICY9IH4oMSA8PCBPVlNfS0VZ X0FUVFJfRVRIRVJUWVBFKTsKPiA+ICsKPiA+ICsgICAgICAgZW5jYXAgPSBhW09WU19LRVlfQVRU Ul9FTkNBUF07Cj4gPiArCj4gPiArICAgICAgIGlmIChpc19tYXNrKQo+ID4gKyAgICAgICAgICAg ICAgIGVyciA9IHBhcnNlX2Zsb3dfbWFza19ubGF0dHJzKGVuY2FwLCBhLCBrZXlfYXR0cnMsIGxv Zyk7Cj4gPiArICAgICAgIGVsc2UKPiA+ICsgICAgICAgICAgICAgICBlcnIgPSBwYXJzZV9mbG93 X25sYXR0cnMoZW5jYXAsIGEsIGtleV9hdHRycywgbG9nKTsKPiA+ICsKPiA+ICsgICAgICAgcmV0 dXJuIGVycjsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGludCBwYXJzZV92bGFuX2Zyb21fbmxh dHRycyhzdHJ1Y3Qgc3dfZmxvd19tYXRjaCAqbWF0Y2gsCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHU2NCAqa2V5X2F0dHJzLCBib29sICppZV92YWxpZCwKPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IG5sYXR0ciAqKmEsIGJv b2wgaXNfbWFzaywKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBs b2cpCj4gPiArewo+ID4gKyAgICAgICBpbnQgZXJyOwo+ID4gKwo+ID4gKyAgICAgICBlcnIgPSBf X3BhcnNlX3ZsYW5fZnJvbV9ubGF0dHJzKG1hdGNoLCBrZXlfYXR0cnMsCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIGEsIGlzX21hc2ssIGxvZyk7Cj4g PiArICAgICAgIGlmIChlcnIpCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIGVycjsKPiA+ICsK PiA+ICsgICAgICAgaWYgKCFpc19tYXNrKSB7Cj4gPiArICAgICAgICAgICAgICAgaWYgKCgqa2V5 X2F0dHJzICYgKDEgPDwgT1ZTX0tFWV9BVFRSX0VUSEVSVFlQRSkpICYmCj4gPiArICAgICAgICAg ICAgICAgICAgIGV0aF90eXBlX3ZsYW4obmxhX2dldF9iZTE2KGFbT1ZTX0tFWV9BVFRSX0VUSEVS VFlQRV0pKSkgewo+ID4gKwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoKCprZXlf YXR0cnMgJiAoMSA8PCBPVlNfS0VZX0FUVFJfVkxBTikpICYmCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoKmtleV9hdHRycyAmICgxIDw8IE9WU19LRVlfQVRUUl9FTkNBUCkpKSkg ewo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPVlNfTkxFUlIobG9nLCAiSW52 YWxpZCBJbm5lciBWTEFOIGZyYW1lIik7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHJldHVybiAtRUlOVkFMOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgfQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgKmllX3ZhbGlkID0gdHJ1ZTsKPiA+ICsgICAgICAgICAgICAg ICB9Cj4gPiArICAgICAgIH0gZWxzZSB7Cj4gPiArICAgICAgICAgICAgICAgaWYgKCprZXlfYXR0 cnMgJiAoMSA8PCBPVlNfS0VZX0FUVFJfRU5DQVApKSB7Cj4gPiArICAgICAgICAgICAgICAgICAg ICAgICBpZiAoISppZV92YWxpZCkgewo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBPVlNfTkxFUlIobG9nLCAiRW5jYXAgbWFzayBhdHRyaWJ1dGUgaXMgc2V0IGZvciBub24tQ1ZM QU4gZnJhbWUuIik7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAt RUlOVkFMOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgfQo+ID4gKyAgICAgICAgICAgICAg IH0KPiA+ICsgICAgICAgfQo+ID4gKwo+IFRoaXMgY2hlY2sgY2FuIGJlIG1vdmVkIHRvIF9fcGFy c2Vfdmxhbl9mcm9tX25sYXR0cnMoKS4gVGhpcyB3YXkgdGhlcmUKPiBpcyBubyBuZWVkIHRvIGNo ZWNrIEFUVFJfVkxBTiBhbmQgQVRUUl9FTkNBUCBoZXJlIGFuZCBpbgo+IG92c19ubGFfZ2V0X21h dGNoKCkgZnVuY3Rpb24uCj4gLi4uCj4gCgpJIGFncmVlIHRoZXJlIGNvdWxkIGJlIHNvbWUgcmVm YWN0b3JpbmcgZG9uZSBoZXJlLgoKPiA+IEBAIC0xMTgyLDExICsxMzAxLDExIEBAIGludCBvdnNf bmxhX2dldF9tYXRjaChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzd19mbG93X21hdGNoICptYXRj aCwKPiA+ICAgICAgICAgICAgICAgICAgICAgICBib29sIGxvZykKPiA+ICB7Cj4gPiAgICAgICAg IGNvbnN0IHN0cnVjdCBubGF0dHIgKmFbT1ZTX0tFWV9BVFRSX01BWCArIDFdOwo+ID4gLSAgICAg ICBjb25zdCBzdHJ1Y3QgbmxhdHRyICplbmNhcDsKPiA+ICAgICAgICAgc3RydWN0IG5sYXR0ciAq bmV3bWFzayA9IE5VTEw7Cj4gPiAgICAgICAgIHU2NCBrZXlfYXR0cnMgPSAwOwo+ID4gICAgICAg ICB1NjQgbWFza19hdHRycyA9IDA7Cj4gPiAgICAgICAgIGJvb2wgZW5jYXBfdmFsaWQgPSBmYWxz ZTsKPiA+ICsgICAgICAgYm9vbCBpX2VuY2FwX3ZhbGlkID0gZmFsc2U7Cj4gPiAgICAgICAgIGlu dCBlcnI7Cj4gPgo+ID4gICAgICAgICBlcnIgPSBwYXJzZV9mbG93X25sYXR0cnMobmxhX2tleSwg YSwgJmtleV9hdHRycywgbG9nKTsKPiA+IEBAIC0xMTk1LDM1ICsxMzE0LDIwIEBAIGludCBvdnNf bmxhX2dldF9tYXRjaChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzd19mbG93X21hdGNoICptYXRj aCwKPiA+Cj4gPiAgICAgICAgIGlmICgoa2V5X2F0dHJzICYgKDEgPDwgT1ZTX0tFWV9BVFRSX0VU SEVSTkVUKSkgJiYKPiA+ICAgICAgICAgICAgIChrZXlfYXR0cnMgJiAoMSA8PCBPVlNfS0VZX0FU VFJfRVRIRVJUWVBFKSkgJiYKPiA+IC0gICAgICAgICAgIChubGFfZ2V0X2JlMTYoYVtPVlNfS0VZ X0FUVFJfRVRIRVJUWVBFXSkgPT0gaHRvbnMoRVRIX1BfODAyMVEpKSkgewo+ID4gLSAgICAgICAg ICAgICAgIF9fYmUxNiB0Y2k7Cj4gPiArICAgICAgICAgICBldGhfdHlwZV92bGFuKG5sYV9nZXRf YmUxNihhW09WU19LRVlfQVRUUl9FVEhFUlRZUEVdKSkpIHsKPiA+Cj4gPiAgICAgICAgICAgICAg ICAgaWYgKCEoKGtleV9hdHRycyAmICgxIDw8IE9WU19LRVlfQVRUUl9WTEFOKSkgJiYKPiA+ICAg ICAgICAgICAgICAgICAgICAgICAoa2V5X2F0dHJzICYgKDEgPDwgT1ZTX0tFWV9BVFRSX0VOQ0FQ KSkpKSB7Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBPVlNfTkxFUlIobG9nLCAiSW52YWxp ZCBWbGFuIGZyYW1lLiIpOwo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5W QUw7Cj4gPiAgICAgICAgICAgICAgICAgfQo+IC4uLgo+IC4uLgo+ID4gQEAgLTE0NjQsMTcgKzE1 NDcsMzcgQEAgc3RhdGljIGludCBfX292c19ubGFfcHV0X2tleShjb25zdCBzdHJ1Y3Qgc3dfZmxv d19rZXkgKnN3a2V5LAo+ID4gICAgICAgICBldGhlcl9hZGRyX2NvcHkoZXRoX2tleS0+ZXRoX3Ny Yywgb3V0cHV0LT5ldGguc3JjKTsKPiA+ICAgICAgICAgZXRoZXJfYWRkcl9jb3B5KGV0aF9rZXkt PmV0aF9kc3QsIG91dHB1dC0+ZXRoLmRzdCk7Cj4gPgo+ID4gLSAgICAgICBpZiAoc3drZXktPmV0 aC50Y2kgfHwgc3drZXktPmV0aC50eXBlID09IGh0b25zKEVUSF9QXzgwMjFRKSkgewo+ID4gKyAg ICAgICBpZiAoc3drZXktPmV0aC52bGFuLnRjaSB8fCBldGhfdHlwZV92bGFuKHN3a2V5LT5ldGgu dHlwZSkpIHsKPiA+ICAgICAgICAgICAgICAgICBfX2JlMTYgZXRoX3R5cGU7Cj4gPiAtICAgICAg ICAgICAgICAgZXRoX3R5cGUgPSAhaXNfbWFzayA/IGh0b25zKEVUSF9QXzgwMjFRKSA6IGh0b25z KDB4ZmZmZik7Cj4gPiArICAgICAgICAgICAgICAgZXRoX3R5cGUgPSAhaXNfbWFzayA/IG91dHB1 dC0+ZXRoLnZsYW4udHBpZCA6IGh0b25zKDB4ZmZmZik7Cj4gPiAgICAgICAgICAgICAgICAgaWYg KG5sYV9wdXRfYmUxNihza2IsIE9WU19LRVlfQVRUUl9FVEhFUlRZUEUsIGV0aF90eXBlKSB8fAo+ ID4gLSAgICAgICAgICAgICAgICAgICBubGFfcHV0X2JlMTYoc2tiLCBPVlNfS0VZX0FUVFJfVkxB Tiwgb3V0cHV0LT5ldGgudGNpKSkKPiA+ICsgICAgICAgICAgICAgICAgICAgbmxhX3B1dF9iZTE2 KHNrYiwgT1ZTX0tFWV9BVFRSX1ZMQU4sIG91dHB1dC0+ZXRoLnZsYW4udGNpKSkKPiA+ICAgICAg ICAgICAgICAgICAgICAgICAgIGdvdG8gbmxhX3B1dF9mYWlsdXJlOwo+ID4gICAgICAgICAgICAg ICAgIGVuY2FwID0gbmxhX25lc3Rfc3RhcnQoc2tiLCBPVlNfS0VZX0FUVFJfRU5DQVApOwo+ID4g LSAgICAgICAgICAgICAgIGlmICghc3drZXktPmV0aC50Y2kpCj4gPiArICAgICAgICAgICAgICAg aWYgKCFzd2tleS0+ZXRoLnZsYW4udGNpKQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgZ290 byB1bmVuY2FwOwo+ID4gLSAgICAgICB9IGVsc2UKPiA+IC0gICAgICAgICAgICAgICBlbmNhcCA9 IE5VTEw7Cj4gPiArCj4gPiArICAgICAgICAgICAgICAgaWYgKHN3a2V5LT5ldGguY3ZsYW4udGNp IHx8IGV0aF90eXBlX3ZsYW4oc3drZXktPmV0aC50eXBlKSkgewo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgLyogQ3VzdG9tZXIgdGNpIGlzIG5lc3RlZCBidXQgdXNlcyBzYW1lIGtleSBhdHRy aWJ1dGUuCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgKi8KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgIGV0aF90eXBlID0gIWlzX21hc2sgPyBvdXRwdXQtPmV0aC5jdmxhbi50cGlkIDog aHRvbnMoMHhmZmZmKTsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmIChubGFfcHV0X2Jl MTYoc2tiLCBPVlNfS0VZX0FUVFJfRVRIRVJUWVBFLCBldGhfdHlwZSkgfHwKPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICBubGFfcHV0X2JlMTYoc2tiLCBPVlNfS0VZX0FUVFJfVkxBTiwg b3V0cHV0LT5ldGguY3ZsYW4udGNpKSkKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZ290byBubGFfcHV0X2ZhaWx1cmU7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBpbl9l bmNhcCA9IG5sYV9uZXN0X3N0YXJ0KHNrYiwgT1ZTX0tFWV9BVFRSX0VOQ0FQKTsKPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgIGlmICghc3drZXktPmV0aC5jdmxhbi50Y2kpCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gdW5lbmNhcDsKPiA+ICsgICAgICAgICAgICAg ICB9Cj4gPiArICAgICAgIH0KPiB0aGVyZSBjb3VsZCBiZSBoZWxwZXIgZnVuY3Rpb24gdG8gc2Vy aWFsaXplICJzdHJ1Y3Qgdmxhbl9oZWFkIiB0bwo+IGF2b2lkIGR1cGxpY2F0ZSBjb2RlIGFib3Zl Lgo+IAoKR29vZCBpZGVhLiBJJ2xsIGFkZCBhIGhlbHBlci4KCj4gPiArCj4gPiArICAgICAgIGlm IChldGhfdHlwZV92bGFuKHN3a2V5LT5ldGgudHlwZSkgJiYgZW5jYXAgJiYgaW5fZW5jYXApIHsK PiAKPiBJIHRoaW5rIGNoZWNrIGZvciBldGgudHlwZSBpcyBzdWZmaWNpZW50IGhlcmUuIGVuY2Fw IGFuZCBpbl9lbmNhcAo+IHNob3VsZCBiZSB0cnVlIGluIHRoaXMgY2FzZSBhbnl3YXlzLgo+IAoK WWVzLiBZb3UncmUgcmlnaHQuIENhbGwgaXQgcGFyYW5vaWEuCldvdWxkIGEgQlVHX09OKCEoZW5j YXAgJiYgaW5fZW5jYXApKSBiZSBiZXR0ZXI/Cgo+ID4gKyAgICAgICAgICAgICAgIC8qIFRoZXJl IGFyZSAzIFZMQU4gdGFncywgd2UgZG9uJ3Qga25vdyBhbnl0aGluZyBhYm91dCB0aGUgcmVzdCBv ZiB0aGUKPiA+ICsgICAgICAgICAgICAgICAgKiBwYWNrZXQsIHNvIHRydW5jYXRlIGhlcmUuCj4g PiArICAgICAgICAgICAgICAgICovCj4gPiArICAgICAgICAgICAgICAgaWYgKG5sYV9wdXRfYmUx Nihza2IsIE9WU19LRVlfQVRUUl9FVEhFUlRZUEUsIG91dHB1dC0+ZXRoLnR5cGUpKQo+IAo+IEFm dGVyIHRoaXMgb3V0cHV0LT5ldGgudHlwZSB3b3VsZCBiZSBzZXJpYWxpemVkIHRocmVlIHRpbWVz LCBjYW4geW91Cj4gbW92ZSB0aGUgY2hlY2sgZm9yIHRoaXJkIHZsYW4gdGFnIGFmdGVyIGl0IGlz IHNlcmlhbGl6ZWQgc28gYXMgdG8KPiBhdm9pZCBpdC4KPiAKCldpbGwgZG8uCgo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgZ290byBubGFfcHV0X2ZhaWx1cmU7Cj4gPiArICAgICAgICAgICAg ICAgZ290byB1bmVuY2FwOwo+ID4gKyAgICAgICB9Cj4gPgo+ID4gICAgICAgICBpZiAoc3drZXkt PmV0aC50eXBlID09IGh0b25zKEVUSF9QXzgwMl8yKSkgewo+ID4gICAgICAgICAgICAgICAgIC8q Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRldiBtYWls aW5nIGxpc3QKZGV2QG9wZW52c3dpdGNoLm9yZwpodHRwOi8vb3BlbnZzd2l0Y2gub3JnL21haWxt YW4vbGlzdGluZm8vZGV2Cg==