From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jamal Hadi Salim Subject: iproute2: tc action jump Date: Thu, 27 Apr 2017 21:54:13 -0400 Message-ID: <3a59ecb3-3bdd-60d1-ffa0-5df284f4ccb5@mojatatu.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------30B14B6BAC9C2C7A0AD920F0" Cc: "netdev@vger.kernel.org" To: Jiri Pirko Return-path: Received: from mail-io0-f181.google.com ([209.85.223.181]:35882 "EHLO mail-io0-f181.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S938480AbdD1ByP (ORCPT ); Thu, 27 Apr 2017 21:54:15 -0400 Received: by mail-io0-f181.google.com with SMTP id p80so44225250iop.3 for ; Thu, 27 Apr 2017 18:54:15 -0700 (PDT) Sender: netdev-owner@vger.kernel.org List-ID: This is a multi-part message in MIME format. --------------30B14B6BAC9C2C7A0AD920F0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Attached. Needs some cleanup and more testing (I only tested a few of these actions - should work, just need to vet before official submission). cheers, jamal --------------30B14B6BAC9C2C7A0AD920F0 Content-Type: text/plain; charset=UTF-8; name="tc-jump-actions" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="tc-jump-actions" ZGlmZiAtLWdpdCBhL3RjL21fY29ubm1hcmsuYyBiL3RjL21fY29ubm1hcmsuYwppbmRleCAy OTVmOTBkLi5iZGI2MTk1IDEwMDY0NAotLS0gYS90Yy9tX2Nvbm5tYXJrLmMKKysrIGIvdGMv bV9jb25ubWFyay5jCkBAIC04MSw3ICs4MSw3IEBAIHBhcnNlX2Nvbm5tYXJrKHN0cnVjdCBh Y3Rpb25fdXRpbCAqYSwgaW50ICphcmdjX3AsIGNoYXIgKioqYXJndl9wLCBpbnQgdGNhX2lk LAogCX0KIAogCXNlbC5hY3Rpb24gPSBUQ19BQ1RfUElQRTsKLQlpZiAoYXJnYyAmJiAhYWN0 aW9uX2EybigqYXJndiwgJnNlbC5hY3Rpb24sIGZhbHNlKSkKKwlpZiAoYXJnYyAmJiAhYWN0 aW9uX2Eybl9qbXAoJmFyZ2MsICZhcmd2LCAmc2VsLmFjdGlvbiwgZmFsc2UpKQogCQlORVhU X0FSR19GV0QoKTsKIAogCWlmIChhcmdjKSB7CmRpZmYgLS1naXQgYS90Yy9tX2NzdW0uYyBi L3RjL21fY3N1bS5jCmluZGV4IDBlZThjYWQuLmU3ODE1MjAgMTAwNjQ0Ci0tLSBhL3RjL21f Y3N1bS5jCisrKyBiL3RjL21fY3N1bS5jCkBAIC0xMjMsNyArMTIzLDcgQEAgcGFyc2VfY3N1 bShzdHJ1Y3QgYWN0aW9uX3V0aWwgKmEsIGludCAqYXJnY19wLAogCQlyZXR1cm4gLTE7CiAJ fQogCi0JaWYgKGFyZ2MgJiYgIWFjdGlvbl9hMm4oKmFyZ3YsICZzZWwuYWN0aW9uLCBmYWxz ZSkpCisJaWYgKGFyZ2MgJiYgIWFjdGlvbl9hMm5fam1wKCZhcmdjLCAmYXJndiwgJnNlbC5h Y3Rpb24sIGZhbHNlKSkKIAkJTkVYVF9BUkdfRldEKCk7CiAKIAlpZiAoYXJnYykgewpkaWZm IC0tZ2l0IGEvdGMvbV9nYWN0LmMgYi90Yy9tX2dhY3QuYwppbmRleCA3NTVhM2JlLi43YTkz ZDI3IDEwMDY0NAotLS0gYS90Yy9tX2dhY3QuYworKysgYi90Yy9tX2dhY3QuYwpAQCAtNjgs MTUgKzY4LDIyIEBAIHVzYWdlKHZvaWQpCiAJZXhpdCgtMSk7CiB9CiAKKy8qIFhYWDogT2Jz b2xldGUgdGhpcyBmdW5jdGlvbiAqLwogc3RhdGljIGludAotZ2V0X2FjdChjaGFyICoqKmFy Z3ZfcCkKK2dldF9hY3QoaW50ICphcmdjX3AsIGNoYXIgKioqYXJndl9wKQogeworCWNoYXIg Kiphcmd2ID0gKmFyZ3ZfcDsKKwlpbnQgYXJnYyA9ICphcmdjX3A7CiAJaW50IG47CiAKLQlp ZiAoYWN0aW9uX2EybigqKmFyZ3ZfcCwgJm4sIGZhbHNlKSkgeworCWlmIChhY3Rpb25fYTJu X2ptcCgmYXJnYywgJmFyZ3YsICZuLCBmYWxzZSkpIHsKIAkJZnByaW50ZihzdGRlcnIsICJi YWQgYWN0aW9uIHR5cGUgJXNcbiIsICoqYXJndl9wKTsKIAkJcmV0dXJuIC0xMDsKIAl9CisK KwkqYXJnY19wID0gYXJnYzsKKwkqYXJndl9wID0gYXJndjsKKwogCXJldHVybiBuOwogfQog CkBAIC0xMDIsNyArMTA5LDcgQEAgcGFyc2VfZ2FjdChzdHJ1Y3QgYWN0aW9uX3V0aWwgKmEs IGludCAqYXJnY19wLCBjaGFyICoqKmFyZ3ZfcCwKIAlpZiAobWF0Y2hlcygqYXJndiwgImdh Y3QiKSA9PSAwKSB7CiAJCW9rKys7CiAJfSBlbHNlIHsKLQkJYWN0aW9uID0gZ2V0X2FjdCgm YXJndik7CisJCWFjdGlvbiA9IGdldF9hY3QoJmFyZ2MsICZhcmd2KTsKIAkJaWYgKGFjdGlv biAhPSAtMTApIHsKIAkJCXAuYWN0aW9uID0gYWN0aW9uOwogCQkJb2srKzsKQEAgLTEzMywx MyArMTQwLDE1IEBAIHBhcnNlX2dhY3Qoc3RydWN0IGFjdGlvbl91dGlsICphLCBpbnQgKmFy Z2NfcCwgY2hhciAqKiphcmd2X3AsCiAJCQkJcmV0dXJuIC0xOwogCQkJfQogCi0JCQlhY3Rp b24gPSBnZXRfYWN0KCZhcmd2KTsKKwkJCWFjdGlvbiA9IGdldF9hY3QoJmFyZ2MsICZhcmd2 KTsKIAkJCWlmIChhY3Rpb24gIT0gLTEwKSB7IC8qIEZJWE1FICovCiAJCQkJcHAucGFjdGlv biA9IGFjdGlvbjsKIAkJCX0gZWxzZSB7CiAJCQkJZXhwbGFpbigpOwogCQkJCXJldHVybiAt MTsKIAkJCX0KKwkJCS8vWFhYOiByZW1vdmUgdGhlIGFyZ2MgYmVsb3cgYWZ0ZXIgdGVzdGlu ZyB3aXRoIHJhbmRvbQorCQkJLy8uLgogCQkJYXJnYy0tOwogCQkJYXJndisrOwogCQkJaWYg KGdldF91MTYoJnBwLnB2YWwsICphcmd2LCAxMCkpIHsKZGlmZiAtLWdpdCBhL3RjL21faWZl LmMgYi90Yy9tX2lmZS5jCmluZGV4IGY2MTMxYjEuLjIzZWI2MzcgMTAwNjQ0Ci0tLSBhL3Rj L21faWZlLmMKKysrIGIvdGMvbV9pZmUuYwpAQCAtMTU2LDcgKzE1Niw3IEBAIHN0YXRpYyBp bnQgcGFyc2VfaWZlKHN0cnVjdCBhY3Rpb25fdXRpbCAqYSwgaW50ICphcmdjX3AsIGNoYXIg KioqYXJndl9wLAogCQlhcmd2Kys7CiAJfQogCi0JaWYgKGFyZ2MgJiYgIWFjdGlvbl9hMm4o KmFyZ3YsICZwLmFjdGlvbiwgZmFsc2UpKQorCWlmIChhcmdjICYmICFhY3Rpb25fYTJuX2pt cCgmYXJnYywgJmFyZ3YsICZwLmFjdGlvbiwgZmFsc2UpKQogCQlORVhUX0FSR19GV0QoKTsK IAogCWlmIChhcmdjKSB7CmRpZmYgLS1naXQgYS90Yy9tX21pcnJlZC5jIGIvdGMvbV9taXJy ZWQuYwppbmRleCBlOTQzODkwLi45MWM2ZjgzIDEwMDY0NAotLS0gYS90Yy9tX21pcnJlZC5j CisrKyBiL3RjL21fbWlycmVkLmMKQEAgLTE3Miw3ICsxNzIsNyBAQCBwYXJzZV9kaXJlY3Rp b24oc3RydWN0IGFjdGlvbl91dGlsICphLCBpbnQgKmFyZ2NfcCwgY2hhciAqKiphcmd2X3As CiAKIAlpZiAoYXJnYyAmJgogCSAgICAocC5lYWN0aW9uID09IFRDQV9FR1JFU1NfTUlSUk9S IHx8IHAuZWFjdGlvbiA9PSBUQ0FfSU5HUkVTU19NSVJST1IpCi0JICAgICYmICFhY3Rpb25f YTJuKCphcmd2LCAmcC5hY3Rpb24sIGZhbHNlKSkKKwkgICAgJiYgIWFjdGlvbl9hMm5fam1w KCZhcmdjLCAmYXJndiwgJnAuYWN0aW9uLCBmYWxzZSkpCiAJCU5FWFRfQVJHKCk7CiAKIAlp ZiAoYXJnYykgewpkaWZmIC0tZ2l0IGEvdGMvbV9uYXQuYyBiL3RjL21fbmF0LmMKaW5kZXgg NTI1ZjE4NS4uYTk4NTE2NSAxMDA2NDQKLS0tIGEvdGMvbV9uYXQuYworKysgYi90Yy9tX25h dC5jCkBAIC0xMTUsNyArMTE1LDcgQEAgcGFyc2VfbmF0KHN0cnVjdCBhY3Rpb25fdXRpbCAq YSwgaW50ICphcmdjX3AsIGNoYXIgKioqYXJndl9wLCBpbnQgdGNhX2lkLCBzdHJ1Y3QKIAkJ cmV0dXJuIC0xOwogCX0KIAotCWlmIChhcmdjICYmICFhY3Rpb25fYTJuKCphcmd2LCAmc2Vs LmFjdGlvbiwgZmFsc2UpKQorCWlmIChhcmdjICYmICFhY3Rpb25fYTJuX2ptcCgmYXJnYywg JmFyZ3YsICZzZWwuYWN0aW9uLCBmYWxzZSkpCiAJCU5FWFRfQVJHX0ZXRCgpOwogCiAJaWYg KGFyZ2MpIHsKZGlmZiAtLWdpdCBhL3RjL21fcGVkaXQuYyBiL3RjL21fcGVkaXQuYwppbmRl eCA4ZTliZjA3Li40YjhmZjFhIDEwMDY0NAotLS0gYS90Yy9tX3BlZGl0LmMKKysrIGIvdGMv bV9wZWRpdC5jCkBAIC00ODEsNyArNDgxLDcgQEAgaW50IHBhcnNlX3BlZGl0KHN0cnVjdCBh Y3Rpb25fdXRpbCAqYSwgaW50ICphcmdjX3AsIGNoYXIgKioqYXJndl9wLCBpbnQgdGNhX2lk LAogCQlyZXR1cm4gLTE7CiAJfQogCi0JaWYgKGFyZ2MgJiYgIWFjdGlvbl9hMm4oKmFyZ3Ys ICZzZWwuc2VsLmFjdGlvbiwgZmFsc2UpKQorCWlmIChhcmdjICYmICFhY3Rpb25fYTJuX2pt cCgmYXJnYywgJmFyZ3YsICZzZWwuc2VsLmFjdGlvbiwgZmFsc2UpKQogCQlORVhUX0FSRygp OwogCiAJaWYgKGFyZ2MpIHsKZGlmZiAtLWdpdCBhL3RjL21fcG9saWNlLmMgYi90Yy9tX3Bv bGljZS5jCmluZGV4IDIyNmUyMGUuLjcxZTY0ZmUgMTAwNjQ0Ci0tLSBhL3RjL21fcG9saWNl LmMKKysrIGIvdGMvbV9wb2xpY2UuYwpAQCAtNTAsMjQgKzUwLDkxIEBAIHN0YXRpYyB2b2lk IGV4cGxhaW4xKGNoYXIgKmFyZykKIAlmcHJpbnRmKHN0ZGVyciwgIklsbGVnYWwgXCIlc1wi XG4iLCBhcmcpOwogfQogCi1zdGF0aWMgaW50IGdldF9wb2xpY2VfcmVzdWx0KGludCAqYWN0 aW9uLCBpbnQgKnJlc3VsdCwgY2hhciAqYXJnKQorc3RhdGljIGludCBnZXRfcG9saWNlX3Jl c3VsdChpbnQgKmFjdGlvbiwgaW50ICpyZXN1bHQsIGludCAqYXJnY19wLAorCQkJICAgICBj aGFyICoqKmFyZ3ZfcCkKIHsKLQljaGFyICpwID0gc3RyY2hyKGFyZywgJy8nKTsKKwljaGFy ICoqYXJndiA9ICphcmd2X3A7CisJaW50IGFyZ2MgPSAqYXJnY19wOworCWNoYXIgKnAgPSBz dHJjaHIoKmFyZ3YsICcvJyk7CisJaW50IHNraXBfYXJncyA9IDA7CiAKIAlpZiAocCkKIAkJ KnAgPSAwOwogCi0JaWYgKGFjdGlvbl9hMm4oYXJnLCBhY3Rpb24sIHRydWUpKSB7CisJaWYg KGFjdGlvbl9hMm4oKmFyZ3YsIGFjdGlvbiwgdHJ1ZSkpIHsKIAkJaWYgKHApCiAJCQkqcCA9 ICcvJzsKIAkJcmV0dXJuIC0xOwogCX0KIAorCWlmICgqYWN0aW9uID09IFRDX0FDVF9KVU1Q KSB7CisJCV9fdTMyIGFjdF9nb3RvX2NudCA9IDA7CisKKwkJYXJndisrOworCQlhcmdjLS07 CisJCXAgPSBzdHJjaHIoKmFyZ3YsICcvJyk7IC8qd2FzIGF0ICJqdW1wIiAqLworCQlpZiAo cCkKKwkJCSpwID0gMDsKKworCQlpZiAoZ2V0X3UzMigmYWN0X2dvdG9fY250LCAqYXJndiwg MTApKSB7CisJCQlpZiAocCkKKwkJCQkqcCA9ICcvJzsKKwkJCWZwcmludGYoc3RkZXJyLCAi YmFkIGFjdGlvbiBqbXAgY291bnQgJXNcbiIsCisJCQkJKmFyZ3YpOworCQkJcmV0dXJuIC0x OworCQl9CisKKwkJaWYgKGFjdF9nb3RvX2NudCA+IDMyLypNQVhfUFJJTyovIHx8ICFhY3Rf Z290b19jbnQpIHsKKwkJCWlmIChwKQorCQkJCSpwID0gJy8nOworCQkJZnByaW50ZihzdGRl cnIsICJCYWQgam1wIHJhbmdlICVzOiBOZWVkIFsxLDMyXVxuIiwKKwkJCQkqYXJndik7CisJ CQlyZXR1cm4gLTE7CisJCX0KKworCQkqYWN0aW9uIHw9IGFjdF9nb3RvX2NudDsKKwkJYXJn disrOworCQlhcmdjLS07CisJCXNraXBfYXJncyArPSAxOworCX0KKwogCWlmIChwKSB7CiAJ CSpwID0gJy8nOwogCQlpZiAoYWN0aW9uX2EybihwKzEsIHJlc3VsdCwgdHJ1ZSkpCiAJCQly ZXR1cm4gLTE7CiAJfQorCisJaWYgKCpyZXN1bHQgPT0gVENfQUNUX0pVTVApIHsKKwkJX191 MzIgZ290b19jbnQgPSAwOworCisJCWlmICghc2tpcF9hcmdzKSB7CisJCQlhcmd2Kys7CisJ CQlhcmdjLS07CisJCX0KKworCQlpZiAoZ2V0X3UzMigmZ290b19jbnQsICphcmd2LCAxMCkp IHsKKwkJCWlmIChwKQorCQkJCSpwID0gJy8nOworCQkJZnByaW50ZihzdGRlcnIsICJiYWQg cmVzdWx0IGptcCBjb3VudCAlc1xuIiwKKwkJCQkqYXJndik7CisJCQlyZXR1cm4gLTE7CisJ CX0KKworCQlpZiAoZ290b19jbnQgPiAzMi8qTUFYX1BSSU8qLyB8fCAhZ290b19jbnQpIHsK KwkJCWlmIChwKQorCQkJCSpwID0gJy8nOworCQkJZnByaW50ZihzdGRlcnIsICJCYWQgcmVz dWx0IGptcCByYW5nZSAlczogTmVlZFsxLDMyXVxuIiwKKwkJCQkqYXJndik7CisJCQlyZXR1 cm4gLTE7CisJCX0KKworCQkqcmVzdWx0IHw9IGdvdG9fY250OworCQlza2lwX2FyZ3MgKz0g MTsKKwl9CisKKwkqYXJnY19wIC09IHNraXBfYXJnczsKKwkqYXJndl9wICs9IHNraXBfYXJn czsKKwogCXJldHVybiAwOwogfQogCkBAIC0xNzksNyArMjQ2LDggQEAgaW50IGFjdF9wYXJz ZV9wb2xpY2Uoc3RydWN0IGFjdGlvbl91dGlsICphLCBpbnQgKmFyZ2NfcCwgY2hhciAqKiph cmd2X3AsCiAJCQlwLmFjdGlvbiA9IFRDX1BPTElDRV9QSVBFOwogCQl9IGVsc2UgaWYgKHN0 cmNtcCgqYXJndiwgImNvbmZvcm0tZXhjZWVkIikgPT0gMCkgewogCQkJTkVYVF9BUkcoKTsK LQkJCWlmIChnZXRfcG9saWNlX3Jlc3VsdCgmcC5hY3Rpb24sICZwcmVzdWx0LCAqYXJndikp IHsKKwkJCWlmIChnZXRfcG9saWNlX3Jlc3VsdCgmcC5hY3Rpb24sICZwcmVzdWx0LCAmYXJn YywKKwkJCQkJICAgICAgJmFyZ3YpKSB7CiAJCQkJZnByaW50ZihzdGRlcnIsICJJbGxlZ2Fs IFwiYWN0aW9uXCJcbiIpOwogCQkJCXJldHVybiAtMTsKIAkJCX0KZGlmZiAtLWdpdCBhL3Rj L21fc2ltcGxlLmMgYi90Yy9tX3NpbXBsZS5jCmluZGV4IDNhOGJkOTEuLmQzNzZmNTEgMTAw NjQ0Ci0tLSBhL3RjL21fc2ltcGxlLmMKKysrIGIvdGMvbV9zaW1wbGUuYwpAQCAtMTIwLDcg KzEyMCw3IEBAIHBhcnNlX3NpbXBsZShzdHJ1Y3QgYWN0aW9uX3V0aWwgKmEsIGludCAqYXJn Y19wLCBjaGFyICoqKmFyZ3ZfcCwgaW50IHRjYV9pZCwKIAkJfQogCX0KIAotCWlmIChhcmdj ICYmICFhY3Rpb25fYTJuKCphcmd2LCAmc2VsLmFjdGlvbiwgZmFsc2UpKQorCWlmIChhcmdj ICYmICFhY3Rpb25fYTJuX2ptcCgmYXJnYywgJmFyZ3YsICZzZWwuYWN0aW9uLCBmYWxzZSkp CiAJCU5FWFRfQVJHX0ZXRCgpOwogCiAJaWYgKGFyZ2MpIHsKZGlmZiAtLWdpdCBhL3RjL21f c2tiZWRpdC5jIGIvdGMvbV9za2JlZGl0LmMKaW5kZXggNjM4NzE1Zi4uMDliYWIxNSAxMDA2 NDQKLS0tIGEvdGMvbV9za2JlZGl0LmMKKysrIGIvdGMvbV9za2JlZGl0LmMKQEAgLTEyMSw3 ICsxMjEsNyBAQCBwYXJzZV9za2JlZGl0KHN0cnVjdCBhY3Rpb25fdXRpbCAqYSwgaW50ICph cmdjX3AsIGNoYXIgKioqYXJndl9wLCBpbnQgdGNhX2lkLAogCX0KIAogCXNlbC5hY3Rpb24g PSBUQ19BQ1RfUElQRTsKLQlpZiAoYXJnYyAmJiAhYWN0aW9uX2EybigqYXJndiwgJnNlbC5h Y3Rpb24sIGZhbHNlKSkKKwlpZiAoYXJnYyAmJiAhYWN0aW9uX2Eybl9qbXAoJmFyZ2MsICZh cmd2LCAmc2VsLmFjdGlvbiwgZmFsc2UpKQogCQlORVhUX0FSRygpOwogCiAJaWYgKGFyZ2Mp IHsKZGlmZiAtLWdpdCBhL3RjL21fdHVubmVsX2tleS5jIGIvdGMvbV90dW5uZWxfa2V5LmMK aW5kZXggM2NlZWMxYy4uZjY5YjUxOCAxMDA2NDQKLS0tIGEvdGMvbV90dW5uZWxfa2V5LmMK KysrIGIvdGMvbV90dW5uZWxfa2V5LmMKQEAgLTE1OCw3ICsxNTgsNyBAQCBzdGF0aWMgaW50 IHBhcnNlX3R1bm5lbF9rZXkoc3RydWN0IGFjdGlvbl91dGlsICphLCBpbnQgKmFyZ2NfcCwg Y2hhciAqKiphcmd2X3AsCiAJCU5FWFRfQVJHX0ZXRCgpOwogCX0KIAotCWlmIChhcmdjICYm ICFhY3Rpb25fYTJuKCphcmd2LCAmcGFybS5hY3Rpb24sIGZhbHNlKSkKKwlpZiAoYXJnYyAm JiAhYWN0aW9uX2Eybl9qbXAoJmFyZ2MsICZhcmd2LCAmcGFybS5hY3Rpb24sIGZhbHNlKSkK IAkJTkVYVF9BUkdfRldEKCk7CiAKIAlpZiAoYXJnYykgewpkaWZmIC0tZ2l0IGEvdGMvbV92 bGFuLmMgYi90Yy9tX3ZsYW4uYwppbmRleCA0NGI5Mzc1Li42ODM3NzA2IDEwMDY0NAotLS0g YS90Yy9tX3ZsYW4uYworKysgYi90Yy9tX3ZsYW4uYwpAQCAtMTM0LDcgKzEzNCw3IEBAIHN0 YXRpYyBpbnQgcGFyc2VfdmxhbihzdHJ1Y3QgYWN0aW9uX3V0aWwgKmEsIGludCAqYXJnY19w LCBjaGFyICoqKmFyZ3ZfcCwKIAl9CiAKIAlwYXJtLmFjdGlvbiA9IFRDX0FDVF9QSVBFOwot CWlmIChhcmdjICYmICFhY3Rpb25fYTJuKCphcmd2LCAmcGFybS5hY3Rpb24sIGZhbHNlKSkK KwlpZiAoYXJnYyAmJiAhYWN0aW9uX2Eybl9qbXAoJmFyZ2MsICZhcmd2LCAmcGFybS5hY3Rp b24sIGZhbHNlKSkKIAkJTkVYVF9BUkdfRldEKCk7CiAKIAlpZiAoYXJnYykgewpkaWZmIC0t Z2l0IGEvdGMvdGNfdXRpbC5jIGIvdGMvdGNfdXRpbC5jCmluZGV4IDI0Y2ExZjEuLjcxY2U5 MTAgMTAwNjQ0Ci0tLSBhL3RjL3RjX3V0aWwuYworKysgYi90Yy90Y191dGlsLmMKQEAgLTQy OSw3ICs0MjksMTEgQEAgY29uc3QgY2hhciAqYWN0aW9uX24yYShpbnQgYWN0aW9uKQogCWNh c2UgVENfQUNUX1NUT0xFTjoKIAkJcmV0dXJuICJzdG9sZW4iOwogCWRlZmF1bHQ6Ci0JCXNu cHJpbnRmKGJ1ZiwgNjQsICIlZCIsIGFjdGlvbik7CisJCWlmIChhY3Rpb24gJiBUQ19BQ1Rf SlVNUCkgeworCQkJc25wcmludGYoYnVmLCA2NCwgImp1bXAgJWQiLCBhY3Rpb24mMHgxZmYp OworCQl9IGVsc2UgeworCQkJc25wcmludGYoYnVmLCA2NCwgIiVkIiwgYWN0aW9uKTsKKwkJ fQogCQlidWZbNjNdID0gJ1wwJzsKIAkJcmV0dXJuIGJ1ZjsKIAl9CkBAIC00NTksMTUgKzQ2 MywxOCBAQCBpbnQgYWN0aW9uX2EybihjaGFyICphcmcsIGludCAqcmVzdWx0LCBib29sIGFs bG93X251bSkKIAkJeyJvayIsIFRDX0FDVF9PS30sCiAJCXsicmVjbGFzc2lmeSIsIFRDX0FD VF9SRUNMQVNTSUZZfSwKIAkJeyJwaXBlIiwgVENfQUNUX1BJUEV9LAorCQl7Imp1bXAiLCBU Q19BQ1RfSlVNUH0sCiAJCXsgTlVMTCB9LAogCX0sICppdGVyOwogCiAJZm9yIChpdGVyID0g YTJuOyBpdGVyLT5hOyBpdGVyKyspIHsKIAkJaWYgKG1hdGNoZXMoYXJnLCBpdGVyLT5hKSAh PSAwKQogCQkJY29udGludWU7CisKIAkJKnJlc3VsdCA9IGl0ZXItPm47CiAJCXJldHVybiAw OwogCX0KKwogCWlmICghYWxsb3dfbnVtIHx8IHNzY2FuZihhcmcsICIlZCVjIiwgJm4sICZk dW1teSkgIT0gMSkKIAkJcmV0dXJuIC0xOwogCkBAIC00NzUsNiArNDgyLDQ0IEBAIGludCBh Y3Rpb25fYTJuKGNoYXIgKmFyZywgaW50ICpyZXN1bHQsIGJvb2wgYWxsb3dfbnVtKQogCXJl dHVybiAwOwogfQogCitpbnQgYWN0aW9uX2Eybl9qbXAoaW50ICphcmdjX3AsIGNoYXIgKioq YXJndl9wLCBpbnQgKnJlc3VsdCwgYm9vbCBhbGxvd19udW0pCit7CisJaW50IG47CisJY2hh ciBkdW1teTsKKwljaGFyICoqYXJndiA9ICphcmd2X3A7CisJaW50IGFyZ2MgPSAqYXJnY19w OworCisJaWYgKGFjdGlvbl9hMm4oKmFyZ3YsIHJlc3VsdCwgZmFsc2UpKSB7CisJCWZwcmlu dGYoc3RkZXJyLCAiYmFkIGptcCBhY3Rpb24gdHlwZSAlc1xuIiwgKiphcmd2X3ApOworCQly ZXR1cm4gLTEwOworCX0KKworCWlmICgqcmVzdWx0ID09IFRDX0FDVF9KVU1QKSB7CisJCV9f dTMyIGdvdG9fY250ID0gMDsKKworCQlhcmd2Kys7CisJCWFyZ2MtLTsKKwkJaWYgKGdldF91 MzIoJmdvdG9fY250LCAqYXJndiwgMTApKSB7CisJCQlmcHJpbnRmKHN0ZGVyciwgImJhZCBh Y3Rpb24gam1wIGNvdW50ICVzXG4iLAorCQkJCSphcmd2KTsKKwkJCXJldHVybiAtMTsKKwkJ fQorCisJCWlmIChnb3RvX2NudCA+IDMyLypNQVhfUFJJTyovIHx8ICFnb3RvX2NudCkgewor CQkJZnByaW50ZihzdGRlcnIsICJCYWQgam1wIHJhbmdlICVzOiBOZWVkIFsxLDMyXVxuIiwK KwkJCQkqYXJndik7CisJCQlyZXR1cm4gLTE7CisJCX0KKworCQkqcmVzdWx0IHw9IDE7CisJ fQorCisJKmFyZ2NfcCA9IGFyZ2M7CisJKmFyZ3ZfcCA9IGFyZ3Y7CisKKwlyZXR1cm4gMDsK K30KKwogaW50IGdldF9saW5rbGF5ZXIodW5zaWduZWQgaW50ICp2YWwsIGNvbnN0IGNoYXIg KmFyZykKIHsKIAlpbnQgcmVzOwpkaWZmIC0tZ2l0IGEvdGMvdGNfdXRpbC5oIGIvdGMvdGNf dXRpbC5oCmluZGV4IDRkYjI2YzYuLjIyOGFjOTggMTAwNjQ0Ci0tLSBhL3RjL3RjX3V0aWwu aAorKysgYi90Yy90Y191dGlsLmgKQEAgLTEwMiw2ICsxMDIsNyBAQCBpbnQgcGFyc2VfcG9s aWNlKGludCAqYXJnY19wLCBjaGFyICoqKmFyZ3ZfcCwgaW50IHRjYV9pZCwgc3RydWN0IG5s bXNnaGRyICpuKTsKIAogY29uc3QgY2hhciAqYWN0aW9uX24yYShpbnQgYWN0aW9uKTsKIGlu dCBhY3Rpb25fYTJuKGNoYXIgKmFyZywgaW50ICpyZXN1bHQsIGJvb2wgYWxsb3dfbnVtKTsK K2ludCBhY3Rpb25fYTJuX2ptcChpbnQgKmFyZ2NfcCwgY2hhciAqKiphcmcsIGludCAqcmVz dWx0LCBib29sIGFsbG93X251bSk7CiBpbnQgYWN0X3BhcnNlX3BvbGljZShzdHJ1Y3QgYWN0 aW9uX3V0aWwgKmEsIGludCAqYXJnY19wLAogCQkgICAgIGNoYXIgKioqYXJndl9wLCBpbnQg dGNhX2lkLCBzdHJ1Y3Qgbmxtc2doZHIgKm4pOwogaW50IHByaW50X3BvbGljZShzdHJ1Y3Qg YWN0aW9uX3V0aWwgKmEsIEZJTEUgKmYsIHN0cnVjdCBydGF0dHIgKnRiKTsK --------------30B14B6BAC9C2C7A0AD920F0--