From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas F Herbert Subject: [PATCH 3/3] 802.1AD: Flow handling, actions, vlan parsing and netlink attributes Date: Thu, 24 Sep 2015 13:58:18 -0400 Message-ID: <1443117498-19123-4-git-send-email-thomasfherbert@gmail.com> References: <1443117498-19123-1-git-send-email-thomasfherbert@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: dev-yBygre7rU0TnMu66kgdUjQ@public.gmane.org, therbert-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org To: netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, pshelar-l0M0P4e3n4LQT0dZR+AlfA@public.gmane.org Return-path: In-Reply-To: <1443117498-19123-1-git-send-email-thomasfherbert-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> 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 QWRkIHN1cHBvcnQgZm9yIDgwMi4xYWQgaW5jbHVkaW5nIHRoZSBhYmlsaXR5IHRvIHB1c2ggYW5k IHBvcCBkb3VibGUKdGFnZ2VkIHZsYW5zLiBBZGQgc3VwcG9ydCBmb3IgODAyLjFhZCB0byBuZXRs aW5rIHBhcnNpbmcgYW5kIGZsb3cKY29udmVyc2lvbi4gVXNlcyBkb3VibGUgbmVzdGVkIGVuY2Fw IGF0dHJpYnV0ZXMgdG8gcmVwcmVzZW50IGRvdWJsZQp0YWdnZWQgdmxhbi4gSW5uZXIgVFBJRCBl bmNvZGVkIGFsb25nIHdpdGggY3RjaSBpbiBuZXN0ZWQgYXR0cmlidXRlcy4KClNpZ25lZC1vZmYt Ynk6IFRob21hcyBGIEhlcmJlcnQgPHRob21hc2ZoZXJiZXJ0QGdtYWlsLmNvbT4KLS0tCiBuZXQv b3BlbnZzd2l0Y2gvZmxvdy5jICAgICAgICAgfCAgODMgKysrKysrKysrKysrKysrKystLS0tCiBu ZXQvb3BlbnZzd2l0Y2gvZmxvdy5oICAgICAgICAgfCAgIDUgKysKIG5ldC9vcGVudnN3aXRjaC9m bG93X25ldGxpbmsuYyB8IDE2NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Ky0tLQogMyBmaWxlcyBjaGFuZ2VkLCAyMzAgaW5zZXJ0aW9ucygrKSwgMjQgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvbmV0L29wZW52c3dpdGNoL2Zsb3cuYyBiL25ldC9vcGVudnN3aXRjaC9m bG93LmMKaW5kZXggYzhkYjQ0YS4uZGI1OGU0NyAxMDA2NDQKLS0tIGEvbmV0L29wZW52c3dpdGNo L2Zsb3cuYworKysgYi9uZXQvb3BlbnZzd2l0Y2gvZmxvdy5jCkBAIC0zMDUsMjEgKzMwNSw3NyBA QCBzdGF0aWMgYm9vbCBpY21wNmhkcl9vayhzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogc3RhdGljIGlu dCBwYXJzZV92bGFuKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzd19mbG93X2tleSAqa2V5 KQogewogCXN0cnVjdCBxdGFnX3ByZWZpeCB7Ci0JCV9fYmUxNiBldGhfdHlwZTsgLyogRVRIX1Bf ODAyMVEgKi8KKwkJX19iZTE2IGV0aF90eXBlOyAvKiBFVEhfUF84MDIxUSAgb3IgRVRIX1BfODAy MUFEICovCiAJCV9fYmUxNiB0Y2k7CiAJfTsKLQlzdHJ1Y3QgcXRhZ19wcmVmaXggKnFwOworCXN0 cnVjdCBxdGFnX3ByZWZpeCAqcXAgPSAoc3RydWN0IHF0YWdfcHJlZml4ICopc2tiLT5kYXRhOwog Ci0JaWYgKHVubGlrZWx5KHNrYi0+bGVuIDwgc2l6ZW9mKHN0cnVjdCBxdGFnX3ByZWZpeCkgKyBz aXplb2YoX19iZTE2KSkpCisJc3RydWN0IHFpbnF0YWdfcHJlZml4IHsKKwkJX19iZTE2IGV0aF90 eXBlOyAvKiBFVEhfUF84MDIxUSAgb3IgRVRIX1BfODAyMUFEICovCisJCV9fYmUxNiB0Y2k7CisJ CV9fYmUxNiBpbm5lcl90cGlkOyAvKiBFVEhfUF84MDIxUSAqLworCQlfX2JlMTYgY3RjaTsKKwl9 OworCisJaWYgKGxpa2VseShza2Jfdmxhbl90YWdfcHJlc2VudChza2IpKSkgeworCQlrZXktPmV0 aC50Y2kgPSBodG9ucyhza2ItPnZsYW5fdGNpKTsKKworCQkvKiBDYXNlIHdoZXJlIHVwc3RyZWFt CisJCSAqIHByb2Nlc3NpbmcgaGFzIGFscmVhZHkgc3RyaXBwZWQgdGhlIG91dGVyIHZsYW4gdGFn LgorCQkgKi8KKwkJaWYgKHVubGlrZWx5KHNrYi0+dmxhbl9wcm90byA9PSBodG9ucyhFVEhfUF84 MDIxQUQpKSkgeworCQkJaWYgKHVubGlrZWx5KHNrYi0+bGVuIDwgc2l6ZW9mKHN0cnVjdCBxdGFn X3ByZWZpeCkgKworCQkJCQlzaXplb2YoX19iZTE2KSkpIHsKKwkJCQlrZXktPmV0aC50Y2kgPSAw OworCQkJCXJldHVybiAwOworCQkJfQorCisJCQlpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwo c2tiLAorCQkJCQkJICAgIHNpemVvZihzdHJ1Y3QgcXRhZ19wcmVmaXgpICsKKwkJCQkJCSAgICBz aXplb2YoX19iZTE2KSkpKQorCQkJCXJldHVybiAtRU5PTUVNOworCisJCQlrZXktPmV0aC5jdmxh bi5jdGNpID0KKwkJCQlxcC0+dGNpIHwgaHRvbnMoVkxBTl9UQUdfUFJFU0VOVCk7CisJCQlrZXkt PmV0aC5jdmxhbi5jX3RwaWQgPSBxcC0+ZXRoX3R5cGU7CisKKwkJCV9fc2tiX3B1bGwoc2tiLCBz aXplb2Yoc3RydWN0IHF0YWdfcHJlZml4KSk7CisJCX0KIAkJcmV0dXJuIDA7CisJfQogCi0JaWYg KHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgc2l6ZW9mKHN0cnVjdCBxdGFnX3ByZWZpeCkg KwotCQkJCQkgc2l6ZW9mKF9fYmUxNikpKSkKLQkJcmV0dXJuIC1FTk9NRU07CiAKLQlxcCA9IChz dHJ1Y3QgcXRhZ19wcmVmaXggKikgc2tiLT5kYXRhOwotCWtleS0+ZXRoLnRjaSA9IHFwLT50Y2kg fCBodG9ucyhWTEFOX1RBR19QUkVTRU5UKTsKLQlfX3NrYl9wdWxsKHNrYiwgc2l6ZW9mKHN0cnVj dCBxdGFnX3ByZWZpeCkpOworCWlmIChxcC0+ZXRoX3R5cGUgPT0gaHRvbnMoRVRIX1BfODAyMUFE KSkgeworCQlzdHJ1Y3QgcWlucXRhZ19wcmVmaXggKnFpbnFwID0KKwkJCQkJKHN0cnVjdCBxaW5x dGFnX3ByZWZpeCAqKXNrYi0+ZGF0YTsKKworCQlpZiAodW5saWtlbHkoc2tiLT5sZW4gPCBzaXpl b2Yoc3RydWN0IHFpbnF0YWdfcHJlZml4KSArCisJCQkJCXNpemVvZihfX2JlMTYpKSkKKwkJCXJl dHVybiAwOworCisJCWlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIHNpemVvZihzdHJ1 Y3QgcWlucXRhZ19wcmVmaXgpICsKKwkJCQlzaXplb2YoX19iZTE2KSkpKQorCQkJcmV0dXJuIC1F Tk9NRU07CisJCWtleS0+ZXRoLnRjaSA9IHFpbnFwLT50Y2kgfCBodG9ucyhWTEFOX1RBR19QUkVT RU5UKTsKKwkJa2V5LT5ldGguY3ZsYW4uY3RjaSA9IHFpbnFwLT5jdGNpIHwgaHRvbnMoVkxBTl9U QUdfUFJFU0VOVCk7CisJCWtleS0+ZXRoLmN2bGFuLmNfdHBpZCA9IHFpbnFwLT5pbm5lcl90cGlk OworCisJCV9fc2tiX3B1bGwoc2tiLCBzaXplb2Yoc3RydWN0IHFpbnF0YWdfcHJlZml4KSk7CisK KwkJcmV0dXJuIDA7CisJfQorCWlmIChxcC0+ZXRoX3R5cGUgPT0gaHRvbnMoRVRIX1BfODAyMVEp KSB7CisJCWlmICh1bmxpa2VseShza2ItPmxlbiA8IHNpemVvZihzdHJ1Y3QgcXRhZ19wcmVmaXgp ICsKKwkJCQkJc2l6ZW9mKF9fYmUxNikpKQorCQkJcmV0dXJuIC1FTk9NRU07CisKKwkJaWYgKHVu bGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgc2l6ZW9mKHN0cnVjdCBxdGFnX3ByZWZpeCkgKwor CQkJCXNpemVvZihfX2JlMTYpKSkpCisJCQlyZXR1cm4gMDsKKwkJa2V5LT5ldGgudGNpID0gcXAt PnRjaSB8IGh0b25zKFZMQU5fVEFHX1BSRVNFTlQpOworCisJCV9fc2tiX3B1bGwoc2tiLCBzaXpl b2Yoc3RydWN0IHF0YWdfcHJlZml4KSk7CisJfQogCiAJcmV0dXJuIDA7CiB9CkBAIC00ODEsMTEg KzUzNywxMCBAQCBzdGF0aWMgaW50IGtleV9leHRyYWN0KHN0cnVjdCBza19idWZmICpza2IsIHN0 cnVjdCBzd19mbG93X2tleSAqa2V5KQogCSAqLwogCiAJa2V5LT5ldGgudGNpID0gMDsKLQlpZiAo c2tiX3ZsYW5fdGFnX3ByZXNlbnQoc2tiKSkKLQkJa2V5LT5ldGgudGNpID0gaHRvbnMoc2tiLT52 bGFuX3RjaSk7Ci0JZWxzZSBpZiAoZXRoLT5oX3Byb3RvID09IGh0b25zKEVUSF9QXzgwMjFRKSkK LQkJaWYgKHVubGlrZWx5KHBhcnNlX3ZsYW4oc2tiLCBrZXkpKSkKLQkJCXJldHVybiAtRU5PTUVN OworCWtleS0+ZXRoLmN2bGFuLmN0Y2kgPSAwOworCWtleS0+ZXRoLmN2bGFuLmNfdHBpZCA9IDA7 CisJaWYgKHVubGlrZWx5KHBhcnNlX3ZsYW4oc2tiLCBrZXkpKSkKKwkJcmV0dXJuIC1FTk9NRU07 CiAKIAlrZXktPmV0aC50eXBlID0gcGFyc2VfZXRoZXJ0eXBlKHNrYik7CiAJaWYgKHVubGlrZWx5 KGtleS0+ZXRoLnR5cGUgPT0gaHRvbnMoMCkpKQpkaWZmIC0tZ2l0IGEvbmV0L29wZW52c3dpdGNo L2Zsb3cuaCBiL25ldC9vcGVudnN3aXRjaC9mbG93LmgKaW5kZXggZmU1MjdkMi4uMmM0OTFlOCAx MDA2NDQKLS0tIGEvbmV0L29wZW52c3dpdGNoL2Zsb3cuaAorKysgYi9uZXQvb3BlbnZzd2l0Y2gv Zmxvdy5oCkBAIC02OSw2ICs2OSwxMSBAQCBzdHJ1Y3Qgc3dfZmxvd19rZXkgewogCQl1OCAgICAg c3JjW0VUSF9BTEVOXTsJLyogRXRoZXJuZXQgc291cmNlIGFkZHJlc3MuICovCiAJCXU4ICAgICBk c3RbRVRIX0FMRU5dOwkvKiBFdGhlcm5ldCBkZXN0aW5hdGlvbiBhZGRyZXNzLiAqLwogCQlfX2Jl MTYgdGNpOwkJLyogMCBpZiBubyBWTEFOLCBWTEFOX1RBR19QUkVTRU5UIHNldCBvdGhlcndpc2Uu ICovCisJCXN0cnVjdCB7CisJCQlfX2JlMTYgY190cGlkOwkvKiBWbGFuIERMX3R5cGUgODAyLjFx IG9yIDgwMi4xYWQgKi8KKwkJCV9fYmUxNiBjdGNpOwkvKiAwIGlmIG5vIENWTEFOLCBWTEFOX1RB R19QUkVTRU5UICovCisJCQkJCS8qIHNldCBvdGhlcndpc2UuICovCisJCX0gY3ZsYW47CiAJCV9f YmUxNiB0eXBlOwkJLyogRXRoZXJuZXQgZnJhbWUgdHlwZS4gKi8KIAl9IGV0aDsKIAl1bmlvbiB7 CmRpZmYgLS1naXQgYS9uZXQvb3BlbnZzd2l0Y2gvZmxvd19uZXRsaW5rLmMgYi9uZXQvb3BlbnZz d2l0Y2gvZmxvd19uZXRsaW5rLmMKaW5kZXggYzkyZDZhMi4uNWZlNDE1ZCAxMDA2NDQKLS0tIGEv bmV0L29wZW52c3dpdGNoL2Zsb3dfbmV0bGluay5jCisrKyBiL25ldC9vcGVudnN3aXRjaC9mbG93 X25ldGxpbmsuYwpAQCAtODExLDYgKzgxMSwyNyBAQCBzdGF0aWMgaW50IG1ldGFkYXRhX2Zyb21f bmxhdHRycyhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzd19mbG93X21hdGNoICptYXRjaCwKIAly ZXR1cm4gMDsKIH0KIAorc3RhdGljIGludCBjdXN0X3ZsYW5fZnJvbV9ubGF0dHJzKHN0cnVjdCBz d19mbG93X21hdGNoICptYXRjaCwKKwkJCQkgIGNvbnN0IHN0cnVjdCBubGF0dHIgKmFbXSwKKwkJ CQkgIGJvb2wgaXNfbWFzaywgYm9vbCBsb2cpCit7CisJX19iZTE2IGN0Y2kgPSAwOworCV9fYmUx NiBjX3RwaWQgPSAwOworCisJY3RjaSA9IG5sYV9nZXRfYmUxNihhW09WU19LRVlfQVRUUl9WTEFO XSk7CisJaWYgKCEoY3RjaSAmIGh0b25zKFZMQU5fVEFHX1BSRVNFTlQpKSkgeworCQlpZiAoaXNf bWFzaykKKwkJCU9WU19OTEVSUihsb2csICJWTEFOIENUQ0kgbWFzayBkb2VzIG5vdCBoYXZlIGV4 YWN0IG1hdGNoIGZvciBWTEFOX1RBR19QUkVTRU5UIGJpdC4iKTsKKwkJZWxzZQorCQkJT1ZTX05M RVJSKGxvZywgIlZMQU4gQ1RDSSBkb2VzIG5vdCBoYXZlIFZMQU5fVEFHX1BSRVNFTlQgYml0IHNl dC4iKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCWNfdHBpZCA9IG5sYV9nZXRfYmUxNihhW09W U19LRVlfQVRUUl9FVEhFUlRZUEVdKTsKKwlTV19GTE9XX0tFWV9QVVQobWF0Y2gsIGV0aC5jdmxh bi5jX3RwaWQsIGNfdHBpZCwgaXNfbWFzayk7CisJU1dfRkxPV19LRVlfUFVUKG1hdGNoLCBldGgu Y3ZsYW4uY3RjaSwgY3RjaSwgaXNfbWFzayk7CisJcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBpbnQg b3ZzX2tleV9mcm9tX25sYXR0cnMoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc3dfZmxvd19tYXRj aCAqbWF0Y2gsCiAJCQkJdTY0IGF0dHJzLCBjb25zdCBzdHJ1Y3QgbmxhdHRyICoqYSwKIAkJCQli b29sIGlzX21hc2ssIGJvb2wgbG9nKQpAQCAtMTA2NCw2ICsxMDg1LDgwIEBAIHN0YXRpYyB2b2lk IG1hc2tfc2V0X25sYXR0cihzdHJ1Y3QgbmxhdHRyICphdHRyLCB1OCB2YWwpCiAJbmxhdHRyX3Nl dChhdHRyLCB2YWwsIG92c19rZXlfbGVucyk7CiB9CiAKK3N0YXRpYyBpbnQgcGFyc2Vfdmxhbl9m cm9tX25sYXR0cnMoY29uc3Qgc3RydWN0IG5sYXR0ciAqKm5sYSwKKwkJCQkgICBzdHJ1Y3Qgc3df Zmxvd19tYXRjaCAqbWF0Y2gsCisJCQkJICAgdTY0ICprZXlfYXR0cnMsIGJvb2wgKmllX3ZhbGlk LAorCQkJCSAgIGNvbnN0IHN0cnVjdCBubGF0dHIgKiphLCBib29sIGlzX21hc2ssCisJCQkJICAg Ym9vbCBsb2cpCit7CisJaW50IGVycjsKKwljb25zdCBzdHJ1Y3QgbmxhdHRyICplbmNhcDsKKwor CSppZV92YWxpZCA9IGZhbHNlOworCWlmICghaXNfbWFzaykgeworCQl1NjQgdl9hdHRycyA9IDA7 CisKKwkJZXJyID0gcGFyc2VfZmxvd19ubGF0dHJzKCpubGEsIGEsICZ2X2F0dHJzLCBsb2cpOwor CQlpZiAoZXJyKQorCQkJcmV0dXJuIGVycjsKKwkJLyogQW5vdGhlciBlbmNhcCBhdHRyaWJ1dGUg aGVyZSBpbmRpY2F0ZXMKKwkJICogdGhlIHByZXNlbmNlIG9mIGEgZG91YmxlIHRhZ2dlZCB2bGFu LgorCQkgKi8KKwkJaWYgKCh2X2F0dHJzICYgKDEgPDwgT1ZTX0tFWV9BVFRSX0VUSEVSVFlQRSkp ICYmCisJCSAgICBldGhfdHlwZV92bGFuKG5sYV9nZXRfYmUxNihhW09WU19LRVlfQVRUUl9FVEhF UlRZUEVdKSkpIHsKKwkJCWlmICghKCh2X2F0dHJzICYgKDFVTEwgPDwgT1ZTX0tFWV9BVFRSX1ZM QU4pKSAmJgorCQkJICAgICAgKHZfYXR0cnMgJiAoMVVMTCA8PCBPVlNfS0VZX0FUVFJfRU5DQVAp KSkpIHsKKwkJCQlPVlNfTkxFUlIobG9nLCAiSW52YWxpZCBJbm5lciBWTEFOIGZyYW1lIik7CisJ CQkJcmV0dXJuIC1FSU5WQUw7CisJCQl9CisJCQllbmNhcCA9IGFbT1ZTX0tFWV9BVFRSX0VOQ0FQ XTsKKwkJCXZfYXR0cnMgJj0gfigxIDw8IE9WU19LRVlfQVRUUl9FTkNBUCk7CisKKwkJCWVyciA9 IGN1c3Rfdmxhbl9mcm9tX25sYXR0cnMobWF0Y2gsIGEsIGlzX21hc2ssIGxvZyk7CisJCQlpZiAo ZXJyKQorCQkJCXJldHVybiBlcnI7CisJCQkqaWVfdmFsaWQgPSB0cnVlOworCQkJKm5sYSA9IGVu Y2FwOworCisJCQkvKiBJbnN1cmUgdGhhdCB0Y2kga2V5IGF0dHJpYnV0ZSBpc24ndAorCQkJICog b3ZlcndyaXR0ZW4gYnkgZW5jYXBzdWxhdGVkIGN1c3RvbWVyIHRjaS4KKwkJCSAqIEV0aGVydHlw ZSBpcyBjbGVhcmVkIGJlY2F1c2UgaXQgaXMgY190cGlkLgorCQkJICovCisJCQl2X2F0dHJzICY9 IH4oMSA8PCBPVlNfS0VZX0FUVFJfVkxBTik7CisJCQl2X2F0dHJzICY9IH4oMSA8PCBPVlNfS0VZ X0FUVFJfRVRIRVJUWVBFKTsKKwkJfQorCQkqa2V5X2F0dHJzIHw9IHZfYXR0cnM7CisKKwl9IGVs c2UgeworCQl1NjQgbWFza192X2F0dHJzID0gMDsKKworCQllcnIgPSBwYXJzZV9mbG93X21hc2tf bmxhdHRycygqbmxhLCBhLCAmbWFza192X2F0dHJzLCBsb2cpOworCQlpZiAoZXJyKQorCQkJcmV0 dXJuIGVycjsKKworCQlpZiAobWFza192X2F0dHJzICYgMSA8PCBPVlNfS0VZX0FUVFJfRU5DQVAp IHsKKwkJCWlmICghKmllX3ZhbGlkKSB7CisJCQkJT1ZTX05MRVJSKGxvZywgIkVuY2FwIG1hc2sg YXR0cmlidXRlIGlzIHNldCBmb3Igbm9uLUNWTEFOIGZyYW1lLiIpOworCQkJCWVyciA9IC1FSU5W QUw7CisJCQkJcmV0dXJuIGVycjsKKwkJCX0KKwkJCWVuY2FwID0gYVtPVlNfS0VZX0FUVFJfRU5D QVBdOworCQkJbWFza192X2F0dHJzICY9IH4oMSA8PCBPVlNfS0VZX0FUVFJfRU5DQVApOworCisJ CQllcnIgPSBjdXN0X3ZsYW5fZnJvbV9ubGF0dHJzKG1hdGNoLCBhLCBpc19tYXNrLCBsb2cpOwor CQkJaWYgKGVycikKKwkJCQlyZXR1cm4gZXJyOworCQkJKm5sYSA9IGVuY2FwOworCisJCQltYXNr X3ZfYXR0cnMgJj0gfigxVUxMIDw8IE9WU19LRVlfQVRUUl9WTEFOKTsKKwkJCW1hc2tfdl9hdHRy cyAmPSB+KDFVTEwgPDwgT1ZTX0tFWV9BVFRSX0VUSEVSVFlQRSk7CisJCX0KKworCQkqa2V5X2F0 dHJzIHw9IG1hc2tfdl9hdHRyczsKKwl9CisJcmV0dXJuIDA7Cit9CisKIC8qKgogICogb3ZzX25s YV9nZXRfbWF0Y2ggLSBwYXJzZXMgTmV0bGluayBhdHRyaWJ1dGVzIGludG8gYSBmbG93IGtleSBh bmQKICAqIG1hc2suIEluIGNhc2UgdGhlICdtYXNrJyBpcyBOVUxMLCB0aGUgZmxvdyBpcyB0cmVh dGVkIGFzIGV4YWN0IG1hdGNoCkBAIC0xMDkxLDYgKzExODYsNyBAQCBpbnQgb3ZzX25sYV9nZXRf bWF0Y2goc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc3dfZmxvd19tYXRjaCAqbWF0Y2gsCiAJdTY0 IGtleV9hdHRycyA9IDA7CiAJdTY0IG1hc2tfYXR0cnMgPSAwOwogCWJvb2wgZW5jYXBfdmFsaWQg PSBmYWxzZTsKKwlib29sIGlfZW5jYXBfdmFsaWQgPSBmYWxzZTsKIAlpbnQgZXJyOwogCiAJZXJy ID0gcGFyc2VfZmxvd19ubGF0dHJzKG5sYV9rZXksIGEsICZrZXlfYXR0cnMsIGxvZyk7CkBAIC0x MDk5LDExICsxMTk1LDExIEBAIGludCBvdnNfbmxhX2dldF9tYXRjaChzdHJ1Y3QgbmV0ICpuZXQs IHN0cnVjdCBzd19mbG93X21hdGNoICptYXRjaCwKIAogCWlmICgoa2V5X2F0dHJzICYgKDEgPDwg T1ZTX0tFWV9BVFRSX0VUSEVSTkVUKSkgJiYKIAkgICAgKGtleV9hdHRycyAmICgxIDw8IE9WU19L RVlfQVRUUl9FVEhFUlRZUEUpKSAmJgotCSAgICAobmxhX2dldF9iZTE2KGFbT1ZTX0tFWV9BVFRS X0VUSEVSVFlQRV0pID09IGh0b25zKEVUSF9QXzgwMjFRKSkpIHsKKwkgICAgZXRoX3R5cGVfdmxh bihubGFfZ2V0X2JlMTYoYVtPVlNfS0VZX0FUVFJfRVRIRVJUWVBFXSkpKSB7CiAJCV9fYmUxNiB0 Y2k7CiAKLQkJaWYgKCEoKGtleV9hdHRycyAmICgxIDw8IE9WU19LRVlfQVRUUl9WTEFOKSkgJiYK LQkJICAgICAgKGtleV9hdHRycyAmICgxIDw8IE9WU19LRVlfQVRUUl9FTkNBUCkpKSkgeworCQlp ZiAoISgoa2V5X2F0dHJzICYgKDFVTEwgPDwgT1ZTX0tFWV9BVFRSX1ZMQU4pKSAmJgorCQkgICAg ICAoa2V5X2F0dHJzICYgKDFVTEwgPDwgT1ZTX0tFWV9BVFRSX0VOQ0FQKSkpKSB7CiAJCQlPVlNf TkxFUlIobG9nLCAiSW52YWxpZCBWbGFuIGZyYW1lLiIpOwogCQkJcmV0dXJuIC1FSU5WQUw7CiAJ CX0KQEAgLTExMTUsOSArMTIxMSwxOSBAQCBpbnQgb3ZzX25sYV9nZXRfbWF0Y2goc3RydWN0IG5l dCAqbmV0LCBzdHJ1Y3Qgc3dfZmxvd19tYXRjaCAqbWF0Y2gsCiAJCWVuY2FwX3ZhbGlkID0gdHJ1 ZTsKIAogCQlpZiAodGNpICYgaHRvbnMoVkxBTl9UQUdfUFJFU0VOVCkpIHsKLQkJCWVyciA9IHBh cnNlX2Zsb3dfbmxhdHRycyhlbmNhcCwgYSwgJmtleV9hdHRycywgbG9nKTsKKwkJCWVyciA9IHBh cnNlX3ZsYW5fZnJvbV9ubGF0dHJzKCZlbmNhcCwgbWF0Y2gsICZrZXlfYXR0cnMsCisJCQkJCQkg ICAgICAmaV9lbmNhcF92YWxpZCwgYSwgZmFsc2UsCisJCQkJCQkgICAgICBsb2cpOwogCQkJaWYg KGVycikKIAkJCQlyZXR1cm4gZXJyOworCisJCQlpZiAoaV9lbmNhcF92YWxpZCkgeworCQkJCWVy ciA9IHBhcnNlX2Zsb3dfbmxhdHRycyhlbmNhcCwgYSwKKwkJCQkJCQkgJmtleV9hdHRycywKKwkJ CQkJCQkgbG9nKTsKKwkJCQlpZiAoZXJyKQorCQkJCQlyZXR1cm4gZXJyOworCQkJfQogCQl9IGVs c2UgaWYgKCF0Y2kpIHsKIAkJCS8qIENvcm5lciBjYXNlIGZvciB0cnVuY2F0ZWQgODAyLjFRIGhl YWRlci4gKi8KIAkJCWlmIChubGFfbGVuKGVuY2FwKSkgewpAQCAtMTE4OCwxMCArMTI5NCwyMSBA QCBpbnQgb3ZzX25sYV9nZXRfbWF0Y2goc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc3dfZmxvd19t YXRjaCAqbWF0Y2gsCiAJCQlpZiAoZXRoX3R5cGUgPT0gaHRvbnMoMHhmZmZmKSkgewogCQkJCW1h c2tfYXR0cnMgJj0gfigxIDw8IE9WU19LRVlfQVRUUl9FVEhFUlRZUEUpOwogCQkJCWVuY2FwID0g YVtPVlNfS0VZX0FUVFJfRU5DQVBdOwotCQkJCWVyciA9IHBhcnNlX2Zsb3dfbWFza19ubGF0dHJz KGVuY2FwLCBhLAotCQkJCQkJCSAgICAgICZtYXNrX2F0dHJzLCBsb2cpOworCQkJCWVyciA9IHBh cnNlX3ZsYW5fZnJvbV9ubGF0dHJzKCZlbmNhcCwgbWF0Y2gsCisJCQkJCQkJICAgICAgJm1hc2tf YXR0cnMsCisJCQkJCQkJICAgICAgJmlfZW5jYXBfdmFsaWQsCisJCQkJCQkJICAgICAgYSwgdHJ1 ZSwgbG9nKTsKIAkJCQlpZiAoZXJyKQogCQkJCQlnb3RvIGZyZWVfbmV3bWFzazsKKworCQkJCWlm IChpX2VuY2FwX3ZhbGlkKSB7CisJCQkJCWVyciA9CisJCQkJCSAgICBwYXJzZV9mbG93X21hc2tf bmxhdHRycyhlbmNhcCwgYSwKKwkJCQkJCQkJICAgICZtYXNrX2F0dHJzLAorCQkJCQkJCQkgICAg bG9nKTsKKwkJCQkJaWYgKGVycikKKwkJCQkJCWdvdG8gZnJlZV9uZXdtYXNrOworCQkJCX0KIAkJ CX0gZWxzZSB7CiAJCQkJT1ZTX05MRVJSKGxvZywgIlZMQU4gZnJhbWVzIG11c3QgaGF2ZSBhbiBl eGFjdCBtYXRjaCBvbiB0aGUgVFBJRCAobWFzaz0leCkuIiwKIAkJCQkJICBudG9ocyhldGhfdHlw ZSkpOwpAQCAtMTMyMCw2ICsxNDM3LDcgQEAgc3RhdGljIGludCBfX292c19ubGFfcHV0X2tleShj b25zdCBzdHJ1Y3Qgc3dfZmxvd19rZXkgKnN3a2V5LAogewogCXN0cnVjdCBvdnNfa2V5X2V0aGVy bmV0ICpldGhfa2V5OwogCXN0cnVjdCBubGF0dHIgKm5sYSwgKmVuY2FwOworCXN0cnVjdCBubGF0 dHIgKmluX2VuY2FwID0gTlVMTDsKIAogCWlmIChubGFfcHV0X3UzMihza2IsIE9WU19LRVlfQVRU Ul9SRUNJUkNfSUQsIG91dHB1dC0+cmVjaXJjX2lkKSkKIAkJZ290byBubGFfcHV0X2ZhaWx1cmU7 CkBAIC0xMzY4LDE3ICsxNDg2LDQyIEBAIHN0YXRpYyBpbnQgX19vdnNfbmxhX3B1dF9rZXkoY29u c3Qgc3RydWN0IHN3X2Zsb3dfa2V5ICpzd2tleSwKIAlldGhlcl9hZGRyX2NvcHkoZXRoX2tleS0+ ZXRoX3NyYywgb3V0cHV0LT5ldGguc3JjKTsKIAlldGhlcl9hZGRyX2NvcHkoZXRoX2tleS0+ZXRo X2RzdCwgb3V0cHV0LT5ldGguZHN0KTsKIAotCWlmIChzd2tleS0+ZXRoLnRjaSB8fCBzd2tleS0+ ZXRoLnR5cGUgPT0gaHRvbnMoRVRIX1BfODAyMVEpKSB7CisJaWYgKHN3a2V5LT5ldGgudGNpIHx8 IGV0aF90eXBlX3ZsYW4oc3drZXktPmV0aC50eXBlKSkgewogCQlfX2JlMTYgZXRoX3R5cGU7Ci0J CWV0aF90eXBlID0gIWlzX21hc2sgPyBodG9ucyhFVEhfUF84MDIxUSkgOiBodG9ucygweGZmZmYp OworCisJCWlmIChzd2tleS0+ZXRoLmN2bGFuLmN0Y2kgfHwKKwkJICAgIGV0aF90eXBlX3ZsYW4o c3drZXktPmV0aC5jdmxhbi5jX3RwaWQpKQorCQkJZXRoX3R5cGUgPSAhaXNfbWFzayA/IGh0b25z KEVUSF9QXzgwMjFBRCkgOgorCQkJCQkgICAgICBodG9ucygweGZmZmYpOworCQllbHNlCisJCQll dGhfdHlwZSA9ICFpc19tYXNrID8gaHRvbnMoRVRIX1BfODAyMVEpIDoKKwkJCQkJICAgICAgaHRv bnMoMHhmZmZmKTsKKwogCQlpZiAobmxhX3B1dF9iZTE2KHNrYiwgT1ZTX0tFWV9BVFRSX0VUSEVS VFlQRSwgZXRoX3R5cGUpIHx8CiAJCSAgICBubGFfcHV0X2JlMTYoc2tiLCBPVlNfS0VZX0FUVFJf VkxBTiwgb3V0cHV0LT5ldGgudGNpKSkKIAkJCWdvdG8gbmxhX3B1dF9mYWlsdXJlOwogCQllbmNh cCA9IG5sYV9uZXN0X3N0YXJ0KHNrYiwgT1ZTX0tFWV9BVFRSX0VOQ0FQKTsKIAkJaWYgKCFzd2tl eS0+ZXRoLnRjaSkKIAkJCWdvdG8gdW5lbmNhcDsKLQl9IGVsc2UKKwkJaWYgKHN3a2V5LT5ldGgu Y3ZsYW4uY3RjaSB8fCBldGhfdHlwZV92bGFuKHN3a2V5LT5ldGgudHlwZSkpIHsKKwkJCV9fYmUx NiBldGhfdHlwZTsKKworCQkJLyogQ3VzdG9tZXIgdGNpIGlzIG5lc3RlZCBidXQgdXNlcyBzYW1l IGtleSBhdHRyaWJ1dGUuCisJCQkgKi8KKwkJCWV0aF90eXBlID0gIWlzX21hc2sgPyBodG9ucyhF VEhfUF84MDIxUSkgOgorCQkJCQkgICAgICBodG9ucygweGZmZmYpOworCQkJaWYgKG5sYV9wdXRf YmUxNihza2IsIE9WU19LRVlfQVRUUl9FVEhFUlRZUEUsCisJCQkJCSBldGhfdHlwZSkgfHwKKwkJ CSAgICBubGFfcHV0X2JlMTYoc2tiLCBPVlNfS0VZX0FUVFJfVkxBTiwKKwkJCQkJIG91dHB1dC0+ ZXRoLmN2bGFuLmN0Y2kpKQorCQkJCWdvdG8gbmxhX3B1dF9mYWlsdXJlOworCQkJaW5fZW5jYXAg PSBubGFfbmVzdF9zdGFydChza2IsIE9WU19LRVlfQVRUUl9FTkNBUCk7CisJCQlpZiAoIXN3a2V5 LT5ldGguY3ZsYW4uY3RjaSkKKwkJCQlnb3RvIHVuZW5jYXA7CisJCX0KKwl9IGVsc2UgewogCQll bmNhcCA9IE5VTEw7CisJfQogCiAJaWYgKHN3a2V5LT5ldGgudHlwZSA9PSBodG9ucyhFVEhfUF84 MDJfMikpIHsKIAkJLyoKQEAgLTE1MjUsNiArMTY2OCw4IEBAIHN0YXRpYyBpbnQgX19vdnNfbmxh X3B1dF9rZXkoY29uc3Qgc3RydWN0IHN3X2Zsb3dfa2V5ICpzd2tleSwKIHVuZW5jYXA6CiAJaWYg KGVuY2FwKQogCQlubGFfbmVzdF9lbmQoc2tiLCBlbmNhcCk7CisJaWYgKGluX2VuY2FwKQorCQlu bGFfbmVzdF9lbmQoc2tiLCBpbl9lbmNhcCk7CiAKIAlyZXR1cm4gMDsKIApAQCAtMjE3NCw3ICsy MzE5LDggQEAgc3RhdGljIGludCBfX292c19ubGFfY29weV9hY3Rpb25zKHN0cnVjdCBuZXQgKm5l dCwgY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0ciwKIAogCQljYXNlIE9WU19BQ1RJT05fQVRUUl9Q VVNIX1ZMQU46CiAJCQl2bGFuID0gbmxhX2RhdGEoYSk7Ci0JCQlpZiAodmxhbi0+dmxhbl90cGlk ICE9IGh0b25zKEVUSF9QXzgwMjFRKSkKKwkJCWlmICgodmxhbi0+dmxhbl90cGlkICE9IGh0b25z KEVUSF9QXzgwMjFRKSkgJiYKKwkJCSAgICAodmxhbi0+dmxhbl90cGlkICE9IGh0b25zKEVUSF9Q XzgwMjFBRCkpKQogCQkJCXJldHVybiAtRUlOVkFMOwogCQkJaWYgKCEodmxhbi0+dmxhbl90Y2kg JiBodG9ucyhWTEFOX1RBR19QUkVTRU5UKSkpCiAJCQkJcmV0dXJuIC1FSU5WQUw7Ci0tIAoyLjQu MwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZGV2IG1h aWxpbmcgbGlzdApkZXZAb3BlbnZzd2l0Y2gub3JnCmh0dHA6Ly9vcGVudnN3aXRjaC5vcmcvbWFp bG1hbi9saXN0aW5mby9kZXYK