MIME-Version: 1.0 Sender: ichiga2@...277... From: Kazuyoshi Aizawa Date: Thu, 29 Apr 2010 13:02:37 +0900 Message-ID: Content-Type: multipart/mixed; boundary=00163630fe27aa6bfc0485583351 Subject: [Openvpn-devel] [PATCH] TAP interface support for Solaris/OpenSolaris List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: openvpn-devel --00163630fe27aa6bfc0485583351 Content-Type: text/plain; charset=ISO-8859-1 Hi, I've attached a patch for tun.c which includes support for tap interface for solaris/opensolaris. The code is based on OpneVPN 2.1.1. And it has a routine to plumb/unplumb tap interface like ifconfig command. tap driver for solarsi/opensolaris is here: http://www.whiteboard.ne.jp/~admin2/tuntap/ Thanks, Kazuyoshi --------------- Kazuyoshi Aizawa --00163630fe27aa6bfc0485583351 Content-Type: application/octet-stream; name="tun.c_tap_solaris.patch" Content-Disposition: attachment; filename="tun.c_tap_solaris.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g8l1i4e70 LS0tIC4vb3BlbnZwbi0yLjEuMS1vcmcvdHVuLmMJRnJpIE5vdiAyMCAyMjowOToxNCAyMDA5Cisr KyAuL29wZW52cG4tMi4xLjEvdHVuLmMJVGh1IEFwciAyOSAxMToyNDo0OCAyMDEwCkBAIC02Myw2 ICs2Myw3IEBACiAKICNpZmRlZiBUQVJHRVRfU09MQVJJUwogc3RhdGljIHZvaWQgc29sYXJpc19l cnJvcl9jbG9zZSAoc3RydWN0IHR1bnRhcCAqdHQsIGNvbnN0IHN0cnVjdCBlbnZfc2V0ICplcywg Y29uc3QgY2hhciAqYWN0dWFsKTsKKyNpbmNsdWRlIDxzdHJvcHRzLmg+CiAjZW5kaWYKIAogYm9v bApAQCAtNzAxLDcgKzcwMiwxMyBAQAogCQkJICAgICk7CiAJfQogICAgICAgZWxzZQotCW5vX3Rh cF9pZmNvbmZpZyAoKTsKKyAgICAgICAgICBhcmd2X3ByaW50ZiAoJmFyZ3YsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIiAlcyAlcyAlcyBuZXRtYXNrICVzIGJyb2FkY2FzdCArIHVwIiwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJRkNPTkZJR19QQVRILAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGFjdHVhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmNv bmZpZ19sb2NhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmNvbmZpZ19yZW1vdGVf bmV0bWFzaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAKICAgICAgIGFyZ3ZfbXNn IChNX0lORk8sICZhcmd2KTsKICAgICAgIGlmICghb3BlbnZwbl9leGVjdmVfY2hlY2sgKCZhcmd2 LCBlcywgMCwgIlNvbGFyaXMgaWZjb25maWcgcGhhc2UtMiBmYWlsZWQiKSkKQEAgLTEzODMsMTUg KzEzOTAsMTcgQEAKIHZvaWQKIG9wZW5fdHVuIChjb25zdCBjaGFyICpkZXYsIGNvbnN0IGNoYXIg KmRldl90eXBlLCBjb25zdCBjaGFyICpkZXZfbm9kZSwgYm9vbCBpcHY2LCBzdHJ1Y3QgdHVudGFw ICp0dCkKIHsKLSAgaW50IGlmX2ZkLCBtdXhpZCwgcHBhID0gLTE7Ci0gIHN0cnVjdCBpZnJlcSBp ZnI7CisgIGludCBpZl9mZCwgaXBfbXV4aWQsIGFycF9tdXhpZCwgYXJwX2ZkLCBwcGEgPSAtMTsK KyAgc3RydWN0IGxpZnJlcSBpZnI7CiAgIGNvbnN0IGNoYXIgKnB0cjsKLSAgY29uc3QgY2hhciAq aXBfbm9kZTsKKyAgY29uc3QgY2hhciAqaXBfbm9kZSwgKmFycF9ub2RlOwogICBjb25zdCBjaGFy ICpkZXZfdHVudGFwX3R5cGU7CiAgIGludCBsaW5rX3R5cGU7CiAgIGJvb2wgaXNfdHVuOworICBz dHJ1Y3Qgc3RyaW9jdGwgIHN0cmlvY19pZiwgc3RyaW9jX3BwYTsKIAotICBpcHY2X3N1cHBvcnQg KGlwdjYsIGZhbHNlLCB0dCk7CisgIGlwdjZfc3VwcG9ydCAoaXB2NiwgdHJ1ZSwgdHQpOworICBt ZW1zZXQoJmlmciwgMHgwLCBzaXplb2YoaWZyKSk7CiAKICAgaWYgKHR0LT50eXBlID09IERFVl9U WVBFX05VTEwpCiAgICAgewpAQCAtMTQxMCw5ICsxNDE5LDEwIEBACiAgICAgfQogICBlbHNlIGlm ICh0dC0+dHlwZSA9PSBERVZfVFlQRV9UQVApCiAgICAgewotICAgICAgaXBfbm9kZSA9ICIvZGV2 L2lwIjsKKyAgICAgIGlwX25vZGUgPSAiL2Rldi91ZHAiOwogICAgICAgaWYgKCFkZXZfbm9kZSkK IAlkZXZfbm9kZSA9ICIvZGV2L3RhcCI7CisgICAgICBhcnBfbm9kZSA9IGRldl9ub2RlOwogICAg ICAgZGV2X3R1bnRhcF90eXBlID0gInRhcCI7CiAgICAgICBsaW5rX3R5cGUgPSBJX1BMSU5LOyAv KiB3YXM6IElfTElOSyAqLwogICAgICAgaXNfdHVuID0gZmFsc2U7CkBAIC0xNDM5LDcgKzE0NDks MTEgQEAKICAgICBtc2cgKE1fRVJSLCAiQ2FuJ3Qgb3BlbiAlcyIsIGRldl9ub2RlKTsKIAogICAv KiBBc3NpZ24gYSBuZXcgUFBBIGFuZCBnZXQgaXRzIHVuaXQgbnVtYmVyLiAqLwotICBpZiAoKHBw YSA9IGlvY3RsICh0dC0+ZmQsIFRVTk5FV1BQQSwgcHBhKSkgPCAwKQorICBzdHJpb2NfcHBhLmlj X2NtZCA9IFRVTk5FV1BQQTsKKyAgc3RyaW9jX3BwYS5pY190aW1vdXQgPSAwOworICBzdHJpb2Nf cHBhLmljX2xlbiA9IHNpemVvZihwcGEpOworICBzdHJpb2NfcHBhLmljX2RwID0gKGNoYXIgKikm cHBhOworICBpZiAoKHBwYSA9IGlvY3RsICh0dC0+ZmQsIElfU1RSLCAmc3RyaW9jX3BwYSkpIDwg MCkKICAgICBtc2cgKE1fRVJSLCAiQ2FuJ3QgYXNzaWduIG5ldyBpbnRlcmZhY2UiKTsKIAogICBp ZiAoKGlmX2ZkID0gb3BlbiAoZGV2X25vZGUsIE9fUkRXUiwgMCkpIDwgMCkKQEAgLTE0NDgsMjcg KzE0NjIsODMgQEAKICAgaWYgKGlvY3RsIChpZl9mZCwgSV9QVVNILCAiaXAiKSA8IDApCiAgICAg bXNnIChNX0VSUiwgIkNhbid0IHB1c2ggSVAgbW9kdWxlIik7CiAKLSAgLyogQXNzaWduIHBwYSBh Y2NvcmRpbmcgdG8gdGhlIHVuaXQgbnVtYmVyIHJldHVybmVkIGJ5IHR1biBkZXZpY2UgKi8KLSAg aWYgKGlvY3RsIChpZl9mZCwgSUZfVU5JVFNFTCwgKGNoYXIgKikgJnBwYSkgPCAwKQotICAgIG1z ZyAoTV9FUlIsICJDYW4ndCBzZXQgUFBBICVkIiwgcHBhKTsKKyAgaWYgKHR0LT50eXBlID09IERF Vl9UWVBFX1RVTikKKyAgICB7CisgICAgICAgIC8qIEFzc2lnbiBwcGEgYWNjb3JkaW5nIHRvIHRo ZSB1bml0IG51bWJlciByZXR1cm5lZCBieSB0dW4gZGV2aWNlICovCisgICAgICAgIGlmIChpb2N0 bCAoaWZfZmQsIElGX1VOSVRTRUwsIChjaGFyICopICZwcGEpIDwgMCkKKyAgICAgICAgICBtc2cg KE1fRVJSLCAiQ2FuJ3Qgc2V0IFBQQSAlZCIsIHBwYSk7CisgICAgfQogCi0gIGlmICgobXV4aWQg PSBpb2N0bCAodHQtPmlwX2ZkLCBsaW5rX3R5cGUsIGlmX2ZkKSkgPCAwKQotICAgIG1zZyAoTV9F UlIsICJDYW4ndCBsaW5rICVzIGRldmljZSB0byBJUCIsIGRldl90dW50YXBfdHlwZSk7Ci0KLSAg Y2xvc2UgKGlmX2ZkKTsKLQogICB0dC0+YWN0dWFsX25hbWUgPSAoY2hhciAqKSBtYWxsb2MgKDMy KTsKICAgY2hlY2tfbWFsbG9jX3JldHVybiAodHQtPmFjdHVhbF9uYW1lKTsKIAogICBvcGVudnBu X3NucHJpbnRmICh0dC0+YWN0dWFsX25hbWUsIDMyLCAiJXMlZCIsIGRldl90dW50YXBfdHlwZSwg cHBhKTsKIAorICBpZiAodHQtPnR5cGUgPT0gREVWX1RZUEVfVEFQKQorICAgIHsKKyAgICAgICAg ICBpZiAoaW9jdGwoaWZfZmQsIFNJT0NHTElGRkxBR1MsICZpZnIpIDwgMCkKKyAgICAgICAgICAg IG1zZyAoTV9FUlIsICJDYW4ndCBnZXQgZmxhZ3NcbiIpOworICAgICAgICAgIHN0cm5jcHludCAo aWZyLmxpZnJfbmFtZSwgdHQtPmFjdHVhbF9uYW1lLCBzaXplb2YgKGlmci5saWZyX25hbWUpKTsK KyAgICAgICAgICBpZnIubGlmcl9wcGEgPSBwcGE7CisgICAgICAgICAgLyogQXNzaWduIHBwYSBh Y2NvcmRpbmcgdG8gdGhlIHVuaXQgbnVtYmVyIHJldHVybmVkIGJ5IHR1biBkZXZpY2UgKi8KKyAg ICAgICAgICBpZiAoaW9jdGwgKGlmX2ZkLCBTSU9DU0xJRk5BTUUsICZpZnIpIDwgMCkKKyAgICAg ICAgICAgIG1zZyAoTV9FUlIsICJDYW4ndCBzZXQgUFBBICVkIiwgcHBhKTsKKyAgICAgICAgICBp ZiAoaW9jdGwoaWZfZmQsIFNJT0NHTElGRkxBR1MsICZpZnIpIDwwKQorICAgICAgICAgICAgbXNn IChNX0VSUiwgIkNhbid0IGdldCBmbGFnc1xuIik7CisgICAgICAgICAgLyogUHVzaCBhcnAgbW9k dWxlIHRvIGlmX2ZkICovCisgICAgICAgICAgaWYgKGlvY3RsIChpZl9mZCwgSV9QVVNILCAiYXJw IikgPCAwKQorICAgICAgICAgICAgbXNnIChNX0VSUiwgIkNhbid0IHB1c2ggQVJQIG1vZHVsZSIp OworCisgICAgICAgICAgLyogUG9wIGFueSBtb2R1bGVzIG9uIHRoZSBzdHJlYW0gKi8KKyAgICAg ICAgICB3aGlsZSAodHJ1ZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgaWYgKGlv Y3RsICh0dC0+aXBfZmQsIElfUE9QLCBOVUxMKSA8IDApCisgICAgICAgICAgICAgICAgICAgICBi cmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAvKiBQdXNoIGFycCBtb2R1bGUgdG8gaXBf ZmQgKi8KKyAgICAgICAgICBpZiAoaW9jdGwgKHR0LT5pcF9mZCwgSV9QVVNILCAiYXJwIikgPCAw KQorICAgICAgICAgICAgbXNnIChNX0VSUiwgIkNhbid0IHB1c2ggQVJQIG1vZHVsZVxuIik7CisK KyAgICAgICAgICAvKiBPcGVuIGFycF9mZCAqLworICAgICAgICAgIGlmICgoYXJwX2ZkID0gb3Bl biAoYXJwX25vZGUsIE9fUkRXUiwgMCkpIDwgMCkKKyAgICAgICAgICAgIG1zZyAoTV9FUlIsICJD YW4ndCBvcGVuICVzXG4iLCBhcnBfbm9kZSk7CisgICAgICAgICAgLyogUHVzaCBhcnAgbW9kdWxl IHRvIGFycF9mZCAqLworICAgICAgICAgIGlmIChpb2N0bCAoYXJwX2ZkLCBJX1BVU0gsICJhcnAi KSA8IDApCisgICAgICAgICAgICBtc2cgKE1fRVJSLCAiQ2FuJ3QgcHVzaCBBUlAgbW9kdWxlXG4i KTsKKworICAgICAgICAgIC8qIFNldCBpZm5hbWUgdG8gYXJwICovCisgICAgICAgICAgc3RyaW9j X2lmLmljX2NtZCA9IFNJT0NTTElGTkFNRTsKKyAgICAgICAgICBzdHJpb2NfaWYuaWNfdGltb3V0 ID0gMDsKKyAgICAgICAgICBzdHJpb2NfaWYuaWNfbGVuID0gc2l6ZW9mKGlmcik7CisgICAgICAg ICAgc3RyaW9jX2lmLmljX2RwID0gKGNoYXIgKikmaWZyOworICAgICAgICAgIGlmIChpb2N0bChh cnBfZmQsIElfU1RSLCAmc3RyaW9jX2lmKSA8IDApeworICAgICAgICAgICAgICBtc2cgKE1fRVJS LCAiQ2FuJ3Qgc2V0IGlmbmFtZSB0byBhcnBcbiIpOworICAgICAgICAgIH0KKyAgIH0KKworICBp ZiAoKGlwX211eGlkID0gaW9jdGwgKHR0LT5pcF9mZCwgbGlua190eXBlLCBpZl9mZCkpIDwgMCkK KyAgICBtc2cgKE1fRVJSLCAiQ2FuJ3QgbGluayAlcyBkZXZpY2UgdG8gSVAiLCBkZXZfdHVudGFw X3R5cGUpOworCisgIGlmICh0dC0+dHlwZSA9PSBERVZfVFlQRV9UQVApIHsKKyAgICAgICAgICBp ZiAoKGFycF9tdXhpZCA9IGlvY3RsICh0dC0+aXBfZmQsIGxpbmtfdHlwZSwgYXJwX2ZkKSkgPCAw KQorICAgICAgICAgICAgbXNnIChNX0VSUiwgIkNhbid0IGxpbmsgJXMgZGV2aWNlIHRvIEFSUCIs IGRldl90dW50YXBfdHlwZSk7CisgICAgICAgICAgY2xvc2UgKGFycF9mZCk7CisgIH0KKwogICBD TEVBUiAoaWZyKTsKLSAgc3RybmNweW50IChpZnIuaWZyX25hbWUsIHR0LT5hY3R1YWxfbmFtZSwg c2l6ZW9mIChpZnIuaWZyX25hbWUpKTsKLSAgaWZyLmlmcl9pcF9tdXhpZCA9IG11eGlkOworICBz dHJuY3B5bnQgKGlmci5saWZyX25hbWUsIHR0LT5hY3R1YWxfbmFtZSwgc2l6ZW9mIChpZnIubGlm cl9uYW1lKSk7CisgIGlmci5saWZyX2lwX211eGlkICA9IGlwX211eGlkOworICBpZiAodHQtPnR5 cGUgPT0gREVWX1RZUEVfVEFQKSB7CisgICAgICAgICAgaWZyLmxpZnJfYXJwX211eGlkID0gYXJw X211eGlkOworICB9CiAKLSAgaWYgKGlvY3RsICh0dC0+aXBfZmQsIFNJT0NTSUZNVVhJRCwgJmlm cikgPCAwKQorICBpZiAoaW9jdGwgKHR0LT5pcF9mZCwgU0lPQ1NMSUZNVVhJRCwgJmlmcikgPCAw KQogICAgIHsKLSAgICAgIGlvY3RsICh0dC0+aXBfZmQsIElfUFVOTElOSywgbXV4aWQpOworICAg ICAgaWYgKHR0LT50eXBlID09IERFVl9UWVBFX1RBUCkKKyAgICAgICAgeworICAgICAgICAgICAg ICBpb2N0bCAodHQtPmlwX2ZkLCBJX1BVTkxJTksgLCBhcnBfbXV4aWQpOworICAgICAgICB9Cisg ICAgICBpb2N0bCAodHQtPmlwX2ZkLCBJX1BVTkxJTkssIGlwX211eGlkKTsKICAgICAgIG1zZyAo TV9FUlIsICJDYW4ndCBzZXQgbXVsdGlwbGV4b3IgaWQiKTsKICAgICB9CiAKQEAgLTE0ODUsMjAg KzE1NTUsMjYgQEAKICAgaWYgKHR0KQogICAgIHsKICAgICAgIGlmICh0dC0+aXBfZmQgPj0gMCkK LQl7Ci0JICBzdHJ1Y3QgaWZyZXEgaWZyOwotCSAgQ0xFQVIgKGlmcik7Ci0JICBzdHJuY3B5bnQg KGlmci5pZnJfbmFtZSwgdHQtPmFjdHVhbF9uYW1lLCBzaXplb2YgKGlmci5pZnJfbmFtZSkpOwor ICAgICAgeworICAgICAgICAgIHN0cnVjdCBsaWZyZXEgaWZyOworICAgICAgICAgIENMRUFSIChp ZnIpOworICAgICAgICAgIHN0cm5jcHludCAoaWZyLmxpZnJfbmFtZSwgdHQtPmFjdHVhbF9uYW1l LCBzaXplb2YgKGlmci5saWZyX25hbWUpKTsKIAotCSAgaWYgKGlvY3RsICh0dC0+aXBfZmQsIFNJ T0NHSUZGTEFHUywgJmlmcikgPCAwKQotCSAgICBtc2cgKE1fV0FSTiB8IE1fRVJSTk8sICJDYW4n dCBnZXQgaWZhY2UgZmxhZ3MiKTsKKyAgICAgICAgICBpZiAoaW9jdGwgKHR0LT5pcF9mZCwgU0lP Q0dMSUZGTEFHUywgJmlmcikgPCAwKQorICAgICAgICAgICAgbXNnIChNX1dBUk4gfCBNX0VSUk5P LCAiQ2FuJ3QgZ2V0IGlmYWNlIGZsYWdzIik7CiAKLQkgIGlmIChpb2N0bCAodHQtPmlwX2ZkLCBT SU9DR0lGTVVYSUQsICZpZnIpIDwgMCkKLQkgICAgbXNnIChNX1dBUk4gfCBNX0VSUk5PLCAiQ2Fu J3QgZ2V0IG11bHRpcGxleG9yIGlkIik7CisgICAgICAgICAgaWYgKGlvY3RsICh0dC0+aXBfZmQs IFNJT0NHTElGTVVYSUQsICZpZnIpIDwgMCkKKyAgICAgICAgICAgIG1zZyAoTV9XQVJOIHwgTV9F UlJOTywgIkNhbid0IGdldCBtdWx0aXBsZXhvciBpZCIpOwogCi0JICBpZiAoaW9jdGwgKHR0LT5p cF9mZCwgSV9QVU5MSU5LLCBpZnIuaWZyX2lwX211eGlkKSA8IDApCi0JICAgIG1zZyAoTV9XQVJO IHwgTV9FUlJOTywgIkNhbid0IHVubGluayBpbnRlcmZhY2UiKTsKKyAgICAgICAgICBpZiAodHQt PnR5cGUgPT0gREVWX1RZUEVfVEFQKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg aWYgKGlvY3RsICh0dC0+aXBfZmQsIElfUFVOTElOSywgaWZyLmxpZnJfYXJwX211eGlkKSA8IDAp CisgICAgICAgICAgICAgICAgICAgIG1zZyAoTV9XQVJOIHwgTV9FUlJOTywgIkNhbid0IHVubGlu ayBpbnRlcmZhY2UoYXJwKSIpOworICAgICAgICAgICAgfQogCisgICAgICAgICAgaWYgKGlvY3Rs ICh0dC0+aXBfZmQsIElfUFVOTElOSywgaWZyLmxpZnJfaXBfbXV4aWQpIDwgMCkKKyAgICAgICAg ICAgIG1zZyAoTV9XQVJOIHwgTV9FUlJOTywgIkNhbid0IHVubGluayBpbnRlcmZhY2UoaXApIik7 CisKIAkgIGNsb3NlICh0dC0+aXBfZmQpOwogCSAgdHQtPmlwX2ZkID0gLTE7CiAJfQpAQCAtMTc1 MSwxMSArMTgyNywxMSBAQAogICAgICAgaSA9IHR0LT50b3BvbG9neSA9PSBUT1BfU1VCTkVUID8g SUZGX0JST0FEQ0FTVCA6IElGRl9QT0lOVE9QT0lOVDsKICAgICAgIGkgfD0gSUZGX01VTFRJQ0FT VDsKICAgICAgIGlmIChpb2N0bCAodHQtPmZkLCBUVU5TSUZNT0RFLCAmaSkgPCAwKSB7Ci0JbXNn IChNX1dBUk4gfCBNX0VSUk5PLCAiaW9jdGwoVFVOU0lGTU9ERSk6ICVzIiwgc3RyZXJyb3IoZXJy bm8pKTsKKyAgICAgICAgbXNnIChNX1dBUk4gfCBNX0VSUk5PLCAiaW9jdGwoVFVOU0lGTU9ERSk6 ICVzIiwgc3RyZXJyb3IoZXJybm8pKTsKICAgICAgIH0KICAgICAgIGkgPSAxOwogICAgICAgaWYg KGlvY3RsICh0dC0+ZmQsIFRVTlNJRkhFQUQsICZpKSA8IDApIHsKLQltc2cgKE1fV0FSTiB8IE1f RVJSTk8sICJpb2N0bChUVU5TSUZIRUFEKTogJXMiLCBzdHJlcnJvcihlcnJubykpOworICAgICAg ICBtc2cgKE1fV0FSTiB8IE1fRVJSTk8sICJpb2N0bChUVU5TSUZIRUFEKTogJXMiLCBzdHJlcnJv cihlcnJubykpOwogICAgICAgfQogICAgIH0KIH0KQEAgLTMyOTksMTkgKzMzNzUsMTkgQEAKICAg Ym9vbCByZXQgPSBmYWxzZTsKICAgY29uc3QgSVBfQURBUFRFUl9JTkRFWF9NQVAgKmludGVyID0g Z2V0X2ludGVyZmFjZV9pbmZvIChhZGFwdGVyX2luZGV4LCAmZ2MpOwogCi0gIGlmIChpbnRlcikK LSAgICB7Ci0gICAgICBEV09SRCBzdGF0dXMgPSBJcFJlbGVhc2VBZGRyZXNzICgoSVBfQURBUFRF Ul9JTkRFWF9NQVAgKilpbnRlcik7Ci0gICAgICBpZiAoc3RhdHVzID09IE5PX0VSUk9SKQorICAg ICAgaWYgKGludGVyKQogCXsKLQkgIG1zZyAoRF9UVU5UQVBfSU5GTywgIlRBUDogREhDUCBhZGRy ZXNzIHJlbGVhc2VkIik7Ci0JICByZXQgPSB0cnVlOworCSAgRFdPUkQgc3RhdHVzID0gSXBSZWxl YXNlQWRkcmVzcyAoKElQX0FEQVBURVJfSU5ERVhfTUFQICopaW50ZXIpOworCSAgaWYgKHN0YXR1 cyA9PSBOT19FUlJPUikKKwkgICAgeworCSAgICAgIG1zZyAoRF9UVU5UQVBfSU5GTywgIlRBUDog REhDUCBhZGRyZXNzIHJlbGVhc2VkIik7CisJICAgICAgcmV0ID0gdHJ1ZTsKKwkgICAgfQorCSAg ZWxzZQorCSAgICBtc2cgKE1fV0FSTiwgIk5PVEU6IFJlbGVhc2Ugb2YgREhDUC1hc3NpZ25lZCBJ UCBhZGRyZXNzIGxlYXNlIG9uIFRBUC1XaW4zMiBhZGFwdGVyIGZhaWxlZDogJXMgKGNvZGU9JXUp IiwKKwkJIHN0cmVycm9yX3dpbjMyIChzdGF0dXMsICZnYyksCisJCSAodW5zaWduZWQgaW50KXN0 YXR1cyk7CiAJfQotICAgICAgZWxzZQotCW1zZyAoTV9XQVJOLCAiTk9URTogUmVsZWFzZSBvZiBE SENQLWFzc2lnbmVkIElQIGFkZHJlc3MgbGVhc2Ugb24gVEFQLVdpbjMyIGFkYXB0ZXIgZmFpbGVk OiAlcyAoY29kZT0ldSkiLAotCSAgICAgc3RyZXJyb3Jfd2luMzIgKHN0YXR1cywgJmdjKSwKLQkg ICAgICh1bnNpZ25lZCBpbnQpc3RhdHVzKTsKLSAgICB9CiAKICAgZ2NfZnJlZSAoJmdjKTsKICAg cmV0dXJuIHJldDsKQEAgLTMzMzMsMTkgKzM0MDksMTkgQEAKICAgYm9vbCByZXQgPSBmYWxzZTsK ICAgY29uc3QgSVBfQURBUFRFUl9JTkRFWF9NQVAgKmludGVyID0gZ2V0X2ludGVyZmFjZV9pbmZv IChhZGFwdGVyX2luZGV4LCAmZ2MpOwogCi0gIGlmIChpbnRlcikKLSAgICB7Ci0gICAgICBEV09S RCBzdGF0dXMgPSBJcFJlbmV3QWRkcmVzcyAoKElQX0FEQVBURVJfSU5ERVhfTUFQICopaW50ZXIp OwotICAgICAgaWYgKHN0YXR1cyA9PSBOT19FUlJPUikKKyAgICAgIGlmIChpbnRlcikKIAl7Ci0J ICBtc2cgKERfVFVOVEFQX0lORk8sICJUQVA6IERIQ1AgYWRkcmVzcyByZW5ld2FsIHN1Y2NlZWRl ZCIpOwotCSAgcmV0ID0gdHJ1ZTsKKwkgIERXT1JEIHN0YXR1cyA9IElwUmVuZXdBZGRyZXNzICgo SVBfQURBUFRFUl9JTkRFWF9NQVAgKilpbnRlcik7CisJICBpZiAoc3RhdHVzID09IE5PX0VSUk9S KQorCSAgICB7CisJICAgICAgbXNnIChEX1RVTlRBUF9JTkZPLCAiVEFQOiBESENQIGFkZHJlc3Mg cmVuZXdhbCBzdWNjZWVkZWQiKTsKKwkgICAgICByZXQgPSB0cnVlOworCSAgICB9CisJICBlbHNl CisJICAgIG1zZyAoTV9XQVJOLCAiV0FSTklORzogRmFpbGVkIHRvIHJlbmV3IERIQ1AgSVAgYWRk cmVzcyBsZWFzZSBvbiBUQVAtV2luMzIgYWRhcHRlcjogJXMgKGNvZGU9JXUpIiwKKwkJIHN0cmVy cm9yX3dpbjMyIChzdGF0dXMsICZnYyksCisJCSAodW5zaWduZWQgaW50KXN0YXR1cyk7CiAJfQot ICAgICAgZWxzZQotCW1zZyAoTV9XQVJOLCAiV0FSTklORzogRmFpbGVkIHRvIHJlbmV3IERIQ1Ag SVAgYWRkcmVzcyBsZWFzZSBvbiBUQVAtV2luMzIgYWRhcHRlcjogJXMgKGNvZGU9JXUpIiwKLQkg ICAgIHN0cmVycm9yX3dpbjMyIChzdGF0dXMsICZnYyksCi0JICAgICAodW5zaWduZWQgaW50KXN0 YXR1cyk7Ci0gICAgfQogICBnY19mcmVlICgmZ2MpOwogICByZXR1cm4gcmV0OwogfQo= --00163630fe27aa6bfc0485583351--