From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas F Herbert Subject: Re: [PATCH net-next V16 3/3] openvswitch: 802.1AD: Flow handling, actions, vlan parsing and netlink attributes Date: Thu, 15 Oct 2015 19:48:08 -0400 Message-ID: <56203B38.2040806@gmail.com> References: <1444917715-27093-1-git-send-email-thomasfherbert@gmail.com> <1444917715-27093-4-git-send-email-thomasfherbert@gmail.com> Reply-To: thomasfherbert-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Cc: "dev-yBygre7rU0TnMu66kgdUjQ@public.gmane.org" , netdev , therbert-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org To: Pravin Shelar Return-path: 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 T24gMTAvMTUvMTUgNzowMiBQTSwgUHJhdmluIFNoZWxhciB3cm90ZToKVGhhbmtzIGZvciB0aGUg cmV2aWV3LiBTZWUgbXkgY29tbWVudCBiZWxvdy4KCi0tVEZICgo+IE9uIFRodSwgT2N0IDE1LCAy MDE1IGF0IDc6MDEgQU0sIFRob21hcyBGIEhlcmJlcnQKPiA8dGhvbWFzZmhlcmJlcnRAZ21haWwu Y29tPiB3cm90ZToKPj4gQWRkIHN1cHBvcnQgZm9yIDgwMi4xYWQgaW5jbHVkaW5nIHRoZSBhYmls aXR5IHRvIHB1c2ggYW5kIHBvcCBkb3VibGUKPj4gdGFnZ2VkIHZsYW5zLiBBZGQgc3VwcG9ydCBm b3IgODAyLjFhZCB0byBuZXRsaW5rIHBhcnNpbmcgYW5kIGZsb3cKPj4gY29udmVyc2lvbi4gVXNl cyBkb3VibGUgbmVzdGVkIGVuY2FwIGF0dHJpYnV0ZXMgdG8gcmVwcmVzZW50IGRvdWJsZQo+PiB0 YWdnZWQgdmxhbi4gSW5uZXIgVFBJRCBlbmNvZGVkIGFsb25nIHdpdGggY3RjaSBpbiBuZXN0ZWQg YXR0cmlidXRlcy4KPj4KPj4gU2lnbmVkLW9mZi1ieTogVGhvbWFzIEYgSGVyYmVydCA8dGhvbWFz ZmhlcmJlcnRAZ21haWwuY29tPgo+PiAtLS0KPj4gICBuZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5j ICAgICAgfCAgIDYgKy0KPj4gICBuZXQvb3BlbnZzd2l0Y2gvZmxvdy5jICAgICAgICAgfCAgNzUg KysrKysrKysrKysrKystLS0tCj4+ICAgbmV0L29wZW52c3dpdGNoL2Zsb3cuaCAgICAgICAgIHwg ICA4ICstCj4+ICAgbmV0L29wZW52c3dpdGNoL2Zsb3dfbmV0bGluay5jIHwgMTY5ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tCj4+ICAgbmV0L29wZW52c3dpdGNoL3Zw b3J0LW5ldGRldi5jIHwgICA0ICstCj4+ICAgNSBmaWxlcyBjaGFuZ2VkLCAyMjggaW5zZXJ0aW9u cygrKSwgMzQgZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYgLS1naXQgYS9uZXQvb3BlbnZzd2l0Y2gv YWN0aW9ucy5jIGIvbmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYwo+PiBpbmRleCAzMTVmNTMzLi4w OWNjMWM5IDEwMDY0NAo+PiAtLS0gYS9uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jCj4+ICsrKyBi L25ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMKPj4gQEAgLTIzNiw3ICsyMzYsOCBAQCBzdGF0aWMg aW50IHBvcF92bGFuKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzd19mbG93X2tleSAqa2V5 KQo+PiAgICAgICAgICBpZiAoc2tiX3ZsYW5fdGFnX3ByZXNlbnQoc2tiKSkKPj4gICAgICAgICAg ICAgICAgICBpbnZhbGlkYXRlX2Zsb3dfa2V5KGtleSk7Cj4+ICAgICAgICAgIGVsc2UKPj4gLSAg ICAgICAgICAgICAgIGtleS0+ZXRoLnRjaSA9IDA7Cj4+ICsgICAgICAgICAgICAgICBrZXktPmV0 aC52bGFuLnRjaSA9IDA7Cj4+ICsgICAgICAgICAgICAgICBrZXktPmV0aC52bGFuLnRwaWQgPSAw Owo+PiAgICAgICAgICByZXR1cm4gZXJyOwo+PiAgIH0KPj4KPj4gQEAgLTI0Niw3ICsyNDcsOCBA QCBzdGF0aWMgaW50IHB1c2hfdmxhbihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgc3dfZmxv d19rZXkgKmtleSwKPj4gICAgICAgICAgaWYgKHNrYl92bGFuX3RhZ19wcmVzZW50KHNrYikpCj4+ ICAgICAgICAgICAgICAgICAgaW52YWxpZGF0ZV9mbG93X2tleShrZXkpOwo+PiAgICAgICAgICBl bHNlCj4+IC0gICAgICAgICAgICAgICBrZXktPmV0aC50Y2kgPSB2bGFuLT52bGFuX3RjaTsKPj4g KyAgICAgICAgICAgICAgIGtleS0+ZXRoLnZsYW4udGNpID0gdmxhbi0+dmxhbl90Y2k7Cj4+ICsg ICAgICAgICAgICAgICBrZXktPmV0aC52bGFuLnRwaWQgPSB2bGFuLT52bGFuX3RwaWQ7Cj4+ICAg ICAgICAgIHJldHVybiBza2Jfdmxhbl9wdXNoKHNrYiwgdmxhbi0+dmxhbl90cGlkLAo+PiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBudG9ocyh2bGFuLT52bGFuX3RjaSkgJiB+VkxBTl9U QUdfUFJFU0VOVCk7Cj4+ICAgfQo+PiBkaWZmIC0tZ2l0IGEvbmV0L29wZW52c3dpdGNoL2Zsb3cu YyBiL25ldC9vcGVudnN3aXRjaC9mbG93LmMKPj4gaW5kZXggYzhkYjQ0YS4uOGE0ZTI5OCAxMDA2 NDQKPj4gLS0tIGEvbmV0L29wZW52c3dpdGNoL2Zsb3cuYwo+PiArKysgYi9uZXQvb3BlbnZzd2l0 Y2gvZmxvdy5jCj4+IEBAIC0zMDIsMjQgKzMwMiw2OSBAQCBzdGF0aWMgYm9vbCBpY21wNmhkcl9v ayhzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNpemVvZihzdHJ1Y3QgaWNtcDZoZHIpKTsKPj4gICB9Cj4+Cj4+IC1zdGF0aWMgaW50IHBh cnNlX3ZsYW4oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHN3X2Zsb3dfa2V5ICprZXkpCj4+ ICtzdHJ1Y3QgcXRhZ19wcmVmaXggewo+PiArICAgICAgIF9fYmUxNiBldGhfdHlwZTsgLyogRVRI X1BfODAyMVEgIG9yIEVUSF9QXzgwMjFBRCAqLwo+PiArICAgICAgIF9fYmUxNiB0Y2k7Cj4+ICt9 Owo+PiArCj4gTm93IHdlIGNhbiBqdXN0IHVzZSBuZXdseSBkZWZpbmVkIHN0cnVjdCB2bGFuX2hl YWRlciBoZXJlLgo+Cj4+ICsvKiBQYXJzZSB2bGFuIHRhZyBmcm9tIHZsYW4gaGVhZGVyLgo+PiAr ICogUmV0dXJucyBFUlJPUiBvbiBtZW1vcnkgZXJyb3IuCj4+ICsgKiBSZXR1cm5zIDAgaWYgaXQg ZW5jb3VudGVycyBhIG5vbi12bGFuIG9yIGluY29tcGxldGUgcGFja2V0Lgo+PiArICogUmV0dXJu cyAxIGFmdGVyIHN1Y2Nlc3NmdWxseSBwYXJzaW5nIHZsYW4gdGFnLgo+PiArICovCj4+ICsKPj4g K3N0YXRpYyBpbnQgcGFyc2Vfdmxhbl90YWcoc3RydWN0IHNrX2J1ZmYgKnNrYiwgX19iZTE2IHZs YW5fcHJvdG8sCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgX19iZTE2IHZsYW5fdGNpLCBz dHJ1Y3Qgdmxhbl9oZWFkICp2bGFuKQo+PiAgIHsKPj4gLSAgICAgICBzdHJ1Y3QgcXRhZ19wcmVm aXggewo+PiAtICAgICAgICAgICAgICAgX19iZTE2IGV0aF90eXBlOyAvKiBFVEhfUF84MDIxUSAq Lwo+PiAtICAgICAgICAgICAgICAgX19iZTE2IHRjaTsKPj4gLSAgICAgICB9Owo+PiAtICAgICAg IHN0cnVjdCBxdGFnX3ByZWZpeCAqcXA7Cj4+ICsgICAgICAgaWYgKGxpa2VseSghZXRoX3R5cGVf dmxhbih2bGFuX3Byb3RvKSkpCj4+ICsgICAgICAgICAgICAgICByZXR1cm4gMDsKPj4KPj4gICAg ICAgICAgaWYgKHVubGlrZWx5KHNrYi0+bGVuIDwgc2l6ZW9mKHN0cnVjdCBxdGFnX3ByZWZpeCkg KyBzaXplb2YoX19iZTE2KSkpCj4+ICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4+Cj4+ICAg ICAgICAgIGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIHNpemVvZihzdHJ1Y3QgcXRh Z19wcmVmaXgpICsKPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz aXplb2YoX19iZTE2KSkpKQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl b2YoX19iZTE2KSkpKQo+PiAgICAgICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOwo+Pgo+PiAt ICAgICAgIHFwID0gKHN0cnVjdCBxdGFnX3ByZWZpeCAqKSBza2ItPmRhdGE7Cj4+IC0gICAgICAg a2V5LT5ldGgudGNpID0gcXAtPnRjaSB8IGh0b25zKFZMQU5fVEFHX1BSRVNFTlQpOwo+PiArICAg ICAgIHZsYW4tPnRjaSA9IHZsYW5fdGNpIHwgaHRvbnMoVkxBTl9UQUdfUFJFU0VOVCk7Cj4+ICsg ICAgICAgdmxhbi0+dHBpZCA9IHZsYW5fcHJvdG87Cj4+ICsKPj4gICAgICAgICAgX19za2JfcHVs bChza2IsIHNpemVvZihzdHJ1Y3QgcXRhZ19wcmVmaXgpKTsKPj4gKyAgICAgICByZXR1cm4gMTsK Pj4gK30KPj4gKwo+PiArc3RhdGljIGludCBwYXJzZV92bGFuKHN0cnVjdCBza19idWZmICpza2Is IHN0cnVjdCBzd19mbG93X2tleSAqa2V5KQo+PiArewo+PiArICAgICAgIHN0cnVjdCBxdGFnX3By ZWZpeCAqcXAgPSAoc3RydWN0IHF0YWdfcHJlZml4ICopc2tiLT5kYXRhOwo+PiArICAgICAgIGlu dCByZXM7Cj4+ICsKPj4gKyAgICAgICBpZiAobGlrZWx5KHNrYl92bGFuX3RhZ19wcmVzZW50KHNr YikpKSB7Cj4+ICsgICAgICAgICAgICAgICBrZXktPmV0aC52bGFuLnRjaSA9IGh0b25zKHNrYi0+ dmxhbl90Y2kpOwo+PiArICAgICAgICAgICAgICAga2V5LT5ldGgudmxhbi50cGlkID0gc2tiLT52 bGFuX3Byb3RvOwo+PiArCj4+ICsgICAgICAgICAgICAgICAvKiBDYXNlIHdoZXJlIGluZ3Jlc3Mg cHJvY2Vzc2luZyBoYXMgYWxyZWFkeSBzdHJpcHBlZAo+PiArICAgICAgICAgICAgICAgICogdGhl IG91dGVyIHZsYW4gdGFnLgo+PiArICAgICAgICAgICAgICAgICovCj4+ICsgICAgICAgICAgICAg ICByZXMgPSBwYXJzZV92bGFuX3RhZyhza2IsIHFwLT5ldGhfdHlwZSwgcXAtPnRjaSwKPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZrZXktPmV0aC5jdmxhbik7Cj4+ICsg ICAgICAgICAgICAgICBpZiAocmVzIDwgMCkKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIHJlczsKPj4gKyAgICAgICAgICAgICAgIC8qIEZvciBpbm5lciB0YWcsIHJldHVybiAwIGJl Y2F1c2UgbmVpdGhlcgo+PiArICAgICAgICAgICAgICAgICogbm9uLWV4aXN0YW50IG5vciBwYXJ0 aWFsIGlubmVyIHRhZyBpcyBhbiBlcnJvci4KPj4gKyAgICAgICAgICAgICAgICAqLwo+PiArICAg ICAgICAgICAgICAgcmV0dXJuIDA7Cj4+ICsgICAgICAgfQo+PiArICAgICAgIHJlcyA9IHBhcnNl X3ZsYW5fdGFnKHNrYiwgcXAtPmV0aF90eXBlLCBxcC0+dGNpLCAma2V5LT5ldGgudmxhbik7Cj4+ ICsgICAgICAgaWYgKHJlcyA8PSAwKQo+PiArICAgICAgICAgICAgICAgLyogVGhpcyBpcyBhbiBv dXRlciB0YWcgaW4gdGhlIG5vbi1hY2NlbGVyYXRlZCBWTEFOCj4+ICsgICAgICAgICAgICAgICAg KiBjYXNlLiBSZXR1cm4gZXJyb3IgdW5sZXNzIGl0IGlzIGEgY29tcGxldGUgdmxhbiB0YWcuCj4+ ICsgICAgICAgICAgICAgICAgKi8KPj4gKyAgICAgICAgICAgICAgIHJldHVybiByZXM7Cj4+ICsK Pj4gKyAgICAgICAvKiBQYXJzZSBpbm5lciB2bGFuIHRhZyBpZiBwcmVzZW50IGZvciBub24tYWNj ZWxlcmF0ZWQgY2FzZS4gKi8KPj4gKyAgICAgICByZXMgPSBwYXJzZV92bGFuX3RhZyhza2IsIHFw LT5ldGhfdHlwZSwgcXAtPnRjaSwgJmtleS0+ZXRoLmN2bGFuKTsKPj4gKyAgICAgICBpZiAocmVz IDw9IDApCj4+ICsgICAgICAgICAgICAgICByZXR1cm4gcmVzOwo+Pgo+IHNhbWUgcXAgcG9pbnRl ciBpcyBwYXNzZWQgZm9yIGlubmVyIGFuZCBvdXRlciB2bGFuIHBhcmFtZXRlcnMgaGVyZS4gSXQK PiBpcyBiZXR0ZXIgdG8ganVzdCBwYXNzIHNrYiBhbmQga2VlcCBxcCBpbnNpZGUgcGFyc2Vfdmxh bl90YWcoKQo+IGZ1bmN0aW9uLgo+Cj4+ICAgICAgICAgIHJldHVybiAwOwo+PiAgIH0KPj4gQEAg LTQ4MCwxMiArNTI1LDEyIEBAIHN0YXRpYyBpbnQga2V5X2V4dHJhY3Qoc3RydWN0IHNrX2J1ZmYg KnNrYiwgc3RydWN0IHN3X2Zsb3dfa2V5ICprZXkpCj4+ICAgICAgICAgICAqIHVwZGF0ZSBza2It PmNzdW0gaGVyZS4KPj4gICAgICAgICAgICovCj4+Cj4+IC0gICAgICAga2V5LT5ldGgudGNpID0g MDsKPj4gLSAgICAgICBpZiAoc2tiX3ZsYW5fdGFnX3ByZXNlbnQoc2tiKSkKPj4gLSAgICAgICAg ICAgICAgIGtleS0+ZXRoLnRjaSA9IGh0b25zKHNrYi0+dmxhbl90Y2kpOwo+PiAtICAgICAgIGVs c2UgaWYgKGV0aC0+aF9wcm90byA9PSBodG9ucyhFVEhfUF84MDIxUSkpCj4+IC0gICAgICAgICAg ICAgICBpZiAodW5saWtlbHkocGFyc2Vfdmxhbihza2IsIGtleSkpKQo+PiAtICAgICAgICAgICAg ICAgICAgICAgICByZXR1cm4gLUVOT01FTTsKPj4gKyAgICAgICBrZXktPmV0aC52bGFuLnRjaSA9 IDA7Cj4+ICsgICAgICAga2V5LT5ldGgudmxhbi50cGlkID0gMDsKPj4gKyAgICAgICBrZXktPmV0 aC5jdmxhbi50Y2kgPSAwOwo+PiArICAgICAgIGtleS0+ZXRoLmN2bGFuLnRwaWQgPSAwOwo+IExl dHMgbW92ZSB0aGlzIG92ZXIgdG8gcGFyc2VfdmxhbigpLgo+Cj4+ICsgICAgICAgaWYgKHVubGlr ZWx5KHBhcnNlX3ZsYW4oc2tiLCBrZXkpKSkKPj4gKyAgICAgICAgICAgICAgIHJldHVybiAtRU5P TUVNOwo+Pgo+PiAgICAgICAgICBrZXktPmV0aC50eXBlID0gcGFyc2VfZXRoZXJ0eXBlKHNrYik7 Cj4+ICAgICAgICAgIGlmICh1bmxpa2VseShrZXktPmV0aC50eXBlID09IGh0b25zKDApKSkKPj4g ZGlmZiAtLWdpdCBhL25ldC9vcGVudnN3aXRjaC9mbG93X25ldGxpbmsuYyBiL25ldC9vcGVudnN3 aXRjaC9mbG93X25ldGxpbmsuYwo+PiBpbmRleCBjOTJkNmEyLi41Y2ZmODNjIDEwMDY0NAo+PiAt LS0gYS9uZXQvb3BlbnZzd2l0Y2gvZmxvd19uZXRsaW5rLmMKPj4gKysrIGIvbmV0L29wZW52c3dp dGNoL2Zsb3dfbmV0bGluay5jCj4gLi4uCj4KPgo+PiAgIHN0YXRpYyBpbnQgb3ZzX2tleV9mcm9t X25sYXR0cnMoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc3dfZmxvd19tYXRjaCAqbWF0Y2gsCj4+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU2NCBhdHRycywgY29uc3Qgc3RydWN0 IG5sYXR0ciAqKmEsCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNf bWFzaywgYm9vbCBsb2cpCj4+IEBAIC04NDUsNyArODc1LDcgQEAgc3RhdGljIGludCBvdnNfa2V5 X2Zyb21fbmxhdHRycyhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzd19mbG93X21hdGNoICptYXRj aCwKPj4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+PiAgICAgICAg ICAgICAgICAgIH0KPj4KPj4gLSAgICAgICAgICAgICAgIFNXX0ZMT1dfS0VZX1BVVChtYXRjaCwg ZXRoLnRjaSwgdGNpLCBpc19tYXNrKTsKPj4gKyAgICAgICAgICAgICAgIFNXX0ZMT1dfS0VZX1BV VChtYXRjaCwgZXRoLnZsYW4udGNpLCB0Y2ksIGlzX21hc2spOwo+PiAgICAgICAgICAgICAgICAg IGF0dHJzICY9IH4oMSA8PCBPVlNfS0VZX0FUVFJfVkxBTik7Cj4+ICAgICAgICAgIH0KPj4KPj4g QEAgLTEwNjQsNiArMTA5NCw4NiBAQCBzdGF0aWMgdm9pZCBtYXNrX3NldF9ubGF0dHIoc3RydWN0 IG5sYXR0ciAqYXR0ciwgdTggdmFsKQo+PiAgICAgICAgICBubGF0dHJfc2V0KGF0dHIsIHZhbCwg b3ZzX2tleV9sZW5zKTsKPj4gICB9Cj4+Cj4+ICtzdGF0aWMgaW50IHBhcnNlX3ZsYW5fZnJvbV9u bGF0dHJzKGNvbnN0IHN0cnVjdCBubGF0dHIgKipubGEsCj4+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IHN3X2Zsb3dfbWF0Y2ggKm1hdGNoLAo+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHU2NCAqa2V5X2F0dHJzLCBib29sICppZV92YWxpZCwK Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgbmxhdHRy ICoqYSwgYm9vbCBpc19tYXNrLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGJvb2wgbG9nKQo+PiArewo+PiArICAgICAgIGludCBlcnI7Cj4+ICsgICAgICAgY29uc3Qgc3Ry dWN0IG5sYXR0ciAqZW5jYXA7Cj4+ICsKPj4gKyAgICAgICBpZiAoIWlzX21hc2spIHsKPj4gKyAg ICAgICAgICAgICAgIHU2NCB2X2F0dHJzID0gMDsKPj4gKwo+IGF0dHJpYnV0ZXMgZG9lcyBub3Qg bmVlZCA2NCBiaXRzLCAzMiBiaXRzIGFyZSBzdWZmaWNpZW50LgpZZXMsIHRoZXJlIGNlcnRhaW5s eSBub3QgbW9yZSB0aGVuIDMyIGF0dHJpYnV0ZXMgaW4gdGhpcyBsYXllciBvZiAKbmVzdGluZyBi dXQgaW4gdGhlIHBhcnNlX2Zsb3dfbmxhdHRycygpICBmdW5jdGlvbiBhcmd1bWVudCAzIGlzIGEg dTY0ICoKRG9uJ3QgeW91IHRoaW5rIHRoaXMgbWlnaHQgYmUgZGFuZ2Vyb3VzPyBNYXliZSBhcmUg eW91IHNheWluZyB0aGF0IEkgCnNob3VsZCByZXdyaXRlIHRoYXQgZ2VuZXJpYyBmdW5jdGlvbiB0 byBvbmx5IHN1cHBvcnQgYSBtYXhpbXVtIG9mIDMyIApuZXRsaW5rIGF0dHJpYnV0ZXMgcGVyIGxl dmVsIG9mIG5lc3RpbmcuIFRoZSBjdXJyZW50IE9WUyBrZXJuZWwgbW9kdWxlIAppcyBvcHRpbWl6 ZWQgZm9yIDY0IGJpdCBhcmNoaXRlY3R1cmVzIHdoZXJlIHRoZXJlIGlzIG5vIGV4dHJhIGNvc3Qg Zm9yIGEgCjY0IGJpdCB2YWx1ZSBhbmQgSSB0aGluayB3aGF0IHlvdSBhcmUgc3VnZ2VzdGluZyBt aWdodCBnbyBiZXlvbmQgdGhlIApzY29wZSBvZiB0aGlzIHBhdGNoLiBJZiBpdCBpcyBhIGdvb2Qg aWRlYSwgc2hvdWxkbid0IGl0IGJlIGNvbnNpZGVyZWQgCmZvciBhIHNlcGFyYXRlIHBhdGNoPwoK LS1URkgKPj4gKyAgICAgICAgICAgICAgIGVyciA9IHBhcnNlX2Zsb3dfbmxhdHRycygqbmxhLCBh LCAmdl9hdHRycywgbG9nKTsKPj4gKyAgICAgICAgICAgICAgIGlmIChlcnIpCj4+ICsgICAgICAg ICAgICAgICAgICAgICAgIHJldHVybiBlcnI7Cj4+ICsgICAgICAgICAgICAgICAvKiBBbm90aGVy IGVuY2FwIGF0dHJpYnV0ZSBoZXJlIGluZGljYXRlcwo+PiArICAgICAgICAgICAgICAgICogdGhl IHByZXNlbmNlIG9mIGEgZG91YmxlIHRhZ2dlZCB2bGFuLgo+PiArICAgICAgICAgICAgICAgICov Cj4+ICsgICAgICAgICAgICAgICBpZiAoKHZfYXR0cnMgJiAoMSA8PCBPVlNfS0VZX0FUVFJfRVRI RVJUWVBFKSkgJiYKPj4gKyAgICAgICAgICAgICAgICAgICBldGhfdHlwZV92bGFuKG5sYV9nZXRf YmUxNihhW09WU19LRVlfQVRUUl9FVEhFUlRZUEVdKSkpIHsKPj4gKyAgICAgICAgICAgICAgICAg ICAgICAgaWYgKCEoKHZfYXR0cnMgJiAoMVVMTCA8PCBPVlNfS0VZX0FUVFJfVkxBTikpICYmCj4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2X2F0dHJzICYgKDFVTEwgPDwgT1ZTX0tF WV9BVFRSX0VOQ0FQKSkpKSB7Cj4gQWZ0ZXIgY2hhbmdpbmcgdl9hdHRycyB0eXBlLCB0aGVyZSBp cyBubyBuZWVkIHRvIHVzZSAxVUxMLgpTZWUgcmVtYXJrIGFib3ZlLgo+Cj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgT1ZTX05MRVJSKGxvZywgIkludmFsaWQgSW5uZXIgVkxBTiBm cmFtZSIpOwo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFM Owo+PiArICAgICAgICAgICAgICAgICAgICAgICB9Cj4+ICsgICAgICAgICAgICAgICAgICAgICAg IGVuY2FwID0gYVtPVlNfS0VZX0FUVFJfRU5DQVBdOwo+PiArCj4+ICsgICAgICAgICAgICAgICAg ICAgICAgIGVyciA9IGN1c3Rfdmxhbl9mcm9tX25sYXR0cnMobWF0Y2gsIGEsIGlzX21hc2ssIGxv Zyk7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnIpCj4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycjsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAg KmllX3ZhbGlkID0gdHJ1ZTsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgKm5sYSA9IGVuY2Fw Owo+PiArCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIC8qIEluc3VyZSB0aGF0IHRjaSBrZXkg YXR0cmlidXRlIGlzbid0Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAqIG92ZXJ3cml0dGVu IGJ5IGVuY2Fwc3VsYXRlZCBjdXN0b21lciB0Y2kuCj4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAqIEV0aGVydHlwZSBpcyBjbGVhcmVkIGJlY2F1c2UgaXQgaXMgY190cGlkLgo+PiArICAgICAg ICAgICAgICAgICAgICAgICAgKi8KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgdl9hdHRycyAm PSB+KDEgPDwgT1ZTX0tFWV9BVFRSX0VOQ0FQKTsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAg dl9hdHRycyAmPSB+KDEgPDwgT1ZTX0tFWV9BVFRSX1ZMQU4pOwo+PiArICAgICAgICAgICAgICAg ICAgICAgICB2X2F0dHJzICY9IH4oMSA8PCBPVlNfS0VZX0FUVFJfRVRIRVJUWVBFKTsKPj4gKwo+ PiArICAgICAgICAgICAgICAgICAgICAgICAqa2V5X2F0dHJzIHw9IHZfYXR0cnM7Cj4+ICsgICAg ICAgICAgICAgICAgICAgICAgIGVyciA9IHBhcnNlX2Zsb3dfbmxhdHRycygqbmxhLCBhLCBrZXlf YXR0cnMsIGxvZyk7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnIpCj4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycjsKPj4gKyAgICAgICAgICAgICAg IH0KPiBBcGFydCBmcm9tIHRoZSBjaGVjayBmb3IgdmxhbiBhbmQgZW5jYXAgYXR0cmlidXRlLCB0 aGlzIHdob2xlIGJsb2NrCj4gbG9va3MgcHJldHR5IG11Y2ggc2FtZSBmb3Iga2V5IGFuZCBtYXNr IGF0dHJpYnV0ZS4gQ2FuIHlvdSBkZWZpbmUKPiBhbm90aGVyIGZ1bmN0aW9uIHRvIGZhY3RvciBv dXQgdGhpcyBjb2RlLgo+Cj4+ICsKPj4gKyAgICAgICB9IGVsc2Ugewo+PiArICAgICAgICAgICAg ICAgdTY0IG1hc2tfdl9hdHRycyA9IDA7Cj4+ICsKPiBzYW1lIGFzIGFib3ZlIG1hc2tfdl9hdHRy cyBkb2VzIG5vdCBuZWVkIDY0IGJpdHMsIHUzMiBpcyBmaW5lIGhlcmUuCkFnYWluLCBzZWUgcmVt YXJrIGFib3ZlLiBJbiB0aGUgZnVuY3Rpb24gYmVsb3csIHRoZSAzcmQgYXJndW1lbnQgaXMgYSB1 NjQgKi4KPgo+PiArICAgICAgICAgICAgICAgZXJyID0gcGFyc2VfZmxvd19tYXNrX25sYXR0cnMo Km5sYSwgYSwgJm1hc2tfdl9hdHRycywgbG9nKTsKPj4gKyAgICAgICAgICAgICAgIGlmIChlcnIp Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnI7Cj4+ICsKPj4gKyAgICAgICAg ICAgICAgIGlmIChtYXNrX3ZfYXR0cnMgJiAxIDw8IE9WU19LRVlfQVRUUl9FTkNBUCkgewo+PiAr ICAgICAgICAgICAgICAgICAgICAgICBpZiAoISppZV92YWxpZCkgewo+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE9WU19OTEVSUihsb2csICJFbmNhcCBtYXNrIGF0dHJpYnV0ZSBp cyBzZXQgZm9yIG5vbi1DVkxBTiBmcmFtZS4iKTsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBlcnIgPSAtRUlOVkFMOwo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHJldHVybiBlcnI7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIH0KPj4gKyAgICAgICAgICAg ICAgICAgICAgICAgZW5jYXAgPSBhW09WU19LRVlfQVRUUl9FTkNBUF07Cj4+ICsKPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgZXJyID0gY3VzdF92bGFuX2Zyb21fbmxhdHRycyhtYXRjaCwgYSwg aXNfbWFzaywgbG9nKTsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVycikKPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyOwo+PiArICAgICAgICAgICAg ICAgICAgICAgICAqbmxhID0gZW5jYXA7Cj4+ICsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAg bWFza192X2F0dHJzICY9IH4oMSA8PCBPVlNfS0VZX0FUVFJfRU5DQVApOwo+PiArICAgICAgICAg ICAgICAgICAgICAgICBtYXNrX3ZfYXR0cnMgJj0gfigxVUxMIDw8IE9WU19LRVlfQVRUUl9WTEFO KTsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgbWFza192X2F0dHJzICY9IH4oMVVMTCA8PCBP VlNfS0VZX0FUVFJfRVRIRVJUWVBFKTsKPj4gKwo+IEFmdGVyIGNoYW5naW5nIHRoZSB0eXBlLCB0 aGVyZSBpcyBubyBuZWVkIHRvIHVzZSAxVUxMLgo+Cj4+ICsgICAgICAgICAgICAgICAgICAgICAg ICprZXlfYXR0cnMgfD0gbWFza192X2F0dHJzOwo+PiArICAgICAgICAgICAgICAgICAgICAgICBl cnIgPSBwYXJzZV9mbG93X21hc2tfbmxhdHRycygqbmxhLCBhLCBrZXlfYXR0cnMsIGxvZyk7Cj4+ ICsgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnIpCj4+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcmV0dXJuIGVycjsKPj4gKyAgICAgICAgICAgICAgIH0KPj4gKyAgICAgICB9 Cj4+ICsgICAgICAgcmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gICAvKioKPj4gICAgKiBvdnNfbmxh X2dldF9tYXRjaCAtIHBhcnNlcyBOZXRsaW5rIGF0dHJpYnV0ZXMgaW50byBhIGZsb3cga2V5IGFu ZAo+PiAgICAqIG1hc2suIEluIGNhc2UgdGhlICdtYXNrJyBpcyBOVUxMLCB0aGUgZmxvdyBpcyB0 cmVhdGVkIGFzIGV4YWN0IG1hdGNoCj4gLi4uCj4KPj4gQEAgLTEzMjAsNiArMTQzNyw3IEBAIHN0 YXRpYyBpbnQgX19vdnNfbmxhX3B1dF9rZXkoY29uc3Qgc3RydWN0IHN3X2Zsb3dfa2V5ICpzd2tl eSwKPj4gICB7Cj4+ICAgICAgICAgIHN0cnVjdCBvdnNfa2V5X2V0aGVybmV0ICpldGhfa2V5Owo+ PiAgICAgICAgICBzdHJ1Y3QgbmxhdHRyICpubGEsICplbmNhcDsKPj4gKyAgICAgICBzdHJ1Y3Qg bmxhdHRyICppbl9lbmNhcCA9IE5VTEw7Cj4+Cj4+ICAgICAgICAgIGlmIChubGFfcHV0X3UzMihz a2IsIE9WU19LRVlfQVRUUl9SRUNJUkNfSUQsIG91dHB1dC0+cmVjaXJjX2lkKSkKPj4gICAgICAg ICAgICAgICAgICBnb3RvIG5sYV9wdXRfZmFpbHVyZTsKPj4gQEAgLTEzNjgsMTcgKzE0ODYsMzYg QEAgc3RhdGljIGludCBfX292c19ubGFfcHV0X2tleShjb25zdCBzdHJ1Y3Qgc3dfZmxvd19rZXkg KnN3a2V5LAo+PiAgICAgICAgICBldGhlcl9hZGRyX2NvcHkoZXRoX2tleS0+ZXRoX3NyYywgb3V0 cHV0LT5ldGguc3JjKTsKPj4gICAgICAgICAgZXRoZXJfYWRkcl9jb3B5KGV0aF9rZXktPmV0aF9k c3QsIG91dHB1dC0+ZXRoLmRzdCk7Cj4+Cj4+IC0gICAgICAgaWYgKHN3a2V5LT5ldGgudGNpIHx8 IHN3a2V5LT5ldGgudHlwZSA9PSBodG9ucyhFVEhfUF84MDIxUSkpIHsKPj4gKyAgICAgICBpZiAo c3drZXktPmV0aC52bGFuLnRjaSB8fCBldGhfdHlwZV92bGFuKHN3a2V5LT5ldGgudHlwZSkpIHsK Pj4gICAgICAgICAgICAgICAgICBfX2JlMTYgZXRoX3R5cGU7Cj4+IC0gICAgICAgICAgICAgICBl dGhfdHlwZSA9ICFpc19tYXNrID8gaHRvbnMoRVRIX1BfODAyMVEpIDogaHRvbnMoMHhmZmZmKTsK Pj4gKwo+PiArICAgICAgICAgICAgICAgZXRoX3R5cGUgPSAhaXNfbWFzayA/IG91dHB1dC0+ZXRo LnZsYW4udHBpZCA6IGh0b25zKDB4ZmZmZik7Cj4+ICsKPiBTaW5jZSB0cGlkIG1hc2sgaXMgY2hl Y2tlZCBhdCBmbG93IGluc3RhbGwgdGltZSwgbGV0cyBqdXN0IHJldHVybgo+IG91dHB1dC0+ZXRo LnZsYW4udHBpZCBmb3IgbWFzayB0b28uCj4KPj4gICAgICAgICAgICAgICAgICBpZiAobmxhX3B1 dF9iZTE2KHNrYiwgT1ZTX0tFWV9BVFRSX0VUSEVSVFlQRSwgZXRoX3R5cGUpIHx8Cj4+IC0gICAg ICAgICAgICAgICAgICAgbmxhX3B1dF9iZTE2KHNrYiwgT1ZTX0tFWV9BVFRSX1ZMQU4sIG91dHB1 dC0+ZXRoLnRjaSkpCj4+ICsgICAgICAgICAgICAgICAgICAgbmxhX3B1dF9iZTE2KHNrYiwgT1ZT X0tFWV9BVFRSX1ZMQU4sIG91dHB1dC0+ZXRoLnZsYW4udGNpKSkKPj4gICAgICAgICAgICAgICAg ICAgICAgICAgIGdvdG8gbmxhX3B1dF9mYWlsdXJlOwo+PiAgICAgICAgICAgICAgICAgIGVuY2Fw ID0gbmxhX25lc3Rfc3RhcnQoc2tiLCBPVlNfS0VZX0FUVFJfRU5DQVApOwo+PiAtICAgICAgICAg ICAgICAgaWYgKCFzd2tleS0+ZXRoLnRjaSkKPj4gKyAgICAgICAgICAgICAgIGlmICghc3drZXkt PmV0aC52bGFuLnRjaSkKPj4gICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gdW5lbmNhcDsK Pj4gLSAgICAgICB9IGVsc2UKPj4gKyAgICAgICAgICAgICAgIGlmIChzd2tleS0+ZXRoLmN2bGFu LnRjaSkgewo+PiArICAgICAgICAgICAgICAgICAgICAgICBfX2JlMTYgZXRoX3R5cGU7Cj4+ICsK Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgLyogQ3VzdG9tZXIgdGNpIGlzIG5lc3RlZCBidXQg dXNlcyBzYW1lIGtleSBhdHRyaWJ1dGUuCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAqLwo+ PiArICAgICAgICAgICAgICAgICAgICAgICBldGhfdHlwZSA9ICFpc19tYXNrID8gb3V0cHV0LT5l dGguY3ZsYW4udHBpZCA6Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBodG9ucygweGZmZmYpOwo+IHNhbWUgYXMgYWJvdmUsIExldHMganVzdCByZXR1cm4g b3V0cHV0LT5ldGguY3ZsYW4udHBpZCBldmVuIGZvciBtYXNrLgoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZGV2IG1haWxpbmcgbGlzdApkZXZAb3BlbnZz d2l0Y2gub3JnCmh0dHA6Ly9vcGVudnN3aXRjaC5vcmcvbWFpbG1hbi9saXN0aW5mby9kZXYK