From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: [DOC v1] Xen transport for 9pfs Date: Tue, 29 Nov 2016 15:34:35 -0800 (PST) Message-ID: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cBrvJ-0006P1-O2 for xen-devel@lists.xenproject.org; Tue, 29 Nov 2016 23:34:53 +0000 Received: by mail-pg0-f42.google.com with SMTP id p66so74617823pga.2 for ; Tue, 29 Nov 2016 15:34:51 -0800 (PST) List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: stefano@aporeto.com, wei.liu2@citrix.com List-Id: xen-devel@lists.xenproject.org IyBYZW4gdHJhbnNwb3J0IGZvciA5cGZzIHZlcnNpb24gMSAKCiMjIEJhY2tncm91bmQKCjlwZnMg aXMgYSBuZXR3b3JrIGZpbGVzeXN0ZW0gcHJvdG9jb2wgZGV2ZWxvcGVkIGZvciBQbGFuIDkuIDlw ZnMgaXMgdmVyeQpzaW1wbGUgYW5kIGRlc2NyaWJlcyBhIHNlcmllcyBvZiBjb21tYW5kcyBhbmQg cmVzcG9uc2VzLiBJdCBpcwpjb21wbGV0ZWx5IGluZGVwZW5kZW50IGZyb20gdGhlIGNvbW11bmlj YXRpb24gY2hhbm5lbHMsIGluIGZhY3QgbWFueQpjbGllbnRzIGFuZCBzZXJ2ZXJzIHN1cHBvcnQg bXVsdGlwbGUgY2hhbm5lbHMsIHVzdWFsbHkgY2FsbGVkCiJ0cmFuc3BvcnRzIi4gRm9yIGV4YW1w bGUgdGhlIExpbnV4IGNsaWVudCBzdXBwb3J0cyB0Y3AgYW5kIHVuaXgKc29ja2V0cywgZmRzLCB2 aXJ0aW8gYW5kIHJkbWEuCgoKIyMjIDlwZnMgcHJvdG9jb2wKClRoaXMgZG9jdW1lbnQgd29uJ3Qg Y292ZXIgdGhlIGZ1bGwgOXBmcyBzcGVjaWZpY2F0aW9uLiBQbGVhc2UgcmVmZXIgdG8KdGhpcyBb cGFwZXJdIGFuZCB0aGlzIFt3ZWJzaXRlXSBmb3IgYSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiBp dC4KSG93ZXZlciBpdCBpcyB1c2VmdWwgdG8ga25vdyB0aGF0IGVhY2ggOXBmcyByZXF1ZXN0IGFu ZCByZXNwb25zZSBoYXMgdGhlCmZvbGxvd2luZyBoZWFkZXI6CgogICAgc3RydWN0IGhlYWRlciB7 CiAgICAJdWludDMyX3Qgc2l6ZTsKICAgIAl1aW50OF90IGlkOwogICAgCXVpbnQxNl90IHRhZzsK ICAgIH0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CgogICAgMCAgICAgICAgIDQgIDUgICAgNwog ICAgKy0tLS0tLS0tLSstLSstLS0tKwogICAgfCAgc2l6ZSAgIHxpZHx0YWcgfAogICAgKy0tLS0t LS0tLSstLSstLS0tKwoKLSAqc2l6ZSoKVGhlIHNpemUgb2YgdGhlIHJlcXVlc3Qgb3IgcmVzcG9u c2UuCgotICppZCoKVGhlIDlwZnMgcmVxdWVzdCBvciByZXNwb25zZSBvcGVyYXRpb24uCgotICp0 YWcqClVuaXF1ZSBpZCB0aGF0IGlkZW50aWZpZXMgYSBzcGVjaWZpYyByZXF1ZXN0L3Jlc3BvbnNl IHBhaXIuIEl0IGlzIHVzZWQKdG8gbXVsdGlwbGV4IG9wZXJhdGlvbnMgb24gYSBzaW5nbGUgY2hh bm5lbC4KCkl0IGlzIHBvc3NpYmxlIHRvIGhhdmUgbXVsdGlwbGUgcmVxdWVzdHMgaW4tZmxpZ2h0 IGF0IGFueSBnaXZlbiB0aW1lLgoKCiMjIFJhdGlvbmFsZQoKVGhpcyBkb2N1bWVudCBkZXNjcmli ZXMgYSBYZW4gYmFzZWQgdHJhbnNwb3J0IGZvciA5cGZzLCBpbiB0aGUKdHJhZGl0aW9uYWwgUFYg ZnJvbnRlbmQgYW5kIGJhY2tlbmQgZm9ybWF0LiBUaGUgUFYgZnJvbnRlbmQgaXMgdXNlZCBieQp0 aGUgY2xpZW50IHRvIHNlbmQgY29tbWFuZHMgdG8gdGhlIHNlcnZlci4gVGhlIFBWIGJhY2tlbmQg aXMgdXNlZCBieSB0aGUKOXBmcyBzZXJ2ZXIgdG8gcmVjZWl2ZSBjb21tYW5kcyBmcm9tIGNsaWVu dHMgYW5kIHNlbmQgYmFjayByZXNwb25zZXMuCgpFYWNoIDlwZnMgY29ubmVjdGlvbiBjb3JyZXNw b25kcyB0byBhIHNpbmdsZSBmaWxlc3lzdGVtIHNoYXJlLgoKVGhpcyBkb2N1bWVudCBkb2VzIG5v dCBjb3ZlciB0aGUgOXBmcyBjbGllbnQvc2VydmVyIGRlc2lnbiBvcgppbXBsZW1lbnRhdGlvbiwg b25seSB0aGUgdHJhbnNwb3J0IGZvciBpdC4KCgojIyBYZW5zdG9yZQoKVGhlIGZyb250ZW5kIGFu ZCB0aGUgYmFja2VuZCBjb25uZWN0IHZpYSB4ZW5zdG9yZSB0byBleGNoYW5nZQppbmZvcm1hdGlv bi4gVGhlIHRvb2xzdGFjayBjcmVhdGVzIGZyb250IGFuZCBiYWNrIG5vZGVzIHdpdGggc3RhdGUK W1hlbmJ1c1N0YXRlSW5pdGlhbGlzaW5nXS4gVGhlIHByb3RvY29sIG5vZGUgbmFtZSBpcyAqKjlw ZnMqKi4KCk11bHRpcGxlIHJpbmdzIGFyZSBzdXBwb3J0ZWQgZm9yIGVhY2ggZnJvbnRlbmQgYW5k IGJhY2tlbmQgY29ubmVjdGlvbi4KCiMjIyBGcm9udGVuZCBYZW5CdXMgTm9kZXMKCiAgICBudW0t cmluZ3MKICAgICAgICAgVmFsdWVzOiAgICAgICAgIDx1aW50MzJfdD4KICAgIAogICAgICAgICBO dW1iZXIgb2YgcmluZ3MuIEl0IG5lZWRzIHRvIGJlIGxvd2VyIG9yIGVxdWFsIHRvIG1heC1yaW5n cy4KICAgIAogICAgcG9ydC08bnVtPiAocG9ydC0wLCBwb3J0LTEsIGV0YykKICAgICAgICAgVmFs dWVzOiAgICAgICAgIDx1aW50MzJfdD4KICAgIAogICAgICAgICBUaGUgaWRlbnRpZmllciBvZiB0 aGUgWGVuIGV2ZW50IGNoYW5uZWwgdXNlZCB0byBzaWduYWwgYWN0aXZpdHkKICAgICAgICAgaW4g dGhlIHJpbmcgYnVmZmVyLiBPbmUgZm9yIGVhY2ggcmluZy4KICAgIAogICAgcmluZy1yZWYtPG51 bT4gKHJpbmctcmVmLTAsIHJpbmctcmVmLTEsIGV0YykKICAgICAgICAgVmFsdWVzOiAgICAgICAg IDx1aW50MzJfdD4KICAgIAogICAgICAgICBUaGUgWGVuIGdyYW50IHJlZmVyZW5jZSBncmFudGlu ZyBwZXJtaXNzaW9uIGZvciB0aGUgYmFja2VuZCB0bwogICAgICAgICBtYXAgYSBwYWdlIHdpdGgg aW5mb3JtYXRpb24gdG8gc2V0dXAgYSBzaGFyZSByaW5nLiBPbmUgZm9yIGVhY2gKICAgICAgICAg cmluZy4KCiMjIyBCYWNrZW5kIFhlbkJ1cyBOb2RlcwoKQmFja2VuZCBzcGVjaWZpYyBwcm9wZXJ0 aWVzLCB3cml0dGVuIGJ5IHRoZSBiYWNrZW5kLCByZWFkIGJ5IHRoZQpmcm9udGVuZDoKCiAgICB2 ZXJzaW9uCiAgICAgICAgIFZhbHVlczogICAgICAgICA8dWludDMyX3Q+CiAgICAKICAgICAgICAg UHJvdG9jb2wgdmVyc2lvbiBzdXBwb3J0ZWQgYnkgdGhlIGJhY2tlbmQuIEN1cnJlbnRseSB0aGUg dmFsdWUgaXMKICAgICAgICAgMS4KICAgIAogICAgbWF4LXJpbmdzCiAgICAgICAgIFZhbHVlczog ICAgICAgICA8dWludDMyX3Q+CiAgICAKICAgICAgICAgVGhlIG1heGltdW0gc3VwcG9ydGVkIG51 bWJlciBvZiByaW5ncy4KICAgIAogICAgbWF4LXJpbmctcGFnZS1vcmRlcgogICAgICAgICBWYWx1 ZXM6ICAgICAgICAgPHVpbnQzMl90PgogICAgCiAgICAgICAgIFRoZSBtYXhpbXVtIHN1cHBvcnRl ZCBzaXplIG9mIGEgbWVtb3J5IGFsbG9jYXRpb24gaW4gdW5pdHMgb2YKICAgICAgICAgbGIobWFj aGluZSBwYWdlcyksIGUuZy4gMCA9PSAxIHBhZ2UsICAxID0gMiBwYWdlcywgMiA9PSA0IHBhZ2Vz LAogICAgICAgICBldGMuCgpCYWNrZW5kIGNvbmZpZ3VyYXRpb24gbm9kZXMsIHdyaXR0ZW4gYnkg dGhlIHRvb2xzdGFjaywgcmVhZCBieSB0aGUKYmFja2VuZDoKCiAgICBwYXRoCiAgICAgICAgIFZh bHVlczogICAgICAgICA8c3RyaW5nPgogICAgCiAgICAgICAgIEhvc3QgZmlsZXN5c3RlbSBwYXRo IHRvIHNoYXJlLgogICAgCiAgICB0YWcKICAgICAgICAgVmFsdWVzOiAgICAgICAgIDxzdHJpbmc+ CiAgICAKICAgICAgICAgQWxwaGFudW1lcmljIHRhZyB0aGF0IGlkZW50aWZpZXMgdGhlIDlwZnMg c2hhcmUuIFRoZSBjbGllbnQgbmVlZHMKICAgICAgICAgdG8ga25vdyB0aGUgdGFnIHRvIG1vdW50 IGl0LgogICAgCiAgICBzZWN1cml0eV9tb2RlbAogICAgICAgICBWYWx1ZXM6ICAgICAgICAgIm5v bmUiCiAgICAKICAgICAgICAgKm5vbmUqOiBmaWxlcyBhcmUgc3RvcmVkIHVzaW5nIHRoZSBzYW1l IGNyZWRlbnRpYWxzIGFzIHRoZXkgYXJlCiAgICAgICAgICAgICAgICAgY3JlYXRlZCBvbiB0aGUg Z3Vlc3QKICAgICAgICAgT25seSAibm9uZSIgaXMgc3VwcG9ydGVkIGluIHRoaXMgdmVyc2lvbiBv ZiB0aGUgcHJvdG9jb2wuCgoKIyMjIFN0YXRlIE1hY2hpbmUKCkluaXRpYWxpemF0aW9uOgoKICAg ICpGcm9udCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKkJhY2sqCiAgICBYZW5idXNT dGF0ZUluaXRpYWxpc2luZyAgICAgICAgICAgICAgIFhlbmJ1c1N0YXRlSW5pdGlhbGlzaW5nCiAg ICAtIFF1ZXJ5IHZpcnR1YWwgZGV2aWNlICAgICAgICAgICAgICAgIC0gUXVlcnkgYmFja2VuZCBk ZXZpY2UKICAgICAgcHJvcGVydGllcy4gICAgICAgICAgICAgICAgICAgICAgICAgICBpZGVudGlm aWNhdGlvbiBkYXRhLgogICAgLSBTZXR1cCBPUyBkZXZpY2UgaW5zdGFuY2UuICAgICAgICAgICAt IFB1Ymxpc2ggYmFja2VuZCBmZWF0dXJlcwogICAgLSBBbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSB0 aGUgICAgICAgICAgIGFuZCB0cmFuc3BvcnQgcGFyYW1ldGVycwogICAgICByZXF1ZXN0IHJpbmcu ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICAtIFB1Ymxpc2ggdHJh bnNwb3J0IHBhcmFtZXRlcnMgICAgICAgICAgICAgICAgICAgICAgIHwKICAgICAgdGhhdCB3aWxs IGJlIGluIGVmZmVjdCBkdXJpbmcgICAgICAgICAgICAgICAgICAgICAgVgogICAgICB0aGlzIGNv bm5lY3Rpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhlbmJ1c1N0YXRlSW5pdFdhaXQK ICAgICAgICAgICAgICAgICB8CiAgICAgICAgICAgICAgICAgfAogICAgICAgICAgICAgICAgIFYK ICAgICAgIFhlbmJ1c1N0YXRlSW5pdGlhbGlzZWQKCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC0gUXVlcnkgZnJvbnRlbmQgdHJhbnNwb3J0IHBhcmFtZXRlcnMuCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gQ29ubmVjdCB0byB0aGUg cmVxdWVzdCByaW5nIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGV2ZW50IGNoYW5uZWwuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBWCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBYZW5idXNTdGF0ZUNvbm5lY3RlZAoKICAgICAtIFF1ZXJ5IGJhY2tl bmQgZGV2aWNlIHByb3BlcnRpZXMuCiAgICAgLSBGaW5hbGl6ZSBPUyB2aXJ0dWFsIGRldmljZQog ICAgICAgaW5zdGFuY2UuCiAgICAgICAgICAgICAgICAgfAogICAgICAgICAgICAgICAgIHwKICAg ICAgICAgICAgICAgICBWCiAgICAgICAgWGVuYnVzU3RhdGVDb25uZWN0ZWQKCk9uY2UgZnJvbnRl bmQgYW5kIGJhY2tlbmQgYXJlIGNvbm5lY3RlZCwgdGhleSBoYXZlIGEgc2hhcmVkIHBhZ2UgcGVy CnJpbmcsIHdoaWNoIGFyZSB1c2VkIHRvIHNldHVwIHRoZSByaW5ncywgYW5kIGFuIGV2ZW50IGNo YW5uZWwgcGVyIHJpbmcsCndoaWNoIGFyZSB1c2VkIHRvIHNlbmQgbm90aWZpY2F0aW9ucy4KClNo dXRkb3duOgoKICAgICpGcm9udCogICAgICAgICAgICAgICAgICAgICAgICAgICAgKkJhY2sqCiAg ICBYZW5idXNTdGF0ZUNvbm5lY3RlZCAgICAgICAgICAgICAgIFhlbmJ1c1N0YXRlQ29ubmVjdGVk CiAgICAgICAgICAgICAgICB8CiAgICAgICAgICAgICAgICB8CiAgICAgICAgICAgICAgICBWCiAg ICAgICBYZW5idXNTdGF0ZUNsb3NpbmcKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC0gVW5tYXAgZ3JhbnRzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0gVW5iaW5kIGV2dGNobnMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYZW5idXNTdGF0ZUNs b3NpbmcKCiAgICAtIFVuYmluZCBldnRjaG5zCiAgICAtIEZyZWUgcmluZ3MKICAgIC0gRnJlZSBk YXRhIHN0cnVjdHVyZXMKICAgICAgICAgICAgICAgfAogICAgICAgICAgICAgICB8CiAgICAgICAg ICAgICAgIFYKICAgICAgIFhlbmJ1c1N0YXRlQ2xvc2VkCgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAtIEZyZWUgcmVtYWluaW5nIGRhdGEgc3RydWN0dXJlcwogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFhlbmJ1c1N0YXRlQ2xvc2VkCgoKIyMgUmluZyBTZXR1cAoKVGhlIHNo YXJlZCBwYWdlIGhhcyB0aGUgZm9sbG93aW5nIGxheW91dDoKCiAgICB0eXBlZGVmIHVpbnQzMl90 IFhFTl85UEZTX1JJTkdfSURYOwoKICAgIHN0cnVjdCB4ZW5fOXBmc19pbnRmIHsKICAgIAlYRU5f OVBGU19SSU5HX0lEWCBpbl9jb25zLCBpbl9wcm9kOwogICAgCVhFTl85UEZTX1JJTkdfSURYIG91 dF9jb25zLCBvdXRfcHJvZDsKICAgIAogICAgCXVpbnQzMl90IHJpbmdfb3JkZXI7CiAgICAJZ3Jh bnRfcmVmX3QgcmVmW107CiAgICB9OwoKICAgIC8qIG5vdCBhY3R1YWxseSBDIGNvbXBsaWFudCAo cmluZ19vcmRlciBjaGFuZ2VzIGZyb20gc29ja2V0IHRvIHNvY2tldCkgKi8KICAgIHN0cnVjdCBy aW5nX2RhdGEgewogICAgICAgIGNoYXIgaW5bKCgxIDw8IHJpbmdfb3JkZXIpIDw8IFBBR0VfU0hJ RlQpIC8gMl07CiAgICAgICAgY2hhciBvdXRbKCgxIDw8IHJpbmdfb3JkZXIpIDw8IFBBR0VfU0hJ RlQpIC8gMl07CiAgICB9OwoKLSAqKnJpbmdfb3JkZXIqKgogIEl0IHJlcHJlc2VudHMgdGhlIG9y ZGVyIG9mIHRoZSBkYXRhIHJpbmcuIFRoZSBmb2xsb3dpbmcgbGlzdCBvZiBncmFudAogIHJlZmVy ZW5jZXMgaXMgb2YgYCgxIDw8IHJpbmdfb3JkZXIpYCBlbGVtZW50cy4gSXQgY2Fubm90IGJlIGdy ZWF0ZXIgdGhhbgogICoqbWF4LXJpbmctcGFnZS1vcmRlcioqLCBhcyBzcGVjaWZpZWQgYnkgdGhl IGJhY2tlbmQgb24gWGVuQnVzLgotICoqcmVmW10qKgogIFRoZSBsaXN0IG9mIGdyYW50IHJlZmVy ZW5jZXMgd2hpY2ggd2lsbCBjb250YWluIHRoZSBhY3R1YWwgZGF0YS4gVGhleSBhcmUKICBtYXBw ZWQgY29udGlndW9zbHkgaW4gdmlydHVhbCBtZW1vcnkuIFRoZSBmaXJzdCBoYWxmIG9mIHRoZSBw YWdlcyBpcyB0aGUKICAqKmluKiogYXJyYXksIHRoZSBzZWNvbmQgaGFsZiBpcyB0aGUgKipvdXQq KiBhcnJheS4gVGhlIGFycmF5IG11c3QKICBoYXZlIGEgcG93ZXIgb2YgdHdvIG51bWJlciBvZiBl bGVtZW50cy4KLSAqKm91dCoqIGlzIGFuIGFycmF5IHVzZWQgYXMgY2lyY3VsYXIgYnVmZmVyCiAg SXQgY29udGFpbnMgY2xpZW50IHJlcXVlc3RzLiBUaGUgcHJvZHVjZXIgaXMgdGhlIGZyb250ZW5k LCB0aGUKICBjb25zdW1lciBpcyB0aGUgYmFja2VuZC4KLSAqKmluKiogaXMgYW4gYXJyYXkgdXNl ZCBhcyBjaXJjdWxhciBidWZmZXIKICBJdCBjb250YWlucyBzZXJ2ZXIgcmVzcG9uc2VzLiBUaGUg cHJvZHVjZXIgaXMgdGhlIGJhY2tlbmQsIHRoZQogIGNvbnN1bWVyIGlzIHRoZSBmcm9udGVuZC4K LSAqKm91dF9jb25zKiosICoqb3V0X3Byb2QqKgogIENvbnN1bWVyIGFuZCBwcm9kdWNlciBpbmRp Y2VzIGZvciBjbGllbnQgcmVxdWVzdHMuIFRoZXkga2VlcCB0cmFjayBvZgogIGhvdyBtdWNoIGRh dGEgaGFzIGJlZW4gd3JpdHRlbiBieSB0aGUgZnJvbnRlbmQgdG8gKipvdXQqKiBhbmQgaG93IG11 Y2gKICBkYXRhIGhhcyBhbHJlYWR5IGJlZW4gY29uc3VtZWQgYnkgdGhlIGJhY2tlbmQuICoqb3V0 X3Byb2QqKiBpcwogIGluY3JlYXNlZCBieSB0aGUgZnJvbnRlbmQsIGFmdGVyIHdyaXRpbmcgZGF0 YSB0byAqKm91dCoqLiAqKm91dF9jb25zKioKICBpcyBpbmNyZWFzZWQgYnkgdGhlIGJhY2tlbmQs IGFmdGVyIHJlYWRpbmcgZGF0YSBmcm9tICoqb3V0KiouCi0gKippbl9jb25zKiogYW5kICoqaW5f cHJvZCoqCiAgQ29uc3VtZXIgYW5kIHByb2R1Y2VyIGluZGljZXMgZm9yIHJlc3BvbnNlcy4gVGhl eSBrZWVwIHRyYWNrIG9mIGhvdwogIG11Y2ggZGF0YSBoYXMgYWxyZWFkeSBiZWVuIGNvbnN1bWVk IGJ5IHRoZSBmcm9udGVuZCBmcm9tIHRoZSAqKmluKioKICBhcnJheS4gKippbl9wcm9kKiogaXMg aW5jcmVhc2VkIGJ5IHRoZSBiYWNrZW5kLCBhZnRlciB3cml0aW5nIGRhdGEgdG8KICAqKmluKiou ICAqKmluX2NvbnMqKiBpcyBpbmNyZWFzZWQgYnkgdGhlIGZyb250ZW5kLCBhZnRlciByZWFkaW5n IGRhdGEKICBmcm9tICoqaW4qKi4KClRoZSBiaW5hcnkgbGF5b3V0IG9mIGBzdHJ1Y3QgeGVuXzlw ZnNfaW50ZmAgZm9sbG93czoKCiAgICAwICAgICAgICAgNCAgICAgICAgIDggICAgICAgICAxMiAg ICAgICAgMTYgICAgICAgIDIwCiAgICArLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSsKICAgIHwgaW5fY29ucyB8IGluX3Byb2QgfG91dF9jb25zIHxvdXRf cHJvZCB8cmluZ19vcmRlfAogICAgKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rCgogICAgMjAgICAgICAgIDI0ICAgICAgICAyNiAgICAgIDQwOTIgICAg ICA0MDk2CiAgICArLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLy8tLS0rLS0tLS0tLS0tKwogICAg fCAgcmVmWzBdIHwgIHJlZlsxXSB8ICAgICAgICAgfCAgcmVmW05dIHwKICAgICstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0vLy0tLSstLS0tLS0tLS0rCgoqKk4uQioqIEZvciBvbmUgcGFnZSwgTiBp cyBtYXhpbXVtIDEwMTkgKCg0MDk2LTIwKS80KSwgYnV0IGdpdmVuIHRoYXQgTgpuZWVkcyB0byBi ZSBhIHBvd2VyIG9mIHR3bywgYWN0dWFsbHkgbWF4IE4gaXMgNTEyLgpUaGUgYmluYXJ5IGxheW91 dCBvZiB0aGUgcmluZyBidWZmZXJzIGZvbGxvdzoKCiAgICAwICAgICAgICAgKCgxPDxyaW5nX29y ZGVyKTw8UEFHRV9TSElGVCkvMiAgICAgICAoKDE8PHJpbmdfb3JkZXIpPDxQQUdFX1NISUZUKQog ICAgKy0tLS0tLS0tLS0tLS8vLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0vLy0tLS0tLS0tLS0t LS0rCiAgICB8ICAgICAgICAgICAgaW4gICAgICAgICAgICAgfCAgICAgICAgICAgb3V0ICAgICAg ICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0vLy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLy8t LS0tLS0tLS0tLS0tKwoKCiMjIFJpbmcgVXNhZ2UKClRoZSAqKmluKiogYW5kICoqb3V0KiogYXJy YXlzIGFyZSB1c2VkIGFzIGNpcmN1bGFyIGJ1ZmZlcnM6CiAgICAKICAgIDAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2l6ZW9mKGFycmF5KSA9PSAoKDE8PHJpbmdfb3JkZXIpPDxQQUdF X1NISUZUKS8yCiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICB8 dG8gY29uc3VtZXwgICAgZnJlZSAgICB8dG8gY29uc3VtZSB8CiAgICArLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICAgICAgICAgICAgIF4gICAgICAgICAgICBeCiAgICAg ICAgICAgICAgIHByb2QgICAgICAgICBjb25zCgogICAgMCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzaXplb2YoYXJyYXkpCiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rCiAgICB8ICBmcmVlICAgIHwgdG8gY29uc3VtZSB8ICAgZnJlZSAgICB8CiAgICArLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICAgICAgICAgICAgIF4gICAgICAg ICAgICBeCiAgICAgICAgICAgICAgIGNvbnMgICAgICAgICBwcm9kCgpUaGUgZm9sbG93aW5nIGZ1 bmN0aW9ucyBhcmUgcHJvdmlkZWQgdG8gcmVhZCBhbmQgd3JpdGUgdG8gYW4gYXJyYXk6CgogICAg I2RlZmluZSBNQVNLX1hFTl85UEZTX0lEWChpZHgpICgoaWR4KSAmIChYRU5fOVBGU19SSU5HX1NJ WkUgLSAxKSkKCiAgICBzdGF0aWMgaW5saW5lIHZvaWQgeGVuXzlwZnNfcmVhZChjaGFyICpidWYs CiAgICAJCVhFTl85UEZTX1JJTkdfSURYICptYXNrZWRfcHJvZCwgWEVOXzlQRlNfUklOR19JRFgg Km1hc2tlZF9jb25zLAogICAgCQl1aW50OF90ICpoLCBzaXplX3QgbGVuKSB7CiAgICAJaWYgKCpt YXNrZWRfY29ucyA8ICptYXNrZWRfcHJvZCkgewogICAgCQltZW1jcHkoaCwgYnVmICsgKm1hc2tl ZF9jb25zLCBsZW4pOwogICAgCX0gZWxzZSB7CiAgICAJCWlmIChsZW4gPiBYRU5fOVBGU19SSU5H X1NJWkUgLSAqbWFza2VkX2NvbnMpIHsKICAgIAkJCW1lbWNweShoLCBidWYgKyAqbWFza2VkX2Nv bnMsIFhFTl85UEZTX1JJTkdfU0laRSAtICptYXNrZWRfY29ucyk7CiAgICAJCQltZW1jcHkoKGNo YXIgKiloICsgWEVOXzlQRlNfUklOR19TSVpFIC0gKm1hc2tlZF9jb25zLCBidWYsIGxlbiAtIChY RU5fOVBGU19SSU5HX1NJWkUgLSAqbWFza2VkX2NvbnMpKTsKICAgIAkJfSBlbHNlIHsKICAgIAkJ CW1lbWNweShoLCBidWYgKyAqbWFza2VkX2NvbnMsIGxlbik7CiAgICAJCX0KICAgIAl9CiAgICAJ Km1hc2tlZF9jb25zID0gX01BU0tfWEVOXzlQRlNfSURYKCptYXNrZWRfY29ucyArIGxlbik7CiAg ICB9CiAgICAKICAgIHN0YXRpYyBpbmxpbmUgdm9pZCB4ZW5fOXBmc193cml0ZShjaGFyICpidWYs CiAgICAJCVhFTl85UEZTX1JJTkdfSURYICptYXNrZWRfcHJvZCwgWEVOXzlQRlNfUklOR19JRFgg Km1hc2tlZF9jb25zLAogICAgCQl1aW50OF90ICpvcGFxdWUsIHNpemVfdCBsZW4pIHsKICAgIAlp ZiAoKm1hc2tlZF9wcm9kIDwgKm1hc2tlZF9jb25zKSB7CiAgICAJCW1lbWNweShidWYgKyAqbWFz a2VkX3Byb2QsIG9wYXF1ZSwgbGVuKTsKICAgIAl9IGVsc2UgewogICAgCQlpZiAobGVuID4gWEVO XzlQRlNfUklOR19TSVpFIC0gKm1hc2tlZF9wcm9kKSB7CiAgICAJCQltZW1jcHkoYnVmICsgKm1h c2tlZF9wcm9kLCBvcGFxdWUsIFhFTl85UEZTX1JJTkdfU0laRSAtICptYXNrZWRfcHJvZCk7CiAg ICAJCQltZW1jcHkoYnVmLCBvcGFxdWUgKyAoWEVOXzlQRlNfUklOR19TSVpFIC0gKm1hc2tlZF9w cm9kKSwgbGVuIC0gKFhFTl85UEZTX1JJTkdfU0laRSAtICptYXNrZWRfcHJvZCkpOyAKICAgIAkJ fSBlbHNlIHsKICAgIAkJCW1lbWNweShidWYgKyAqbWFza2VkX3Byb2QsIG9wYXF1ZSwgbGVuKTsg CiAgICAJCX0KICAgIAl9CiAgICAJKm1hc2tlZF9wcm9kID0gX01BU0tfWEVOXzlQRlNfSURYKCpt YXNrZWRfcHJvZCArIGxlbik7CiAgICB9CgpUaGUgcHJvZHVjZXIgKHRoZSBiYWNrZW5kIGZvciAq KmluKiosIHRoZSBmcm9udGVuZCBmb3IgKipvdXQqKikgd3JpdGVzIHRvIHRoZQphcnJheSBpbiB0 aGUgZm9sbG93aW5nIHdheToKCi0gcmVhZCAqY29ucyosICpwcm9kKiBmcm9tIHNoYXJlZCBtZW1v cnkKLSBtZW1vcnkgYmFycmllcgotIHdyaXRlIHRvIGFycmF5IGF0IHBvc2l0aW9uICpwcm9kKiB1 cCB0byAqY29ucyosIHdyYXBwaW5nIGFyb3VuZCB0aGUgY2lyY3VsYXIKICBidWZmZXIgd2hlbiBu ZWNlc3NhcnkKLSBtZW1vcnkgYmFycmllcgotIGluY3JlYXNlICpwcm9kKgotIG5vdGlmeSB0aGUg b3RoZXIgZW5kIHZpYSBldnRjaG4KClRoZSBjb25zdW1lciAodGhlIGJhY2tlbmQgZm9yICoqb3V0 KiosIHRoZSBmcm9udGVuZCBmb3IgKippbioqKSByZWFkcyBmcm9tIHRoZQphcnJheSBpbiB0aGUg Zm9sbG93aW5nIHdheToKCi0gcmVhZCAqcHJvZCosICpjb25zKiBmcm9tIHNoYXJlZCBtZW1vcnkK LSBtZW1vcnkgYmFycmllcgotIHJlYWQgZnJvbSBhcnJheSBhdCBwb3NpdGlvbiAqY29ucyogdXAg dG8gKnByb2QqLCB3cmFwcGluZyBhcm91bmQgdGhlIGNpcmN1bGFyCiAgYnVmZmVyIHdoZW4gbmVj ZXNzYXJ5Ci0gbWVtb3J5IGJhcnJpZXIKLSBpbmNyZWFzZSAqY29ucyoKLSBub3RpZnkgdGhlIG90 aGVyIGVuZCB2aWEgZXZ0Y2huCgpUaGUgcHJvZHVjZXIgdGFrZXMgY2FyZSBvZiB3cml0aW5nIG9u bHkgYXMgbWFueSBieXRlcyBhcyBhdmFpbGFibGUgaW4gdGhlIGJ1ZmZlcgp1cCB0byAqY29ucyou IFRoZSBjb25zdW1lciB0YWtlcyBjYXJlIG9mIHJlYWRpbmcgb25seSBhcyBtYW55IGJ5dGVzIGFz IGF2YWlsYWJsZQppbiB0aGUgYnVmZmVyIHVwIHRvICpwcm9kKi4KCgojIyBSZXF1ZXN0L1Jlc3Bv bnNlIFdvcmtmbG93CgpUaGUgY2xpZW50IGNob29zZXMgb25lIG9mIHRoZSBhdmFpbGFibGUgcmlu Z3MsIHRoZW4gaXQgc2VuZHMgYSByZXF1ZXN0CnRvIHRoZSBvdGhlciBlbmQgb24gdGhlICpvdXQq IGFycmF5LCBmb2xsb3dpbmcgdGhlIHByb2R1Y2VyIHdvcmtmbG93CmRlc2NyaWJlZCBpbiBbUmlu ZyBVc2FnZV0uCgpUaGUgc2VydmVyIHJlY2VpdmVzIHRoZSBub3RpZmljYXRpb24gYW5kIHJlYWRz IHRoZSByZXF1ZXN0LCBmb2xsb3dpbmcKdGhlIGNvbnN1bWVyIHdvcmtmbG93IGRlc2NyaWJlZCBp biBbUmluZyBVc2FnZV0uIFRoZSBzZXJ2ZXIga25vd3MgaG93Cm11Y2ggdG8gcmVhZCBiZWNhdXNl IGl0IGlzIHNwZWNpZmllZCBpbiB0aGUgKnNpemUqIGZpZWxkIG9mIHRoZSA5cGZzCmhlYWRlci4g VGhlIHNlcnZlciBwcm9jZXNzZXMgdGhlIHJlcXVlc3QgYW5kIHNlbmRzIGJhY2sgYSByZXNwb25z ZSBvbgp0aGUgKmluKiBhcnJheSBvZiB0aGUgc2FtZSByaW5nLCBmb2xsb3dpbmcgdGhlIHByb2R1 Y2VyIHdvcmtmbG93IGFzCnVzdWFsLgoKVGhlIGNsaWVudCByZWNlaXZlcyBhIG5vdGlmaWNhdGlv biBhbmQgcmVhZHMgdGhlIHJlc3BvbnNlIGZyb20gdGhlICppbioKYXJyYXkuIFRoZSBjbGllbnQg a25vd3MgaG93IG11Y2ggZGF0YSB0byByZWFkIGJlY2F1c2UgaXQgaXMgc3BlY2lmaWVkIGluCnRo ZSAqc2l6ZSogZmllbGQgb2YgdGhlIDlwZnMgaGVhZGVyLgoKCltwYXBlcl06IGh0dHBzOi8vd3d3 LnVzZW5peC5vcmcvbGVnYWN5L2V2ZW50L3VzZW5peDA1L3RlY2gvZnJlZW5peC9mdWxsX3BhcGVy cy9oZW5zYmVyZ2VuL2hlbnNiZXJnZW4ucGRmClt3ZWJzaXRlXTogaHR0cHM6Ly9naXRodWIuY29t L2NoYW9zL2Rpb2QvYmxvYi9tYXN0ZXIvcHJvdG9jb2wubWQKW1hlbmJ1c1N0YXRlSW5pdGlhbGlz aW5nXTogaHR0cDovL3hlbmJpdHMueGVuLm9yZy9kb2NzL3Vuc3RhYmxlL2h5cGVyY2FsbC94ODZf NjQvaW5jbHVkZSxwdWJsaWMsaW8seGVuYnVzLmguaHRtbAoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2 ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==