From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas F Herbert Subject: Re: [PATCH net-next 3/3] openvswitch: 802.1AD: Flow handling, actions, and vlan parsing Date: Sun, 26 Jul 2015 10:33:08 -0400 Message-ID: <55B4EFA4.4070804@redhat.com> References: <1435083990-12986-1-git-send-email-thomasfherbert@gmail.com> <1435083990-12986-4-git-send-email-thomasfherbert@gmail.com> <55B42AB1.6080200@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Cc: dev-yBygre7rU0TnMu66kgdUjQ@public.gmane.org, netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org To: ravulakollu.kumar-uxC5H9eHYlcAvxtiuMwx3w@public.gmane.org, thomasfherbert-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, pshelar-l0M0P4e3n4LQT0dZR+AlfA@public.gmane.org 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 CgpPbiA3LzI2LzE1IDk6NTcgQU0sIHJhdnVsYWtvbGx1Lmt1bWFyQHdpcHJvLmNvbSB3cm90ZToK PiBIaSBUaG9tYXMsCj4KPiBJIGFtIGN1cnJlbnRseSB1c2luZyB0aGUgYmV0YSB2ZXJzaW9uIG9m IG92cygyLjMuOTApLiBJbiBteSBwaHktcGh5IHNjZW5hcmlvICAsIEkgYW0gY29uZmlndXJpbmcg dGhlIHR3byBwaHlzaWNhbCBwb3J0cyhldGgwLCBldGgxKSBhdHRhY2hlZCB0byBvdnMgYnJpZGdl Cj4gYXMgdHJ1bmsgcG9ydHMgdXNpbmcgdGhlIGJlbG93IGNvbW1hbmRzLgo+Cj4gb3ZzLXZzY3Rs IC0tbm8td2FpdCBhZGQtcG9ydCBicjAgZXRoMCB2bGFuX21vZGU9dHJ1bmsKPiBvdnMtdnNjdGwg LS1uby13YWl0IGFkZC1wb3J0IGJyMCBldGgxIHZsYW5fbW9kZT10cnVuawo+Cj4gSSBjb25maWd1 cmVkIHRoZSBicmlkZ2UgdG8gd29yayBpbiBsZWdhY3kgbW9kZSBhcyBzaG93biBiZWxvdwo+Cj4g JCBvdnMtb2ZjdGwgZHVtcC1mbG93cyBicjAKPiBOWFNUX0ZMT1cgcmVwbHkgKHhpZD0weDQpOgo+ IGNvb2tpZT0weDAsIGR1cmF0aW9uPTE1LjQ1OHMsIHRhYmxlPTAsIG5fcGFja2V0cz0wLCBuX2J5 dGVzPTAsIGlkbGVfYWdlPTE1LCBwcmlvcml0eT0wIGFjdGlvbnM9Tk9STUFMCj4KPiBJIHRyaWVk IHNlbmRpbmcgODAyLjFhZCB0YWdnZWQob3V0ZXIgdGFnIHRwaWQ9MHg4OGE4LCBpbnRlciB0YWcg dHBpZD1veDgxMDApIHBhY2tldCBmcm9tIHBhY2tldGdlbiB0byBwaHlwb3J0MSAoZXRoMCksIGFu ZCByZWNlaXZpbmcgYmFjayBvbiBwaHlwb3J0MihldGgyKS4KPiBXaGVuIEkgY2FwdHVyZWQgdGhl IHJlY2VpdmVkIHBhY2tldCBvbiBldGgxICwgdGhlIHJlY2VpdmVkIHBhY2tldCBpcyBub3Qgc2Ft ZSBhcyBzZW50IHBhY2tldCwgbWVhbnMgb3V0ZXIgdmxhbiBUUElEIGlzIG5vdCAweDg4YTgoaW5z dGVhZCAweDgxMDApLgo+ClRoaXMgcGF0Y2ggc3VwcG9ydHMgcHVzaGluZyBhbmQgcG9wcGluZyBv ZiBkb3VibGUgdGFnZ2VkIHZsYW5zLiBJdCAKc2hvdWxkbid0IGFmZmVjdCBkb3VibGUgdGFnZ2Vk IHRyYWZmaWMgZmxvd2luZyB0aHJvdWdoIHRoZSBzd2l0Y2ggdW5sZXNzIAp5b3VyIG92cyBicmlk Z2UgaGFzIGZsb3dzIHRvIHBvcCBvciBwdXNoIGEgdmxhbi4KCkFyZSB5b3UgdXNpbmcgdGNwZHVt cCB0byBsb29rIGF0IHRoZSBwYWNrZXRzPyBUaGVyZSBpcyBhIGJ1ZyBpbiBsaWJwY2FwIAp3aGVy ZSB0aGUgb3V0ZXIgVFBJRCBvZiBvdXRnb2luZyBwYWNrZXRzIGlzIG1pc3MtcmVwb3J0ZWQgYXMg MHg4MTAwIAp3aGV0aGVyIG9yIG5vdCB0aGUgdHBpZCBpcyBhY3R1YWxseSAweDg4YTgKCj4gQ291 bGQgeW91IHBsZWFzZSBsZXQgbWUga25vdyAsIHdoZXRoZXIgdGhlIGJlbG93IG1lbnRpb25lZCBw YXRjaCBoZWxwcyBoZXJlLgo+Cj4gVGhhbmtzIGluIEFkdmFuY2UsCj4gVWRheQo+Cj4gLS0tLS1P cmlnaW5hbCBNZXNzYWdlLS0tLS0KPiBGcm9tOiBkZXYgW21haWx0bzpkZXYtYm91bmNlc0BvcGVu dnN3aXRjaC5vcmddIE9uIEJlaGFsZiBPZiBUaG9tYXMgRiBIZXJiZXJ0Cj4gU2VudDogU3VuZGF5 LCBKdWx5IDI2LCAyMDE1IDY6MDMgQU0KPiBUbzogUHJhdmluIFNoZWxhcgo+IENjOiBkZXZAb3Bl bnZzd2l0Y2gub3JnOyBuZXRkZXY7IHRoZXJiZXJ0QHJlZGhhdC5jb20KPiBTdWJqZWN0OiBSZTog W292cy1kZXZdIFtQQVRDSCBuZXQtbmV4dCAzLzNdIG9wZW52c3dpdGNoOiA4MDIuMUFEOiBGbG93 IGhhbmRsaW5nLCBhY3Rpb25zLCBhbmQgdmxhbiBwYXJzaW5nCj4KPiBPbiA2LzMwLzE1IDEyOjE2 IEFNLCBQcmF2aW4gU2hlbGFyIHdyb3RlOgo+PiBPbiBUdWUsIEp1biAyMywgMjAxNSBhdCAxMToy NiBBTSwgVGhvbWFzIEYgSGVyYmVydAo+IFByYXZpbiwgSSBhcG9sb2dpemUgYmVjYXVzZSBJIHJl YWxpemUgbm93IHRoYXQgSSBhbSBmaW5pc2hpbmcgVjEyIG9mIHRoaXMgcGF0Y2ggdGhhdCBJIG5l dmVyIHJlc3BvbmRlZCB0byB5b3VyIGNvbW1lbnRzIGluIHRoaXMgZW1haWwuCj4+IDx0aG9tYXNm aGVyYmVydEBnbWFpbC5jb20+IHdyb3RlOgo+Pj4gQWRkIHN1cHBvcnQgZm9yIDgwMi4xYWQgaW5j bHVkaW5nIHRoZSBhYmlsaXR5IHRvIHB1c2ggYW5kIHBvcCBkb3VibGUKPj4+IHRhZ2dlZCB2bGFu cy4gQWRkIHN1cHBvcnQgZm9yIDgwMi4xYWQgdG8gbmV0bGluayBwYXJzaW5nIGFuZCBmbG93Cj4+ PiBjb252ZXJzaW9uLiBVc2VzIGRvdWJsZSBuZXN0ZWQgZW5jYXAgYXR0cmlidXRlcyB0byByZXBy ZXNlbnQgZG91YmxlCj4+PiB0YWdnZWQgdmxhbi4gSW5uZXIgVFBJRCBlbmNvZGVkIGFsb25nIHdp dGggY3RjaSBpbiBuZXN0ZWQgYXR0cmlidXRlcy4KPj4+Cj4+PiBTaWduZWQtb2ZmLWJ5OiBUaG9t YXMgRiBIZXJiZXJ0IDx0aG9tYXNmaGVyYmVydEBnbWFpbC5jb20+Cj4+PiAtLS0KPj4+ICAgIG5l dC9vcGVudnN3aXRjaC9mbG93LmMgICAgICAgICB8ICA4NCArKysrKysrKysrKysrKystLS0KPj4+ ICAgIG5ldC9vcGVudnN3aXRjaC9mbG93LmggICAgICAgICB8ICAgNSArKwo+Pj4gICAgbmV0L29w ZW52c3dpdGNoL2Zsb3dfbmV0bGluay5jIHwgMTk1ICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKystLS0tLS0tCj4+PiAgICAzIGZpbGVzIGNoYW5nZWQsIDI0MiBpbnNlcnRpb25zKCsp LCA0MiBkZWxldGlvbnMoLSkKPj4+Cj4+PiBkaWZmIC0tZ2l0IGEvbmV0L29wZW52c3dpdGNoL2Zs b3cuYyBiL25ldC9vcGVudnN3aXRjaC9mbG93LmMgaW5kZXgKPj4+IDJkYWNjN2IuLmUyNjg4NjUg MTAwNjQ0Cj4+PiAtLS0gYS9uZXQvb3BlbnZzd2l0Y2gvZmxvdy5jCj4+PiArKysgYi9uZXQvb3Bl bnZzd2l0Y2gvZmxvdy5jCj4+PiBAQCAtMjk4LDIxICsyOTgsODAgQEAgc3RhdGljIGJvb2wgaWNt cDZoZHJfb2soc3RydWN0IHNrX2J1ZmYgKnNrYikKPj4+ICAgIHN0YXRpYyBpbnQgcGFyc2Vfdmxh bihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgc3dfZmxvd19rZXkgKmtleSkKPj4+ICAgIHsK Pj4+ICAgICAgICAgICBzdHJ1Y3QgcXRhZ19wcmVmaXggewo+Pj4gLSAgICAgICAgICAgICAgIF9f YmUxNiBldGhfdHlwZTsgLyogRVRIX1BfODAyMVEgKi8KPj4+ICsgICAgICAgICAgICAgICBfX2Jl MTYgZXRoX3R5cGU7IC8qIEVUSF9QXzgwMjFRICBvciBFVEhfUF84MDIxQUQgKi8KPj4+ICAgICAg ICAgICAgICAgICAgIF9fYmUxNiB0Y2k7Cj4+PiAgICAgICAgICAgfTsKPj4+IC0gICAgICAgc3Ry dWN0IHF0YWdfcHJlZml4ICpxcDsKPj4+ICsgICAgICAgc3RydWN0IHF0YWdfcHJlZml4ICpxcCA9 IChzdHJ1Y3QgcXRhZ19wcmVmaXggKilza2ItPmRhdGE7Cj4+Pgo+Pj4gLSAgICAgICBpZiAodW5s aWtlbHkoc2tiLT5sZW4gPCBzaXplb2Yoc3RydWN0IHF0YWdfcHJlZml4KSArIHNpemVvZihfX2Jl MTYpKSkKPj4+ICsgICAgICAgc3RydWN0IHFpbnF0YWdfcHJlZml4IHsKPj4+ICsgICAgICAgICAg ICAgICBfX2JlMTYgZXRoX3R5cGU7IC8qIEVUSF9QXzgwMjFRICBvciBFVEhfUF84MDIxQUQgKi8K Pj4+ICsgICAgICAgICAgICAgICBfX2JlMTYgdGNpOwo+Pj4gKyAgICAgICAgICAgICAgIF9fYmUx NiBpbm5lcl90cGlkOyAvKiBFVEhfUF84MDIxUSAqLwo+Pj4gKyAgICAgICAgICAgICAgIF9fYmUx NiBjdGNpOwo+Pj4gKyAgICAgICB9Owo+Pj4gKwo+Pj4gKyAgICAgICBpZiAobGlrZWx5KHNrYl92 bGFuX3RhZ19wcmVzZW50KHNrYikpKSB7Cj4+PiArICAgICAgICAgICAgICAga2V5LT5ldGgudGNp ID0gaHRvbnMoc2tiLT52bGFuX3RjaSk7Cj4+PiArCj4+PiArICAgICAgICAgICAgICAgLyogQ2Fz ZSB3aGVyZSB1cHN0cmVhbQo+Pj4gKyAgICAgICAgICAgICAgICAqIHByb2Nlc3NpbmcgaGFzIGFs cmVhZHkgc3RyaXBwZWQgdGhlIG91dGVyIHZsYW4gdGFnLgo+Pj4gKyAgICAgICAgICAgICAgICAq Lwo+Pj4gKyAgICAgICAgICAgICAgIGlmICh1bmxpa2VseShza2ItPnZsYW5fcHJvdG8gPT0gaHRv bnMoRVRIX1BfODAyMUFEKSkpIHsKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmICh1bmxp a2VseShza2ItPmxlbiA8IHNpemVvZihzdHJ1Y3QgcXRhZ19wcmVmaXgpICsKPj4+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoX19iZTE2KSkpIHsKPj4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5LT5ldGgudGNpID0gMDsKPj4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4+PiArICAgICAgICAgICAgICAg ICAgICAgICB9Cj4+PiArCj4+PiArICAgICAgICAgICAgICAgICAgICAgICBpZiAodW5saWtlbHko IXBza2JfbWF5X3B1bGwoc2tiLAo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3QgcXRhZ19wcmVmaXgpICsKPj4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoX19i ZTE2KSkpKSB7Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRU5P TUVNOwo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgfQo+Pj4gKwo+Pj4gKyAgICAgICAgICAg ICAgICAgICAgICAgaWYgKGxpa2VseShxcC0+ZXRoX3R5cGUgPT0gaHRvbnMoRVRIX1BfODAyMVEp KSkgewo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXktPmV0aC5jdmxhbi5j dGNpID0KPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxcC0+dGNp IHwgaHRvbnMoVkxBTl9UQUdfUFJFU0VOVCk7Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGtleS0+ZXRoLmN2bGFuLmNfdHBpZCA9Cj4+PiArIHNrYi0+dmxhbl9wcm90bzsKPj4K Pj4gV2Ugc2hvdWxkIGRpcmVjdGx5IGNvcHkgcXAtPmlubmVyX3RwaWQgaGVyZS4gQXMgeW91IGhh dmUgZG9uZSBpdCBmb3IKPj4gbm9uIG9mZmxvYWRlZCBjYXNlIGJlbG93Lgo+IFRoYW5rcyEgSXQg aXMgY29waWVkIGJ1dCBpdCBpcyBzZXQgdG8gdGhlIHdyb25nIHRwaWQuIFRoZSBjX3RwaWQgZmll bGQgaW4gdGhlIGtleSBzaG91bGQgYmUgc2V0IHRvIHRoZSBldGhlcnR5cGUgaW4gdGhlIHBhY2tl dCBpdHNlbGYgd2hpY2ggaXMgdGhlIGlubmVyIHRwaWQsIG5vdCB0aGUgb2ZmbG9hZGVkIHNrYi12 bGFuX3Byb3RvIHdoaWNoIGlzIHRoZSBvdXRlciB0cGlkLiBGaXhlZCBpbiBWMTIuCj4+Cj4+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fc2tiX3B1bGwoc2tiLCBzaXplb2Yoc3Ry dWN0IHF0YWdfcHJlZml4KSk7Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICB9Cj4+PiArICAg ICAgICAgICAgICAgfQo+Pj4gICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4+PiArICAgICAg IH0KPj4+Cj4+PiAtICAgICAgIGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIHNpemVv ZihzdHJ1Y3QgcXRhZ19wcmVmaXgpICsKPj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2l6ZW9mKF9fYmUxNikpKSkKPj4+IC0gICAgICAgICAgICAgICByZXR1cm4g LUVOT01FTTsKPj4+Cj4+PiAtICAgICAgIHFwID0gKHN0cnVjdCBxdGFnX3ByZWZpeCAqKSBza2It PmRhdGE7Cj4+PiAtICAgICAgIGtleS0+ZXRoLnRjaSA9IHFwLT50Y2kgfCBodG9ucyhWTEFOX1RB R19QUkVTRU5UKTsKPj4+IC0gICAgICAgX19za2JfcHVsbChza2IsIHNpemVvZihzdHJ1Y3QgcXRh Z19wcmVmaXgpKTsKPj4+ICsgICAgICAgaWYgKHFwLT5ldGhfdHlwZSA9PSBodG9ucyhFVEhfUF84 MDIxQUQpKSB7Cj4+PiArICAgICAgICAgICAgICAgc3RydWN0IHFpbnF0YWdfcHJlZml4ICpxaW5x cCA9Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cnVjdCBx aW5xdGFnX3ByZWZpeAo+Pj4gKyAqKXNrYi0+ZGF0YTsKPj4+ICsKPj4+ICsgICAgICAgICAgICAg ICBpZiAodW5saWtlbHkoc2tiLT5sZW4gPCBzaXplb2Yoc3RydWN0IHFpbnF0YWdfcHJlZml4KSAr Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKF9fYmUx NikpKQo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4+PiArCj4+PiArICAg ICAgICAgICAgICAgaWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgc2l6ZW9mKHN0cnVj dCBxaW5xdGFnX3ByZWZpeCkgKwo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz aXplb2YoX19iZTE2KSkpKSB7Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVO T01FTTsKPj4+ICsgICAgICAgICAgICAgICB9Cj4+PiArICAgICAgICAgICAgICAga2V5LT5ldGgu dGNpID0gcWlucXAtPnRjaSB8IGh0b25zKFZMQU5fVEFHX1BSRVNFTlQpOwo+Pj4gKyAgICAgICAg ICAgICAgIGtleS0+ZXRoLmN2bGFuLmN0Y2kgPSBxaW5xcC0+Y3RjaSB8IGh0b25zKFZMQU5fVEFH X1BSRVNFTlQpOwo+Pj4gKyAgICAgICAgICAgICAgIGtleS0+ZXRoLmN2bGFuLmNfdHBpZCA9IHFp bnFwLT5pbm5lcl90cGlkOwo+Pj4gKwo+Pj4gKyAgICAgICAgICAgICAgIF9fc2tiX3B1bGwoc2ti LCBzaXplb2Yoc3RydWN0IHFpbnF0YWdfcHJlZml4KSk7Cj4+PiArCj4+PiArICAgICAgICAgICAg ICAgcmV0dXJuIDA7Cj4+PiArICAgICAgIH0KPj4+ICsgICAgICAgaWYgKHFwLT5ldGhfdHlwZSA9 PSBodG9ucyhFVEhfUF84MDIxUSkpIHsKPj4+ICsgICAgICAgICAgICAgICBpZiAodW5saWtlbHko c2tiLT5sZW4gPCBzaXplb2Yoc3RydWN0IHF0YWdfcHJlZml4KSArCj4+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKF9fYmUxNikpKQo+Pj4gKyAgICAgICAg ICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07Cj4+PiArCj4+PiArICAgICAgICAgICAgICAg aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgc2l6ZW9mKHN0cnVjdCBxdGFnX3ByZWZp eCkgKwo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoX19iZTE2KSkp KQo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4+PiArICAgICAgICAgICAg ICAga2V5LT5ldGgudGNpID0gcXAtPnRjaSB8IGh0b25zKFZMQU5fVEFHX1BSRVNFTlQpOwo+Pj4g Kwo+Pj4gKyAgICAgICAgICAgICAgIF9fc2tiX3B1bGwoc2tiLCBzaXplb2Yoc3RydWN0IHF0YWdf cHJlZml4KSk7Cj4+PiArICAgICAgIH0KPj4+Cj4+PiAgICAgICAgICAgcmV0dXJuIDA7Cj4+PiAg ICB9Cj4+PiBAQCAtNDc0LDkgKzUzMywxMCBAQCBzdGF0aWMgaW50IGtleV9leHRyYWN0KHN0cnVj dCBza19idWZmICpza2IsIHN0cnVjdCBzd19mbG93X2tleSAqa2V5KQo+Pj4gICAgICAgICAgICAq Lwo+Pj4KPj4+ICAgICAgICAgICBrZXktPmV0aC50Y2kgPSAwOwo+Pj4gLSAgICAgICBpZiAoc2ti X3ZsYW5fdGFnX3ByZXNlbnQoc2tiKSkKPj4+IC0gICAgICAgICAgICAgICBrZXktPmV0aC50Y2kg PSBodG9ucyhza2ItPnZsYW5fdGNpKTsKPj4+IC0gICAgICAgZWxzZSBpZiAoZXRoLT5oX3Byb3Rv ID09IGh0b25zKEVUSF9QXzgwMjFRKSkKPj4+ICsgICAgICAga2V5LT5ldGguY3ZsYW4uY3RjaSA9 IDA7Cj4+IGN2bGFuLmNfdHBpZCBpcyBub3QgaW5pdGlhbGl6ZWQgZm9yIGFsbCBjYXNlcy4KPiBG aXhlZCBpbiBWMTIKPj4KPj4+ICsgICAgICAgaWYgKChza2Jfdmxhbl90YWdfcHJlc2VudChza2Ip KSB8fAo+Pj4gKyAgICAgICAgICAgKGV0aC0+aF9wcm90byA9PSBodG9ucyhFVEhfUF84MDIxUSkp IHx8Cj4+PiArICAgICAgICAgICAoZXRoLT5oX3Byb3RvID09IGh0b25zKEVUSF9QXzgwMjFBRCkp KQo+PiBUaGVzZSBhcmUgcmVkdW5kYW50IGNoZWNrLiBzbyB3ZSBjYW4gZGlyZWN0bHkgY2FsbCB0 aGlzIGZ1bmN0aW9uLgo+IEkgZG9uJ3QgYWdyZWUgdGhhdCB0aGVzZSAzIGNoZWNrcyBhcmUgcmVk dW5kYW50LiBwYXJzZV92bGFuIHBhcnNlcyBib3RoIHRoZSBvZmZsb2FkZWQgYW5kIG5vbi1vZmZs b2FkZWQgY2FzZXMuIEluIFYxMiwgSSBjaGFuZ2VkIGl0IHRvIGNhbGwKPiBldGhfdHlwZV92bGFu KCkgdG8gZG8gdGhlIGNoZWNrcyBmb3IgdGhlIG5vbi1vZmZsb2FkZWQgZXRoZXJ0eXBlcy4KPgo+ IEhtbW0gLi4uIG1heWJlIEkgc2hvdWxkIGFkZCBhbm90aGVyIGZ1bmN0aW9uIHRvIGlmX3ZsYW4u aCB0byBjaGVjayBpZiBhIHBhY2tldCBpcyBhIHZsYW4gcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0 IGlzIG9mZmxvYWRlZCBvciBub3Q/Cj4+Cj4+PiAgICAgICAgICAgICAgICAgICBpZiAodW5saWtl bHkocGFyc2Vfdmxhbihza2IsIGtleSkpKQo+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gLUVOT01FTTsKPj4+Cj4+Cj4+IC4uLgo+Pj4KPj4+ICtzdGF0aWMgaW50IGN1c3Rfdmxh bl9mcm9tX25sYXR0cnMoc3RydWN0IHN3X2Zsb3dfbWF0Y2ggKm1hdGNoLCB1NjQgYXR0cnMsCj4+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IG5sYXR0ciAq KmEsIGJvb2wgaXNfbWFzaywKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi b29sIGxvZykgewo+Pj4gKyAgICAgICAvKiBUaGlzIHNob3VsZCBiZSBuZXN0ZWQgaW5uZXIgb3Ig ImN1c3RvbWVyIiB0Y2kiICovCj4+PiArICAgICAgIGlmIChhdHRycyAmICgxIDw8IE9WU19LRVlf QVRUUl9WTEFOKSkgewo+Pj4gKyAgICAgICAgICAgICAgIF9fYmUxNiBjdGNpOwo+Pj4gKwo+Pj4g KyAgICAgICAgICAgICAgIGN0Y2kgPSBubGFfZ2V0X2JlMTYoYVtPVlNfS0VZX0FUVFJfVkxBTl0p Owo+Pj4gKyAgICAgICAgICAgICAgIGlmICghKGN0Y2kgJiBodG9ucyhWTEFOX1RBR19QUkVTRU5U KSkpIHsKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc19tYXNrKQo+Pj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBPVlNfTkxFUlIobG9nLCAiVkxBTiBDVENJIG1hc2sg ZG9lcyBub3QgaGF2ZSBleGFjdCBtYXRjaCBmb3IgVkxBTl9UQUdfUFJFU0VOVCBiaXQuIik7Cj4+ PiArICAgICAgICAgICAgICAgICAgICAgICBlbHNlCj4+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE9WU19OTEVSUihsb2csICJWTEFOIENUQ0kgZG9lcyBub3QKPj4+ICsgaGF2ZSBW TEFOX1RBR19QUkVTRU5UIGJpdCBzZXQuIik7Cj4+PiArCj4+PiArICAgICAgICAgICAgICAgICAg ICAgICByZXR1cm4gLUVJTlZBTDsKPj4+ICsgICAgICAgICAgICAgICB9Cj4+PiArICAgICAgICAg ICAgICAgU1dfRkxPV19LRVlfUFVUKG1hdGNoLCBldGguY3ZsYW4uY190cGlkLCBjdGNpLCBpc19t YXNrKTsKPj4+ICsgICAgICAgICAgICAgICBTV19GTE9XX0tFWV9QVVQobWF0Y2gsIGV0aC5jdmxh bi5jdGNpLCBjdGNpLCBpc19tYXNrKTsKPj4+ICsgICAgICAgfQo+PiBTYW1lIHZhbHVlIGlzIHNl dCB0byB0cGlkIGFuZCB0Y2kuCj4gVGhhbmtzISBGaXhlZCBpbiBWMTIuCj4+Cj4+PiArICAgICAg IHJldHVybiAwOwo+Pj4gK30KPj4+ICsKPj4+ICAgIHN0YXRpYyBpbnQgb3ZzX2tleV9mcm9tX25s YXR0cnMoc3RydWN0IHN3X2Zsb3dfbWF0Y2ggKm1hdGNoLCB1NjQgYXR0cnMsCj4+PiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IG5sYXR0ciAqKmEsIGJvb2wg aXNfbWFzaywKPj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGxvZykg QEAgLTEwMjQsNiArMTA0NywxMDUgQEAKPj4+IHN0YXRpYyB2b2lkIG1hc2tfc2V0X25sYXR0cihz dHJ1Y3QgbmxhdHRyICphdHRyLCB1OCB2YWwpCj4+PiAgICAgICAgICAgbmxhdHRyX3NldChhdHRy LCB2YWwsIG92c19rZXlfbGVucyk7Cj4+PiAgICB9Cj4+Pgo+Pj4gK3N0YXRpYyBpbnQgcGFyc2Vf dmxhbl9mcm9tX25sYXR0cnMoY29uc3Qgc3RydWN0IG5sYXR0ciAqbmxhLAo+Pj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3dfZmxvd19tYXRjaCAqbWF0Y2gsCj4+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU2NCAqa2V5X2F0dHJzLCBib29s ICppZV92YWxpZCwKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg c3RydWN0IG5sYXR0ciAqKmEsIGJvb2wgaXNfbWFzaywKPj4+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYm9vbCBsb2cpIHsKPj4+ICsgICAgICAgaW50IGVycjsKPj4+ICsgICAg ICAgX19iZTE2IHRjaTsKPj4+ICsgICAgICAgY29uc3Qgc3RydWN0IG5sYXR0ciAqZW5jYXA7Cj4+ PiArCj4+PiArICAgICAgIGlmICghaXNfbWFzaykgewo+Pj4gKyAgICAgICAgICAgICAgIHU2NCB2 X2F0dHJzID0gMDsKPj4+ICsKPj4+ICsgICAgICAgICAgICAgICB0Y2kgPSBubGFfZ2V0X2JlMTYo YVtPVlNfS0VZX0FUVFJfVkxBTl0pOwo+Pj4gKwo+Pj4gKyAgICAgICAgICAgICAgIGlmICh0Y2kg JiBodG9ucyhWTEFOX1RBR19QUkVTRU5UKSkgewo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAg aWYgKHVubGlrZWx5KChubGFfZ2V0X2JlMTYoYVtPVlNfS0VZX0FUVFJfRVRIRVJUWVBFXSkgPT0K Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRvbnMoRVRIX1BfODAy MUFEKSkpKSB7Cj4+IFNpbmNlIHdlIGhhdmUgYWRkZWQgdHBpZCB0byBmbG93IGtleSwgd2UgaGF2 ZSBmbGV4aWJpbGl0eSBvZgo+PiBzdXBwb3J0aW5nIGdlbmVyaWMgZG91YmxlIGVuY2Fwc3VsYXRp b24uIFRoZXJlZm9yZSBpbiBuZXRsaW5rIHBhcnNpbmcKPj4gb2Yga2V5LCBkb3VibGUgZW5jYXAg c2hvdWxkIG5vdCBiZSBsaW1pdGVkIHRvIGp1c3QgODAyMUFELiBmb3IgZXhhbXBsZQo+PiBpdCBz aG91bGQgYWxsb3cgODAyMVEgaW4gODAyMVEgaGVhZGVyIGFzIHZhbGlkIGtleS4KPiBJIGFncmVl LiBBbHRob3VnaCBPcGVuIEZsb3cgc3BlY2lmaWNhdGlvbiBkb2Vzbid0IHN1cHBvcnQgbm9uIDgw Mi4xQUQgZG91YmxlIHRhZ2dlZCB2bGFucywgd2UgcHJvYmFibHkgc2hvdWxkIGJlIGFzIGxlYXN0 IHJlc3RyaWN0aXZlIGFzIHBvc3NpYmxlIGhlcmUgaW4gdGhlIGtlcm5lbCBtb2R1bGUuIEkgcmVj b2RlZCB0aGlzIGluIFYxMiB0byBhbGxvdyBhIG1vcmUgImdlbmVyaWMiIHFpbnEuCj4+Cj4+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVyciA9IHBhcnNlX2Zsb3dfbmxhdHRycyhu bGEsIGEsICZ2X2F0dHJzLCBsb2cpOwo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpZiAoZXJyKQo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl dHVybiBlcnI7Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdl9hdHRy cykKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVJ TlZBTDsKPj4+ICsKPgo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCj4gZGV2IG1haWxpbmcgbGlzdAo+IGRldkBvcGVudnN3aXRjaC5vcmcKPiBodHRwOi8v b3BlbnZzd2l0Y2gub3JnL21haWxtYW4vbGlzdGluZm8vZGV2Cj4KCi0tIApUaG9tYXMgRiBIZXJi ZXJ0IFJlZCBIYXQKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KZGV2IG1haWxpbmcgbGlzdApkZXZAb3BlbnZzd2l0Y2gub3JnCmh0dHA6Ly9vcGVudnN3aXRj aC5vcmcvbWFpbG1hbi9saXN0aW5mby9kZXYK