From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas F Herbert Subject: [PATCH net-next V14 3/3] openvswitch: 802.1ad: Flow handling, actions, vlan parsing and netlink attributes Date: Wed, 30 Sep 2015 23:33:00 -0400 Message-ID: <1443670380-4245-4-git-send-email-thomasfherbert@gmail.com> References: <1443670380-4245-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: <1443670380-4245-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 b3BlbnZzd2l0Y2gvYWN0aW9ucy5jICAgICAgfCAgIDQgKy0KIG5ldC9vcGVudnN3aXRjaC9mbG93 LmMgICAgICAgICB8ICA4NyArKysrKysrKysrKysrKysrKy0tLS0KIG5ldC9vcGVudnN3aXRjaC9m bG93LmggICAgICAgICB8ICAxMSArKy0KIG5ldC9vcGVudnN3aXRjaC9mbG93X25ldGxpbmsuYyB8 IDE2NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLQogbmV0L29wZW52 c3dpdGNoL3Zwb3J0LW5ldGRldi5jIHwgICA0ICstCiA1IGZpbGVzIGNoYW5nZWQsIDIzOSBpbnNl cnRpb25zKCspLCAzNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9uZXQvb3BlbnZzd2l0Y2gv YWN0aW9ucy5jIGIvbmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYwppbmRleCAzMTVmNTMzLi5jNTQ0 MzcxIDEwMDY0NAotLS0gYS9uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jCisrKyBiL25ldC9vcGVu dnN3aXRjaC9hY3Rpb25zLmMKQEAgLTIzNiw3ICsyMzYsNyBAQCBzdGF0aWMgaW50IHBvcF92bGFu KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzd19mbG93X2tleSAqa2V5KQogCWlmIChza2Jf dmxhbl90YWdfcHJlc2VudChza2IpKQogCQlpbnZhbGlkYXRlX2Zsb3dfa2V5KGtleSk7CiAJZWxz ZQotCQlrZXktPmV0aC50Y2kgPSAwOworCQlrZXktPmV0aC52bGFuLnRjaSA9IDA7CiAJcmV0dXJu IGVycjsKIH0KIApAQCAtMjQ2LDcgKzI0Niw3IEBAIHN0YXRpYyBpbnQgcHVzaF92bGFuKHN0cnVj dCBza19idWZmICpza2IsIHN0cnVjdCBzd19mbG93X2tleSAqa2V5LAogCWlmIChza2Jfdmxhbl90 YWdfcHJlc2VudChza2IpKQogCQlpbnZhbGlkYXRlX2Zsb3dfa2V5KGtleSk7CiAJZWxzZQotCQlr ZXktPmV0aC50Y2kgPSB2bGFuLT52bGFuX3RjaTsKKwkJa2V5LT5ldGgudmxhbi50Y2kgPSB2bGFu LT52bGFuX3RjaTsKIAlyZXR1cm4gc2tiX3ZsYW5fcHVzaChza2IsIHZsYW4tPnZsYW5fdHBpZCwK IAkJCSAgICAgbnRvaHModmxhbi0+dmxhbl90Y2kpICYgflZMQU5fVEFHX1BSRVNFTlQpOwogfQpk aWZmIC0tZ2l0IGEvbmV0L29wZW52c3dpdGNoL2Zsb3cuYyBiL25ldC9vcGVudnN3aXRjaC9mbG93 LmMKaW5kZXggYzhkYjQ0YS4uODZhMmNiMCAxMDA2NDQKLS0tIGEvbmV0L29wZW52c3dpdGNoL2Zs b3cuYworKysgYi9uZXQvb3BlbnZzd2l0Y2gvZmxvdy5jCkBAIC0zMDUsMjEgKzMwNSw3OCBAQCBz dGF0aWMgYm9vbCBpY21wNmhkcl9vayhzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogc3RhdGljIGludCBw YXJzZV92bGFuKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzd19mbG93X2tleSAqa2V5KQog ewogCXN0cnVjdCBxdGFnX3ByZWZpeCB7Ci0JCV9fYmUxNiBldGhfdHlwZTsgLyogRVRIX1BfODAy MVEgKi8KKwkJX19iZTE2IGV0aF90eXBlOyAvKiBFVEhfUF84MDIxUSAgb3IgRVRIX1BfODAyMUFE ICovCiAJCV9fYmUxNiB0Y2k7CiAJfTsKLQlzdHJ1Y3QgcXRhZ19wcmVmaXggKnFwOworCXN0cnVj dCBxdGFnX3ByZWZpeCAqcXAgPSAoc3RydWN0IHF0YWdfcHJlZml4ICopc2tiLT5kYXRhOwogCi0J aWYgKHVubGlrZWx5KHNrYi0+bGVuIDwgc2l6ZW9mKHN0cnVjdCBxdGFnX3ByZWZpeCkgKyBzaXpl b2YoX19iZTE2KSkpCisJc3RydWN0IHFpbnF0YWdfcHJlZml4IHsKKwkJX19iZTE2IGV0aF90eXBl OyAvKiBFVEhfUF84MDIxUSAgb3IgRVRIX1BfODAyMUFEICovCisJCV9fYmUxNiB0Y2k7CisJCV9f YmUxNiBpbm5lcl90cGlkOyAvKiBFVEhfUF84MDIxUSAqLworCQlfX2JlMTYgY3RjaTsKKwl9Owor CisJaWYgKGxpa2VseShza2Jfdmxhbl90YWdfcHJlc2VudChza2IpKSkgeworCQlrZXktPmV0aC52 bGFuLnRjaSA9IGh0b25zKHNrYi0+dmxhbl90Y2kpOworCQlrZXktPmV0aC52bGFuLnRwaWQgPSBz a2ItPnZsYW5fcHJvdG87CisKKwkJLyogQ2FzZSB3aGVyZSB1cHN0cmVhbQorCQkgKiBwcm9jZXNz aW5nIGhhcyBhbHJlYWR5IHN0cmlwcGVkIHRoZSBvdXRlciB2bGFuIHRhZy4KKwkJICovCisJCWlm ICh1bmxpa2VseShza2ItPnZsYW5fcHJvdG8gPT0gaHRvbnMoRVRIX1BfODAyMUFEKSkpIHsKKwkJ CWlmICh1bmxpa2VseShza2ItPmxlbiA8IHNpemVvZihzdHJ1Y3QgcXRhZ19wcmVmaXgpICsKKwkJ CQkJc2l6ZW9mKF9fYmUxNikpKSB7CisJCQkJa2V5LT5ldGgudmxhbi50Y2kgPSAwOworCQkJCXJl dHVybiAwOworCQkJfQorCisJCQlpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLAorCQkJ CQkJICAgIHNpemVvZihzdHJ1Y3QgcXRhZ19wcmVmaXgpICsKKwkJCQkJCSAgICBzaXplb2YoX19i ZTE2KSkpKQorCQkJCXJldHVybiAtRU5PTUVNOworCisJCQlrZXktPmV0aC5jdmxhbi50Y2kgPQor CQkJCXFwLT50Y2kgfCBodG9ucyhWTEFOX1RBR19QUkVTRU5UKTsKKwkJCWtleS0+ZXRoLmN2bGFu LnRwaWQgPSBxcC0+ZXRoX3R5cGU7CisKKwkJCV9fc2tiX3B1bGwoc2tiLCBzaXplb2Yoc3RydWN0 IHF0YWdfcHJlZml4KSk7CisJCX0KIAkJcmV0dXJuIDA7CiAKLQlpZiAodW5saWtlbHkoIXBza2Jf bWF5X3B1bGwoc2tiLCBzaXplb2Yoc3RydWN0IHF0YWdfcHJlZml4KSArCi0JCQkJCSBzaXplb2Yo X19iZTE2KSkpKQotCQlyZXR1cm4gLUVOT01FTTsKKwl9IGVsc2UgaWYgKHFwLT5ldGhfdHlwZSA9 PSBodG9ucyhFVEhfUF84MDIxQUQpKSB7CisJCXN0cnVjdCBxaW5xdGFnX3ByZWZpeCAqcWlucXAg PQorCQkJCQkoc3RydWN0IHFpbnF0YWdfcHJlZml4ICopc2tiLT5kYXRhOworCisJCWlmICh1bmxp a2VseShza2ItPmxlbiA8IHNpemVvZihzdHJ1Y3QgcWlucXRhZ19wcmVmaXgpICsKKwkJCQkJc2l6 ZW9mKF9fYmUxNikpKQorCQkJcmV0dXJuIDA7CisKKwkJaWYgKHVubGlrZWx5KCFwc2tiX21heV9w dWxsKHNrYiwgc2l6ZW9mKHN0cnVjdCBxaW5xdGFnX3ByZWZpeCkgKworCQkJCXNpemVvZihfX2Jl MTYpKSkpCisJCQlyZXR1cm4gLUVOT01FTTsKKwkJa2V5LT5ldGgudmxhbi50Y2kgPSBxaW5xcC0+ dGNpIHwgaHRvbnMoVkxBTl9UQUdfUFJFU0VOVCk7CisJCWtleS0+ZXRoLnZsYW4udHBpZCA9IHFw LT5ldGhfdHlwZTsKKwkJa2V5LT5ldGguY3ZsYW4udGNpID0gcWlucXAtPmN0Y2kgfCBodG9ucyhW TEFOX1RBR19QUkVTRU5UKTsKKwkJa2V5LT5ldGguY3ZsYW4udHBpZCA9IHFpbnFwLT5pbm5lcl90 cGlkOworCisJCV9fc2tiX3B1bGwoc2tiLCBzaXplb2Yoc3RydWN0IHFpbnF0YWdfcHJlZml4KSk7 CiAKLQlxcCA9IChzdHJ1Y3QgcXRhZ19wcmVmaXggKikgc2tiLT5kYXRhOwotCWtleS0+ZXRoLnRj aSA9IHFwLT50Y2kgfCBodG9ucyhWTEFOX1RBR19QUkVTRU5UKTsKLQlfX3NrYl9wdWxsKHNrYiwg c2l6ZW9mKHN0cnVjdCBxdGFnX3ByZWZpeCkpOworCQlyZXR1cm4gMDsKKworCX0gZWxzZSBpZiAo cXAtPmV0aF90eXBlID09IGh0b25zKEVUSF9QXzgwMjFRKSkgeworCQlpZiAodW5saWtlbHkoc2ti LT5sZW4gPCBzaXplb2Yoc3RydWN0IHF0YWdfcHJlZml4KSArCisJCQkJCXNpemVvZihfX2JlMTYp KSkKKwkJCXJldHVybiAwOworCisJCWlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIHNp emVvZihzdHJ1Y3QgcXRhZ19wcmVmaXgpICsKKwkJCQlzaXplb2YoX19iZTE2KSkpKQorCQkJcmV0 dXJuIC1FTk9NRU07CisJCWtleS0+ZXRoLnZsYW4udGNpID0gcXAtPnRjaSB8IGh0b25zKFZMQU5f VEFHX1BSRVNFTlQpOworCQlrZXktPmV0aC52bGFuLnRwaWQgPSBxcC0+ZXRoX3R5cGU7CisKKwkJ X19za2JfcHVsbChza2IsIHNpemVvZihzdHJ1Y3QgcXRhZ19wcmVmaXgpKTsKKwl9CiAKIAlyZXR1 cm4gMDsKIH0KQEAgLTQ4MCwxMiArNTM3LDEyIEBAIHN0YXRpYyBpbnQga2V5X2V4dHJhY3Qoc3Ry dWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHN3X2Zsb3dfa2V5ICprZXkpCiAJICogdXBkYXRlIHNr Yi0+Y3N1bSBoZXJlLgogCSAqLwogCi0Ja2V5LT5ldGgudGNpID0gMDsKLQlpZiAoc2tiX3ZsYW5f dGFnX3ByZXNlbnQoc2tiKSkKLQkJa2V5LT5ldGgudGNpID0gaHRvbnMoc2tiLT52bGFuX3RjaSk7 Ci0JZWxzZSBpZiAoZXRoLT5oX3Byb3RvID09IGh0b25zKEVUSF9QXzgwMjFRKSkKLQkJaWYgKHVu bGlrZWx5KHBhcnNlX3ZsYW4oc2tiLCBrZXkpKSkKLQkJCXJldHVybiAtRU5PTUVNOworCWtleS0+ ZXRoLnZsYW4udGNpID0gMDsKKwlrZXktPmV0aC52bGFuLnRwaWQgPSAwOworCWtleS0+ZXRoLmN2 bGFuLnRjaSA9IDA7CisJa2V5LT5ldGguY3ZsYW4udHBpZCA9IDA7CisJaWYgKHVubGlrZWx5KHBh cnNlX3ZsYW4oc2tiLCBrZXkpKSkKKwkJcmV0dXJuIC1FTk9NRU07CiAKIAlrZXktPmV0aC50eXBl ID0gcGFyc2VfZXRoZXJ0eXBlKHNrYik7CiAJaWYgKHVubGlrZWx5KGtleS0+ZXRoLnR5cGUgPT0g aHRvbnMoMCkpKQpkaWZmIC0tZ2l0IGEvbmV0L29wZW52c3dpdGNoL2Zsb3cuaCBiL25ldC9vcGVu dnN3aXRjaC9mbG93LmgKaW5kZXggZmU1MjdkMi4uNTM5NDk0ZSAxMDA2NDQKLS0tIGEvbmV0L29w ZW52c3dpdGNoL2Zsb3cuaAorKysgYi9uZXQvb3BlbnZzd2l0Y2gvZmxvdy5oCkBAIC02OCw3ICs2 OCwxNiBAQCBzdHJ1Y3Qgc3dfZmxvd19rZXkgewogCXN0cnVjdCB7CiAJCXU4ICAgICBzcmNbRVRI X0FMRU5dOwkvKiBFdGhlcm5ldCBzb3VyY2UgYWRkcmVzcy4gKi8KIAkJdTggICAgIGRzdFtFVEhf QUxFTl07CS8qIEV0aGVybmV0IGRlc3RpbmF0aW9uIGFkZHJlc3MuICovCi0JCV9fYmUxNiB0Y2k7 CQkvKiAwIGlmIG5vIFZMQU4sIFZMQU5fVEFHX1BSRVNFTlQgc2V0IG90aGVyd2lzZS4gKi8KKwkJ c3RydWN0IHsKKwkJCV9fYmUxNiB0cGlkOwkvKiBPdXRlciBWbGFuIHR5cGUgODAyLjFxIG9yIDgw Mi4xYWQuKi8KKwkJCV9fYmUxNiB0Y2k7CS8qIDAgaWYgbm8gVkxBTiwgVkxBTl9UQUdfUFJFU0VO VCAqLworCQkJCQkvKiBzZXQgb3RoZXJ3aXNlLiAqLworCQl9IHZsYW47CisJCXN0cnVjdCB7CisJ CQlfX2JlMTYgdHBpZDsJLyogSW5uZXIgVmxhbiBETF90eXBlIDgwMi4xcS4qLworCQkJX19iZTE2 IHRjaTsJLyogMCBpZiBubyBDVkxBTiwgVkxBTl9UQUdfUFJFU0VOVCAqLworCQkJCQkvKiBzZXQg b3RoZXJ3aXNlLiAqLworCQl9IGN2bGFuOwogCQlfX2JlMTYgdHlwZTsJCS8qIEV0aGVybmV0IGZy YW1lIHR5cGUuICovCiAJfSBldGg7CiAJdW5pb24gewpkaWZmIC0tZ2l0IGEvbmV0L29wZW52c3dp dGNoL2Zsb3dfbmV0bGluay5jIGIvbmV0L29wZW52c3dpdGNoL2Zsb3dfbmV0bGluay5jCmluZGV4 IGM5MmQ2YTIuLjA4ZjU2YWIgMTAwNjQ0Ci0tLSBhL25ldC9vcGVudnN3aXRjaC9mbG93X25ldGxp bmsuYworKysgYi9uZXQvb3BlbnZzd2l0Y2gvZmxvd19uZXRsaW5rLmMKQEAgLTgxMSw2ICs4MTEs MjcgQEAgc3RhdGljIGludCBtZXRhZGF0YV9mcm9tX25sYXR0cnMoc3RydWN0IG5ldCAqbmV0LCBz dHJ1Y3Qgc3dfZmxvd19tYXRjaCAqbWF0Y2gsCiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQg Y3VzdF92bGFuX2Zyb21fbmxhdHRycyhzdHJ1Y3Qgc3dfZmxvd19tYXRjaCAqbWF0Y2gsCisJCQkJ ICBjb25zdCBzdHJ1Y3QgbmxhdHRyICphW10sCisJCQkJICBib29sIGlzX21hc2ssIGJvb2wgbG9n KQoreworCV9fYmUxNiBjdGNpID0gMDsKKwlfX2JlMTYgY190cGlkID0gMDsKKworCWN0Y2kgPSBu bGFfZ2V0X2JlMTYoYVtPVlNfS0VZX0FUVFJfVkxBTl0pOworCWlmICghKGN0Y2kgJiBodG9ucyhW TEFOX1RBR19QUkVTRU5UKSkpIHsKKwkJaWYgKGlzX21hc2spCisJCQlPVlNfTkxFUlIobG9nLCAi VkxBTiBDVENJIG1hc2sgZG9lcyBub3QgaGF2ZSBleGFjdCBtYXRjaCBmb3IgVkxBTl9UQUdfUFJF U0VOVCBiaXQuIik7CisJCWVsc2UKKwkJCU9WU19OTEVSUihsb2csICJWTEFOIENUQ0kgZG9lcyBu b3QgaGF2ZSBWTEFOX1RBR19QUkVTRU5UIGJpdCBzZXQuIik7CisJCXJldHVybiAtRUlOVkFMOwor CX0KKwljX3RwaWQgPSBubGFfZ2V0X2JlMTYoYVtPVlNfS0VZX0FUVFJfRVRIRVJUWVBFXSk7CisJ U1dfRkxPV19LRVlfUFVUKG1hdGNoLCBldGguY3ZsYW4udHBpZCwgY190cGlkLCBpc19tYXNrKTsK KwlTV19GTE9XX0tFWV9QVVQobWF0Y2gsIGV0aC5jdmxhbi50Y2ksIGN0Y2ksIGlzX21hc2spOwor CXJldHVybiAwOworfQorCiBzdGF0aWMgaW50IG92c19rZXlfZnJvbV9ubGF0dHJzKHN0cnVjdCBu ZXQgKm5ldCwgc3RydWN0IHN3X2Zsb3dfbWF0Y2ggKm1hdGNoLAogCQkJCXU2NCBhdHRycywgY29u c3Qgc3RydWN0IG5sYXR0ciAqKmEsCiAJCQkJYm9vbCBpc19tYXNrLCBib29sIGxvZykKQEAgLTg0 NSw3ICs4NjYsNyBAQCBzdGF0aWMgaW50IG92c19rZXlfZnJvbV9ubGF0dHJzKHN0cnVjdCBuZXQg Km5ldCwgc3RydWN0IHN3X2Zsb3dfbWF0Y2ggKm1hdGNoLAogCQkJcmV0dXJuIC1FSU5WQUw7CiAJ CX0KIAotCQlTV19GTE9XX0tFWV9QVVQobWF0Y2gsIGV0aC50Y2ksIHRjaSwgaXNfbWFzayk7CisJ CVNXX0ZMT1dfS0VZX1BVVChtYXRjaCwgZXRoLnZsYW4udGNpLCB0Y2ksIGlzX21hc2spOwogCQlh dHRycyAmPSB+KDEgPDwgT1ZTX0tFWV9BVFRSX1ZMQU4pOwogCX0KIApAQCAtMTA2NCw2ICsxMDg1 LDkzIEBAIHN0YXRpYyB2b2lkIG1hc2tfc2V0X25sYXR0cihzdHJ1Y3QgbmxhdHRyICphdHRyLCB1 OCB2YWwpCiAJbmxhdHRyX3NldChhdHRyLCB2YWwsIG92c19rZXlfbGVucyk7CiB9CiAKK3N0YXRp YyBpbnQgcGFyc2Vfdmxhbl9mcm9tX25sYXR0cnMoY29uc3Qgc3RydWN0IG5sYXR0ciAqKm5sYSwK KwkJCQkgICBzdHJ1Y3Qgc3dfZmxvd19tYXRjaCAqbWF0Y2gsCisJCQkJICAgdTY0ICprZXlfYXR0 cnMsIGJvb2wgKmllX3ZhbGlkLAorCQkJCSAgIGNvbnN0IHN0cnVjdCBubGF0dHIgKiphLCBib29s IGlzX21hc2ssCisJCQkJICAgYm9vbCBsb2cpCit7CisJaW50IGVycjsKKwljb25zdCBzdHJ1Y3Qg bmxhdHRyICplbmNhcDsKKworCWlmICghaXNfbWFzaykgeworCQl1NjQgdl9hdHRycyA9IDA7CisK KwkJZXJyID0gcGFyc2VfZmxvd19ubGF0dHJzKCpubGEsIGEsICZ2X2F0dHJzLCBsb2cpOworCQlp ZiAoZXJyKQorCQkJcmV0dXJuIGVycjsKKwkJLyogQW5vdGhlciBlbmNhcCBhdHRyaWJ1dGUgaGVy ZSBpbmRpY2F0ZXMKKwkJICogdGhlIHByZXNlbmNlIG9mIGEgZG91YmxlIHRhZ2dlZCB2bGFuLgor CQkgKi8KKwkJaWYgKCh2X2F0dHJzICYgKDEgPDwgT1ZTX0tFWV9BVFRSX0VUSEVSVFlQRSkpICYm CisJCSAgICBldGhfdHlwZV92bGFuKG5sYV9nZXRfYmUxNihhW09WU19LRVlfQVRUUl9FVEhFUlRZ UEVdKSkpIHsKKwkJCWlmICghKCh2X2F0dHJzICYgKDFVTEwgPDwgT1ZTX0tFWV9BVFRSX1ZMQU4p KSAmJgorCQkJICAgICAgKHZfYXR0cnMgJiAoMVVMTCA8PCBPVlNfS0VZX0FUVFJfRU5DQVApKSkp IHsKKwkJCQlPVlNfTkxFUlIobG9nLCAiSW52YWxpZCBJbm5lciBWTEFOIGZyYW1lIik7CisJCQkJ cmV0dXJuIC1FSU5WQUw7CisJCQl9CisJCQlTV19GTE9XX0tFWV9QVVQobWF0Y2gsIGV0aC52bGFu LnRwaWQsCisJCQkJCW5sYV9nZXRfYmUxNihhW09WU19LRVlfQVRUUl9FVEhFUlRZUEVdKSwKKwkJ CQkJCSAgICAgaXNfbWFzayk7CisJCQllbmNhcCA9IGFbT1ZTX0tFWV9BVFRSX0VOQ0FQXTsKKwkJ CXZfYXR0cnMgJj0gfigxIDw8IE9WU19LRVlfQVRUUl9FTkNBUCk7CisKKwkJCWVyciA9IGN1c3Rf dmxhbl9mcm9tX25sYXR0cnMobWF0Y2gsIGEsIGlzX21hc2ssIGxvZyk7CisJCQlpZiAoZXJyKQor CQkJCXJldHVybiBlcnI7CisJCQkqaWVfdmFsaWQgPSB0cnVlOworCQkJKm5sYSA9IGVuY2FwOwor CisJCQkvKiBJbnN1cmUgdGhhdCB0Y2kga2V5IGF0dHJpYnV0ZSBpc24ndAorCQkJICogb3Zlcndy aXR0ZW4gYnkgZW5jYXBzdWxhdGVkIGN1c3RvbWVyIHRjaS4KKwkJCSAqIEV0aGVydHlwZSBpcyBj bGVhcmVkIGJlY2F1c2UgaXQgaXMgY190cGlkLgorCQkJICovCisJCQl2X2F0dHJzICY9IH4oMSA8 PCBPVlNfS0VZX0FUVFJfVkxBTik7CisJCQl2X2F0dHJzICY9IH4oMSA8PCBPVlNfS0VZX0FUVFJf RVRIRVJUWVBFKTsKKwkJfQorCQkqa2V5X2F0dHJzIHw9IHZfYXR0cnM7CisKKwkJaWYgKCppZV92 YWxpZCkgeworCQkJZXJyID0gcGFyc2VfZmxvd19ubGF0dHJzKCpubGEsIGEsIGtleV9hdHRycywg bG9nKTsKKwkJCWlmIChlcnIpCisJCQkJcmV0dXJuIGVycjsKKwkJfQorCisJfSBlbHNlIHsKKwkJ dTY0IG1hc2tfdl9hdHRycyA9IDA7CisKKwkJZXJyID0gcGFyc2VfZmxvd19tYXNrX25sYXR0cnMo Km5sYSwgYSwgJm1hc2tfdl9hdHRycywgbG9nKTsKKwkJaWYgKGVycikKKwkJCXJldHVybiBlcnI7 CisKKwkJaWYgKG1hc2tfdl9hdHRycyAmIDEgPDwgT1ZTX0tFWV9BVFRSX0VOQ0FQKSB7CisJCQlp ZiAoISppZV92YWxpZCkgeworCQkJCU9WU19OTEVSUihsb2csICJFbmNhcCBtYXNrIGF0dHJpYnV0 ZSBpcyBzZXQgZm9yIG5vbi1DVkxBTiBmcmFtZS4iKTsKKwkJCQllcnIgPSAtRUlOVkFMOworCQkJ CXJldHVybiBlcnI7CisJCQl9CisJCQllbmNhcCA9IGFbT1ZTX0tFWV9BVFRSX0VOQ0FQXTsKKwkJ CW1hc2tfdl9hdHRycyAmPSB+KDEgPDwgT1ZTX0tFWV9BVFRSX0VOQ0FQKTsKKworCQkJZXJyID0g Y3VzdF92bGFuX2Zyb21fbmxhdHRycyhtYXRjaCwgYSwgaXNfbWFzaywgbG9nKTsKKwkJCWlmIChl cnIpCisJCQkJcmV0dXJuIGVycjsKKwkJCSpubGEgPSBlbmNhcDsKKworCQkJbWFza192X2F0dHJz ICY9IH4oMVVMTCA8PCBPVlNfS0VZX0FUVFJfVkxBTik7CisJCQltYXNrX3ZfYXR0cnMgJj0gfigx VUxMIDw8IE9WU19LRVlfQVRUUl9FVEhFUlRZUEUpOworCQl9CisKKwkJKmtleV9hdHRycyB8PSBt YXNrX3ZfYXR0cnM7CisJCWlmICgqaWVfdmFsaWQpIHsKKwkJCWVyciA9IHBhcnNlX2Zsb3dfbWFz a19ubGF0dHJzKCpubGEsIGEsIGtleV9hdHRycywgbG9nKTsKKwkJCWlmIChlcnIpCisJCQkJcmV0 dXJuIGVycjsKKwkJfQorCX0KKwlyZXR1cm4gMDsKK30KKwogLyoqCiAgKiBvdnNfbmxhX2dldF9t YXRjaCAtIHBhcnNlcyBOZXRsaW5rIGF0dHJpYnV0ZXMgaW50byBhIGZsb3cga2V5IGFuZAogICog bWFzay4gSW4gY2FzZSB0aGUgJ21hc2snIGlzIE5VTEwsIHRoZSBmbG93IGlzIHRyZWF0ZWQgYXMg ZXhhY3QgbWF0Y2gKQEAgLTEwOTEsNiArMTE5OSw3IEBAIGludCBvdnNfbmxhX2dldF9tYXRjaChz dHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzd19mbG93X21hdGNoICptYXRjaCwKIAl1NjQga2V5X2F0 dHJzID0gMDsKIAl1NjQgbWFza19hdHRycyA9IDA7CiAJYm9vbCBlbmNhcF92YWxpZCA9IGZhbHNl OworCWJvb2wgaV9lbmNhcF92YWxpZCA9IGZhbHNlOwogCWludCBlcnI7CiAKIAllcnIgPSBwYXJz ZV9mbG93X25sYXR0cnMobmxhX2tleSwgYSwgJmtleV9hdHRycywgbG9nKTsKQEAgLTEwOTksMTEg KzEyMDgsMTEgQEAgaW50IG92c19ubGFfZ2V0X21hdGNoKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0 IHN3X2Zsb3dfbWF0Y2ggKm1hdGNoLAogCiAJaWYgKChrZXlfYXR0cnMgJiAoMSA8PCBPVlNfS0VZ X0FUVFJfRVRIRVJORVQpKSAmJgogCSAgICAoa2V5X2F0dHJzICYgKDEgPDwgT1ZTX0tFWV9BVFRS X0VUSEVSVFlQRSkpICYmCi0JICAgIChubGFfZ2V0X2JlMTYoYVtPVlNfS0VZX0FUVFJfRVRIRVJU WVBFXSkgPT0gaHRvbnMoRVRIX1BfODAyMVEpKSkgeworCSAgICBldGhfdHlwZV92bGFuKG5sYV9n ZXRfYmUxNihhW09WU19LRVlfQVRUUl9FVEhFUlRZUEVdKSkpIHsKIAkJX19iZTE2IHRjaTsKIAot CQlpZiAoISgoa2V5X2F0dHJzICYgKDEgPDwgT1ZTX0tFWV9BVFRSX1ZMQU4pKSAmJgotCQkgICAg ICAoa2V5X2F0dHJzICYgKDEgPDwgT1ZTX0tFWV9BVFRSX0VOQ0FQKSkpKSB7CisJCWlmICghKChr ZXlfYXR0cnMgJiAoMVVMTCA8PCBPVlNfS0VZX0FUVFJfVkxBTikpICYmCisJCSAgICAgIChrZXlf YXR0cnMgJiAoMVVMTCA8PCBPVlNfS0VZX0FUVFJfRU5DQVApKSkpIHsKIAkJCU9WU19OTEVSUihs b2csICJJbnZhbGlkIFZsYW4gZnJhbWUuIik7CiAJCQlyZXR1cm4gLUVJTlZBTDsKIAkJfQpAQCAt MTExNSw5ICsxMjI0LDEyIEBAIGludCBvdnNfbmxhX2dldF9tYXRjaChzdHJ1Y3QgbmV0ICpuZXQs IHN0cnVjdCBzd19mbG93X21hdGNoICptYXRjaCwKIAkJZW5jYXBfdmFsaWQgPSB0cnVlOwogCiAJ CWlmICh0Y2kgJiBodG9ucyhWTEFOX1RBR19QUkVTRU5UKSkgewotCQkJZXJyID0gcGFyc2VfZmxv d19ubGF0dHJzKGVuY2FwLCBhLCAma2V5X2F0dHJzLCBsb2cpOworCQkJZXJyID0gcGFyc2Vfdmxh bl9mcm9tX25sYXR0cnMoJmVuY2FwLCBtYXRjaCwgJmtleV9hdHRycywKKwkJCQkJCSAgICAgICZp X2VuY2FwX3ZhbGlkLCBhLCBmYWxzZSwKKwkJCQkJCSAgICAgIGxvZyk7CiAJCQlpZiAoZXJyKQog CQkJCXJldHVybiBlcnI7CisKIAkJfSBlbHNlIGlmICghdGNpKSB7CiAJCQkvKiBDb3JuZXIgY2Fz ZSBmb3IgdHJ1bmNhdGVkIDgwMi4xUSBoZWFkZXIuICovCiAJCQlpZiAobmxhX2xlbihlbmNhcCkp IHsKQEAgLTExNjksNyArMTI4MSw3IEBAIGludCBvdnNfbmxhX2dldF9tYXRjaChzdHJ1Y3QgbmV0 ICpuZXQsIHN0cnVjdCBzd19mbG93X21hdGNoICptYXRjaCwKIAkJCWdvdG8gZnJlZV9uZXdtYXNr OwogCiAJCS8qIEFsd2F5cyBtYXRjaCBvbiB0Y2kuICovCi0JCVNXX0ZMT1dfS0VZX1BVVChtYXRj aCwgZXRoLnRjaSwgaHRvbnMoMHhmZmZmKSwgdHJ1ZSk7CisJCVNXX0ZMT1dfS0VZX1BVVChtYXRj aCwgZXRoLnZsYW4udGNpLCBodG9ucygweGZmZmYpLCB0cnVlKTsKIAogCQlpZiAobWFza19hdHRy cyAmIDEgPDwgT1ZTX0tFWV9BVFRSX0VOQ0FQKSB7CiAJCQlfX2JlMTYgZXRoX3R5cGUgPSAwOwpA QCAtMTE4OCwxMCArMTMwMCwxMyBAQCBpbnQgb3ZzX25sYV9nZXRfbWF0Y2goc3RydWN0IG5ldCAq bmV0LCBzdHJ1Y3Qgc3dfZmxvd19tYXRjaCAqbWF0Y2gsCiAJCQlpZiAoZXRoX3R5cGUgPT0gaHRv bnMoMHhmZmZmKSkgewogCQkJCW1hc2tfYXR0cnMgJj0gfigxIDw8IE9WU19LRVlfQVRUUl9FVEhF UlRZUEUpOwogCQkJCWVuY2FwID0gYVtPVlNfS0VZX0FUVFJfRU5DQVBdOwotCQkJCWVyciA9IHBh cnNlX2Zsb3dfbWFza19ubGF0dHJzKGVuY2FwLCBhLAotCQkJCQkJCSAgICAgICZtYXNrX2F0dHJz LCBsb2cpOworCQkJCWVyciA9IHBhcnNlX3ZsYW5fZnJvbV9ubGF0dHJzKCZlbmNhcCwgbWF0Y2gs CisJCQkJCQkJICAgICAgJm1hc2tfYXR0cnMsCisJCQkJCQkJICAgICAgJmlfZW5jYXBfdmFsaWQs CisJCQkJCQkJICAgICAgYSwgdHJ1ZSwgbG9nKTsKIAkJCQlpZiAoZXJyKQogCQkJCQlnb3RvIGZy ZWVfbmV3bWFzazsKKwogCQkJfSBlbHNlIHsKIAkJCQlPVlNfTkxFUlIobG9nLCAiVkxBTiBmcmFt ZXMgbXVzdCBoYXZlIGFuIGV4YWN0IG1hdGNoIG9uIHRoZSBUUElEIChtYXNrPSV4KS4iLAogCQkJ CQkgIG50b2hzKGV0aF90eXBlKSk7CkBAIC0xMzIwLDYgKzE0MzUsNyBAQCBzdGF0aWMgaW50IF9f b3ZzX25sYV9wdXRfa2V5KGNvbnN0IHN0cnVjdCBzd19mbG93X2tleSAqc3drZXksCiB7CiAJc3Ry dWN0IG92c19rZXlfZXRoZXJuZXQgKmV0aF9rZXk7CiAJc3RydWN0IG5sYXR0ciAqbmxhLCAqZW5j YXA7CisJc3RydWN0IG5sYXR0ciAqaW5fZW5jYXAgPSBOVUxMOwogCiAJaWYgKG5sYV9wdXRfdTMy KHNrYiwgT1ZTX0tFWV9BVFRSX1JFQ0lSQ19JRCwgb3V0cHV0LT5yZWNpcmNfaWQpKQogCQlnb3Rv IG5sYV9wdXRfZmFpbHVyZTsKQEAgLTEzNjgsMTcgKzE0ODQsMzYgQEAgc3RhdGljIGludCBfX292 c19ubGFfcHV0X2tleShjb25zdCBzdHJ1Y3Qgc3dfZmxvd19rZXkgKnN3a2V5LAogCWV0aGVyX2Fk ZHJfY29weShldGhfa2V5LT5ldGhfc3JjLCBvdXRwdXQtPmV0aC5zcmMpOwogCWV0aGVyX2FkZHJf Y29weShldGhfa2V5LT5ldGhfZHN0LCBvdXRwdXQtPmV0aC5kc3QpOwogCi0JaWYgKHN3a2V5LT5l dGgudGNpIHx8IHN3a2V5LT5ldGgudHlwZSA9PSBodG9ucyhFVEhfUF84MDIxUSkpIHsKKwlpZiAo c3drZXktPmV0aC52bGFuLnRjaSB8fCBldGhfdHlwZV92bGFuKHN3a2V5LT5ldGgudHlwZSkpIHsK IAkJX19iZTE2IGV0aF90eXBlOwotCQlldGhfdHlwZSA9ICFpc19tYXNrID8gaHRvbnMoRVRIX1Bf ODAyMVEpIDogaHRvbnMoMHhmZmZmKTsKKworCQlldGhfdHlwZSA9ICFpc19tYXNrID8gb3V0cHV0 LT5ldGgudmxhbi50cGlkIDogaHRvbnMoMHhmZmZmKTsKKwogCQlpZiAobmxhX3B1dF9iZTE2KHNr YiwgT1ZTX0tFWV9BVFRSX0VUSEVSVFlQRSwgZXRoX3R5cGUpIHx8Ci0JCSAgICBubGFfcHV0X2Jl MTYoc2tiLCBPVlNfS0VZX0FUVFJfVkxBTiwgb3V0cHV0LT5ldGgudGNpKSkKKwkJICAgIG5sYV9w dXRfYmUxNihza2IsIE9WU19LRVlfQVRUUl9WTEFOLCBvdXRwdXQtPmV0aC52bGFuLnRjaSkpCiAJ CQlnb3RvIG5sYV9wdXRfZmFpbHVyZTsKIAkJZW5jYXAgPSBubGFfbmVzdF9zdGFydChza2IsIE9W U19LRVlfQVRUUl9FTkNBUCk7Ci0JCWlmICghc3drZXktPmV0aC50Y2kpCisJCWlmICghc3drZXkt PmV0aC52bGFuLnRjaSkKIAkJCWdvdG8gdW5lbmNhcDsKLQl9IGVsc2UKKwkJaWYgKHN3a2V5LT5l dGguY3ZsYW4udGNpKSB7CisJCQlfX2JlMTYgZXRoX3R5cGU7CisKKwkJCS8qIEN1c3RvbWVyIHRj aSBpcyBuZXN0ZWQgYnV0IHVzZXMgc2FtZSBrZXkgYXR0cmlidXRlLgorCQkJICovCisJCQlldGhf dHlwZSA9ICFpc19tYXNrID8gb3V0cHV0LT5ldGguY3ZsYW4udHBpZCA6CisJCQkJCSAgICAgIGh0 b25zKDB4ZmZmZik7CisJCQlpZiAobmxhX3B1dF9iZTE2KHNrYiwgT1ZTX0tFWV9BVFRSX0VUSEVS VFlQRSwKKwkJCQkJIGV0aF90eXBlKSB8fAorCQkJICAgIG5sYV9wdXRfYmUxNihza2IsIE9WU19L RVlfQVRUUl9WTEFOLAorCQkJCQkgb3V0cHV0LT5ldGguY3ZsYW4udGNpKSkKKwkJCQlnb3RvIG5s YV9wdXRfZmFpbHVyZTsKKwkJCWluX2VuY2FwID0gbmxhX25lc3Rfc3RhcnQoc2tiLCBPVlNfS0VZ X0FUVFJfRU5DQVApOworCQkJaWYgKCFzd2tleS0+ZXRoLmN2bGFuLnRjaSkKKwkJCQlnb3RvIHVu ZW5jYXA7CisJCX0KKwl9IGVsc2UgewogCQllbmNhcCA9IE5VTEw7CisJfQogCiAJaWYgKHN3a2V5 LT5ldGgudHlwZSA9PSBodG9ucyhFVEhfUF84MDJfMikpIHsKIAkJLyoKQEAgLTE1MjUsNiArMTY2 MCw4IEBAIHN0YXRpYyBpbnQgX19vdnNfbmxhX3B1dF9rZXkoY29uc3Qgc3RydWN0IHN3X2Zsb3df a2V5ICpzd2tleSwKIHVuZW5jYXA6CiAJaWYgKGVuY2FwKQogCQlubGFfbmVzdF9lbmQoc2tiLCBl bmNhcCk7CisJaWYgKGluX2VuY2FwKQorCQlubGFfbmVzdF9lbmQoc2tiLCBpbl9lbmNhcCk7CiAK IAlyZXR1cm4gMDsKIApAQCAtMjE3NCw3ICsyMzExLDcgQEAgc3RhdGljIGludCBfX292c19ubGFf Y29weV9hY3Rpb25zKHN0cnVjdCBuZXQgKm5ldCwgY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0ciwK IAogCQljYXNlIE9WU19BQ1RJT05fQVRUUl9QVVNIX1ZMQU46CiAJCQl2bGFuID0gbmxhX2RhdGEo YSk7Ci0JCQlpZiAodmxhbi0+dmxhbl90cGlkICE9IGh0b25zKEVUSF9QXzgwMjFRKSkKKwkJCWlm ICghZXRoX3R5cGVfdmxhbih2bGFuLT52bGFuX3RwaWQpKQogCQkJCXJldHVybiAtRUlOVkFMOwog CQkJaWYgKCEodmxhbi0+dmxhbl90Y2kgJiBodG9ucyhWTEFOX1RBR19QUkVTRU5UKSkpCiAJCQkJ cmV0dXJuIC1FSU5WQUw7CkBAIC0yMjc5LDcgKzI0MTYsNyBAQCBpbnQgb3ZzX25sYV9jb3B5X2Fj dGlvbnMoc3RydWN0IG5ldCAqbmV0LCBjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLAogCiAJKCpz ZmEpLT5vcmlnX2xlbiA9IG5sYV9sZW4oYXR0cik7CiAJZXJyID0gX19vdnNfbmxhX2NvcHlfYWN0 aW9ucyhuZXQsIGF0dHIsIGtleSwgMCwgc2ZhLCBrZXktPmV0aC50eXBlLAotCQkJCSAgICAga2V5 LT5ldGgudGNpLCBsb2cpOworCQkJCSAgICAga2V5LT5ldGgudmxhbi50Y2ksIGxvZyk7CiAJaWYg KGVycikKIAkJb3ZzX25sYV9mcmVlX2Zsb3dfYWN0aW9ucygqc2ZhKTsKIApkaWZmIC0tZ2l0IGEv bmV0L29wZW52c3dpdGNoL3Zwb3J0LW5ldGRldi5jIGIvbmV0L29wZW52c3dpdGNoL3Zwb3J0LW5l dGRldi5jCmluZGV4IGY3ZThkY2MuLmQyNTgxYjcgMTAwNjQ0Ci0tLSBhL25ldC9vcGVudnN3aXRj aC92cG9ydC1uZXRkZXYuYworKysgYi9uZXQvb3BlbnZzd2l0Y2gvdnBvcnQtbmV0ZGV2LmMKQEAg LTE5NCw3ICsxOTQsOSBAQCBzdGF0aWMgdW5zaWduZWQgaW50IHBhY2tldF9sZW5ndGgoY29uc3Qg c3RydWN0IHNrX2J1ZmYgKnNrYikKIHsKIAl1bnNpZ25lZCBpbnQgbGVuZ3RoID0gc2tiLT5sZW4g LSBFVEhfSExFTjsKIAotCWlmIChza2ItPnByb3RvY29sID09IGh0b25zKEVUSF9QXzgwMjFRKSkK KwlpZiAoZXRoX3R5cGVfdmxhbihza2ItPnByb3RvY29sKSkKKwkJbGVuZ3RoIC09IFZMQU5fSExF TjsKKwlpZiAoc2tiLT5wcm90b2NvbCA9PSBodG9ucyhFVEhfUF84MDIxQUQpKQogCQlsZW5ndGgg LT0gVkxBTl9ITEVOOwogCiAJcmV0dXJuIGxlbmd0aDsKLS0gCjIuNC4zCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkZXYgbWFpbGluZyBsaXN0CmRldkBv cGVudnN3aXRjaC5vcmcKaHR0cDovL29wZW52c3dpdGNoLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Rl dgo=