From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Anders K. Pedersen | Cohaesio" Subject: [PATCH v4 nftables] rt: introduce routing expression Date: Fri, 28 Oct 2016 05:56:32 +0000 Message-ID: <1477634191.1059.30.camel@cohaesio.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 To: "netfilter-devel@vger.kernel.org" , "pablo@netfilter.org" Return-path: Received: from bender.cohaesio.com ([212.97.128.130]:36927 "EHLO mail.cohaesio.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756026AbcJ1F4f (ORCPT ); Fri, 28 Oct 2016 01:56:35 -0400 Content-Language: en-US Content-ID: Sender: netfilter-devel-owner@vger.kernel.org List-ID: RnJvbTogQW5kZXJzIEsuIFBlZGVyc2VuIDxha3BAY29oYWVzaW8uY29tPg0KDQpJbnRyb2R1Y2Ug cnQgZXhwcmVzc2lvbiBmb3Igcm91dGluZyByZWxhdGVkIGRhdGEgd2l0aCBzdXBwb3J0IGZvciBu ZXh0aG9wDQooaS5lLiB0aGUgZGlyZWN0bHkgY29ubmVjdGVkIElQIGFkZHJlc3MgdGhhdCBhbiBv dXRnb2luZyBwYWNrZXQgaXMgc2VudA0KdG8pLCB3aGljaCBjYW4gYmUgdXNlZCBlaXRoZXIgZm9y IG1hdGNoaW5nIG9yIGFjY291bnRpbmcsIGVnLg0KDQogIyBuZnQgYWRkIHJ1bGUgZmlsdGVyIHBv c3Ryb3V0aW5nIFwNCglpcCBkYWRkciAxOTIuMTY4LjEuMC8yNCBydCBuZXh0aG9wICE9IDE5Mi4x NjguMC4xIGRyb3ANCg0KVGhpcyB3aWxsIGRyb3AgYW55IHRyYWZmaWMgdG8gMTkyLjE2OC4xLjAv MjQgdGhhdCBpcyBub3Qgcm91dGVkIHZpYQ0KMTkyLjE2OC4wLjEuDQoNCiAjIG5mdCBhZGQgcnVs ZSBmaWx0ZXIgcG9zdHJvdXRpbmcgXA0KCWZsb3cgdGFibGUgYWNjdCB7IHJ0IG5leHRob3AgdGlt ZW91dCA2MDBzIGNvdW50ZXIgfQ0KICMgbmZ0IGFkZCBydWxlIGlwNiBmaWx0ZXIgcG9zdHJvdXRp bmcgXA0KCWZsb3cgdGFibGUgYWNjdCB7IHJ0IG5leHRob3AgdGltZW91dCA2MDBzIGNvdW50ZXIg fQ0KDQpUaGVzZSBydWxlcyBjb3VudCBvdXRnb2luZyB0cmFmZmljIHBlciBuZXh0aG9wLiBOb3Rl IHRoYXQgdGhlIHRpbWVvdXQNCnJlbGVhc2VzIGFuIGVudHJ5IGlmIG5vIHRyYWZmaWMgaXMgc2Vl biBmb3IgdGhpcyBuZXh0aG9wIHdpdGhpbiAxMCBtaW51dGVzLg0KDQogIyBuZnQgYWRkIHJ1bGUg aW5ldCBmaWx0ZXIgcG9zdHJvdXRpbmcgXA0KCWV0aGVyIHR5cGUgaXAgXA0KCWZsb3cgdGFibGUg YWNjdCB7IHJ0IG5leHRob3AgdGltZW91dCA2MDBzIGNvdW50ZXIgfQ0KICMgbmZ0IGFkZCBydWxl IGluZXQgZmlsdGVyIHBvc3Ryb3V0aW5nIFwNCglldGhlciB0eXBlIGlwNiBcDQoJZmxvdyB0YWJs ZSBhY2N0IHsgcnQgbmV4dGhvcCB0aW1lb3V0IDYwMHMgY291bnRlciB9DQoNClNhbWUgYXMgYWJv dmUsIGJ1dCB2aWEgdGhlIGluZXQgZmFtaWx5LCB3aGVyZSB0aGUgZXRoZXIgdHlwZSBtdXN0IGJl DQpzcGVjaWZpZWQgZXhwbGljaXRseS4NCg0KInJ0IGNsYXNzaWQiIGlzIGFsc28gaW1wbGVtZW50 ZWQgaWRlbnRpY2FsIHRvICJtZXRhIHJ0Y2xhc3NpZCIsIHNpbmNlIGl0DQppcyBtb3JlIGxvZ2lj YWwgdG8gaGF2ZSB0aGlzIG1hdGNoIGluIHRoZSByb3V0aW5nIGV4cHJlc3Npb24gZ29pbmcgZm9y d2FyZC4NCg0KU2lnbmVkLW9mZi1ieTogQW5kZXJzIEsuIFBlZGVyc2VuIDxha3BAY29oYWVzaW8u Y29tPg0KLS0tDQp2NA0KLSBkcm9wIE5GVEFfUlRfRkFNSUxZIGluIGZhdm9yIG9mIHNlcGFyYXRl IE5GVF9SVF9ORVhUSE9QNCBhbmQNCiAgTkZUX1JUX05FWFRIT1A2DQotIHVzZSBJUCBmYW1pbHkg ZnJvbSBwcmVjZWRpbmcgZXhwcmVzc2lvbnMgaW1wbGljaXRseSBpbiBzdGVhZCBvZg0KICByZXF1 aXJpbmcgdGhhdCBpdCBpcyByZXBlYXRlZCBpbiB0aGUgcnQgZXhwcmVzc2lvbg0KdjMNCi0gbm8g Y2hhbmdlcw0KdjINCi0gZml4IGNvbW1lbnRzIGZvciBlbnVtIG5mdF9ydF9rZXlzDQotIGFkZCBu ZXcgbmZ0X3J0KiBtb2R1bGVzIHRvIGtlcm5lbF9jbGVhbnVwKCkgaW4gdGVzdHMvc2hlbGwvcnVu LXRlc3RzLnNoDQoNCiBkb2MvbmZ0LnhtbCAgICAgICAgICAgICAgICAgICAgICAgICB8ICA4NCAr KysrKysrKysrKysrKysrKysrKysNCiBpbmNsdWRlL2V4cHJlc3Npb24uaCAgICAgICAgICAgICAg ICB8ICAgNyArKw0KIGluY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX3RhYmxlcy5oIHwgIDI3ICsr KysrKysNCiBpbmNsdWRlL3J0LmggICAgICAgICAgICAgICAgICAgICAgICB8ICAzMyArKysrKysr KysNCiBzcmMvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICB8ICAgMSArDQogc3JjL2V2 YWx1YXRlLmMgICAgICAgICAgICAgICAgICAgICAgfCAgMzQgKysrKysrKysrDQogc3JjL25ldGxp bmtfZGVsaW5lYXJpemUuYyAgICAgICAgICAgfCAgMTcgKysrKysNCiBzcmMvbmV0bGlua19saW5l YXJpemUuYyAgICAgICAgICAgICB8ICAxNCArKysrDQogc3JjL3BhcnNlcl9iaXNvbi55ICAgICAg ICAgICAgICAgICAgfCAgMTggKysrKysNCiBzcmMvcnQuYyAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8IDE0MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCiBzcmMvc2Nh bm5lci5sICAgICAgICAgICAgICAgICAgICAgICB8ICAgMyArDQogdGVzdHMvZmlsZXMvZXhwci1y dCAgICAgICAgICAgICAgICAgfCAgMjEgKysrKysrDQogdGVzdHMvc2hlbGwvcnVuLXRlc3RzLnNo ICAgICAgICAgICAgfCAgIDIgKy0NCiAxMyBmaWxlcyBjaGFuZ2VkLCA0MDEgaW5zZXJ0aW9ucygr KSwgMSBkZWxldGlvbigtKQ0KDQpkaWZmIC0tZ2l0IGEvZG9jL25mdC54bWwgYi9kb2MvbmZ0Lnht bA0KaW5kZXggM2IyMTVmOC4uZTZiOThhZSAxMDA2NDQNCi0tLSBhL2RvYy9uZnQueG1sDQorKysg Yi9kb2MvbmZ0LnhtbA0KQEAgLTEyMjIsNiArMTIyMiw5MCBAQCBmaWx0ZXIgb3V0cHV0IG9pZiBl dGgwDQogCQkJCTwvZXhhbXBsZT4NCiAJCQk8L3BhcmE+DQogCQk8L3JlZnNlY3QyPg0KKw0KKwkJ PHJlZnNlY3QyPg0KKwkJCTx0aXRsZT5Sb3V0aW5nIGV4cHJlc3Npb25zPC90aXRsZT4NCisJCQk8 cGFyYT4NCisJCQkJPGNtZHN5bm9wc2lzPg0KKwkJCQkJPGNvbW1hbmQ+cnQ8L2NvbW1hbmQ+DQor CQkJCQk8Z3JvdXAgY2hvaWNlPSJyZXEiPg0KKwkJCQkJCTxhcmc+Y2xhc3NpZDwvYXJnPg0KKwkJ CQkJCTxhcmc+bmV4dGhvcDwvYXJnPg0KKwkJCQkJPC9ncm91cD4NCisJCQkJPC9jbWRzeW5vcHNp cz4NCisJCQk8L3BhcmE+DQorCQkJPHBhcmE+DQorCQkJCUEgcm91dGluZyBleHByZXNzaW9uIHJl ZmVycyB0byByb3V0aW5nIGRhdGEgYXNzb2NpYXRlZCB3aXRoIGEgcGFja2V0Lg0KKwkJCTwvcGFy YT4NCisJCQk8cGFyYT4NCisJCQkJPHRhYmxlIGZyYW1lPSJhbGwiPg0KKwkJCQkJPHRpdGxlPlJv dXRpbmcgZXhwcmVzc2lvbiB0eXBlczwvdGl0bGU+DQorCQkJCQk8dGdyb3VwIGNvbHM9JzQnIGFs aWduPSdsZWZ0JyBjb2xzZXA9JzEnIHJvd3NlcD0nMSc+DQorCQkJCQkJPGNvbHNwZWMgY29sbmFt ZT0nYzEnLz4NCisJCQkJCQk8Y29sc3BlYyBjb2xuYW1lPSdjMicvPg0KKwkJCQkJCTxjb2xzcGVj IGNvbG5hbWU9J2MzJy8+DQorCQkJCQkJPHRoZWFkPg0KKwkJCQkJCQk8cm93Pg0KKwkJCQkJCQkJ PGVudHJ5PktleXdvcmQ8L2VudHJ5Pg0KKwkJCQkJCQkJPGVudHJ5PkRlc2NyaXB0aW9uPC9lbnRy eT4NCisJCQkJCQkJCTxlbnRyeT5UeXBlPC9lbnRyeT4NCisJCQkJCQkJPC9yb3c+DQorCQkJCQkJ PC90aGVhZD4NCisJCQkJCQk8dGJvZHk+DQorCQkJCQkJCTxyb3c+DQorCQkJCQkJCQk8ZW50cnk+ Y2xhc3NpZDwvZW50cnk+DQorCQkJCQkJCQk8ZW50cnk+Um91dGluZyByZWFsbTwvZW50cnk+DQor CQkJCQkJCQk8ZW50cnk+cmVhbG08L2VudHJ5Pg0KKwkJCQkJCQk8L3Jvdz4NCisJCQkJCQkJPHJv dz4NCisJCQkJCQkJCTxlbnRyeT5uZXh0aG9wPC9lbnRyeT4NCisJCQkJCQkJCTxlbnRyeT5Sb3V0 aW5nIG5leHRob3A8L2VudHJ5Pg0KKwkJCQkJCQkJPGVudHJ5PmlwdjRfYWRkci9pcHY2X2FkZHI8 L2VudHJ5Pg0KKwkJCQkJCQk8L3Jvdz4NCisJCQkJCQk8L3Rib2R5Pg0KKwkJCQkJPC90Z3JvdXA+ DQorCQkJCTwvdGFibGU+DQorCQkJPC9wYXJhPg0KKwkJCTxwYXJhPg0KKwkJCQk8dGFibGUgZnJh bWU9ImFsbCI+DQorCQkJCQk8dGl0bGU+Um91dGluZyBleHByZXNzaW9uIHNwZWNpZmljIHR5cGVz PC90aXRsZT4NCisJCQkJCTx0Z3JvdXAgY29scz0nMicgYWxpZ249J2xlZnQnIGNvbHNlcD0nMScg cm93c2VwPScxJz4NCisJCQkJCQk8Y29sc3BlYyBjb2xuYW1lPSdjMScvPg0KKwkJCQkJCTxjb2xz cGVjIGNvbG5hbWU9J2MyJy8+DQorCQkJCQkJPHRoZWFkPg0KKwkJCQkJCQk8cm93Pg0KKwkJCQkJ CQkJPGVudHJ5PlR5cGU8L2VudHJ5Pg0KKwkJCQkJCQkJPGVudHJ5PkRlc2NyaXB0aW9uPC9lbnRy eT4NCisJCQkJCQkJPC9yb3c+DQorCQkJCQkJPC90aGVhZD4NCisJCQkJCQk8dGJvZHk+DQorCQkJ CQkJCTxyb3c+DQorCQkJCQkJCQk8ZW50cnk+cmVhbG08L2VudHJ5Pg0KKwkJCQkJCQkJPGVudHJ5 Pg0KKwkJCQkJCQkJCVJvdXRpbmcgUmVhbG0gKDMyIGJpdCBudW1iZXIpLiBDYW4gYmUgc3BlY2lm aWVkIG51bWVyaWNhbGx5DQorCQkJCQkJCQkJb3IgYXMgc3ltYm9saWMgbmFtZSBkZWZpbmVkIGlu IC9ldGMvaXByb3V0ZTIvcnRfcmVhbG1zLg0KKwkJCQkJCQkJPC9lbnRyeT4NCisJCQkJCQkJPC9y b3c+DQorCQkJCQkJPC90Ym9keT4NCisJCQkJCTwvdGdyb3VwPg0KKwkJCQk8L3RhYmxlPg0KKwkJ CTwvcGFyYT4NCisJCQk8cGFyYT4NCisJCQkJPGV4YW1wbGU+DQorCQkJCQk8dGl0bGU+VXNpbmcg cm91dGluZyBleHByZXNzaW9uczwvdGl0bGU+DQorCQkJCQk8cHJvZ3JhbWxpc3Rpbmc+DQorIyBJ UCBmYW1pbHkgaW5kZXBlbmRlbnQgcnQgZXhwcmVzc2lvbg0KK2ZpbHRlciBvdXRwdXQgcnQgY2xh c3NpZCAxMA0KKw0KKyMgSVAgZmFtaWx5IGRlcGVuZGVudCBydCBleHByZXNzaW9ucw0KK2lwIGZp bHRlciBvdXRwdXQgcnQgbmV4dGhvcCAxOTIuMTY4LjAuMQ0KK2lwNiBmaWx0ZXIgb3V0cHV0IHJ0 IG5leHRob3AgZmQwMDo6MQ0KK2luZXQgZmlsdGVyIGV0aGVyIHR5cGUgaXAgb3V0cHV0IHJ0IG5l eHRob3AgMTkyLjE2OC4wLjENCitpbmV0IGZpbHRlciBldGhlciB0eXBlIGlwNiBvdXRwdXQgcnQg bmV4dGhvcCBmZDAwOjoxDQorCQkJCQk8L3Byb2dyYW1saXN0aW5nPg0KKwkJCQk8L2V4YW1wbGU+ DQorCQkJPC9wYXJhPg0KKwkJPC9yZWZzZWN0Mj4NCiAJPC9yZWZzZWN0MT4NCiANCiAJPHJlZnNl Y3QxPg0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvZXhwcmVzc2lvbi5oIGIvaW5jbHVkZS9leHByZXNz aW9uLmgNCmluZGV4IGVkYTNkOTguLjNhZTRlODAgMTAwNjQ0DQotLS0gYS9pbmNsdWRlL2V4cHJl c3Npb24uaA0KKysrIGIvaW5jbHVkZS9leHByZXNzaW9uLmgNCkBAIC0zNSw2ICszNSw3IEBADQog ICogQEVYUFJfUkVMQVRJT05BTDoJZXF1YWxpdHkgYW5kIHJlbGF0aW9uYWwgZXhwcmVzc2lvbnMN CiAgKiBARVhQUl9OVU1HRU46CW51bWJlciBnZW5lcmF0aW9uIGV4cHJlc3Npb24NCiAgKiBARVhQ Ul9IQVNIOgkJaGFzaCBleHByZXNzaW9uDQorICogQEVYUFJfUlQ6CQlyb3V0aW5nIGV4cHJlc3Np b24NCiAgKi8NCiBlbnVtIGV4cHJfdHlwZXMgew0KIAlFWFBSX0lOVkFMSUQsDQpAQCAtNTksNiAr NjAsNyBAQCBlbnVtIGV4cHJfdHlwZXMgew0KIAlFWFBSX1JFTEFUSU9OQUwsDQogCUVYUFJfTlVN R0VOLA0KIAlFWFBSX0hBU0gsDQorCUVYUFJfUlQsDQogfTsNCiANCiBlbnVtIG9wcyB7DQpAQCAt MTgwLDYgKzE4Miw3IEBAIGVudW0gZXhwcl9mbGFncyB7DQogI2luY2x1ZGUgPGV4dGhkci5oPg0K ICNpbmNsdWRlIDxudW1nZW4uaD4NCiAjaW5jbHVkZSA8bWV0YS5oPg0KKyNpbmNsdWRlIDxydC5o Pg0KICNpbmNsdWRlIDxoYXNoLmg+DQogI2luY2x1ZGUgPGN0Lmg+DQogDQpAQCAtMjgzLDYgKzI4 NiwxMCBAQCBzdHJ1Y3QgZXhwciB7DQogCQkJZW51bSBwcm90b19iYXNlcwliYXNlOw0KIAkJfSBt ZXRhOw0KIAkJc3RydWN0IHsNCisJCQkvKiBFWFBSX1JUICovDQorCQkJZW51bSBuZnRfcnRfa2V5 cwlrZXk7DQorCQl9IHJ0Ow0KKwkJc3RydWN0IHsNCiAJCQkvKiBFWFBSX0NUICovDQogCQkJZW51 bSBuZnRfY3Rfa2V5cwlrZXk7DQogCQkJaW50OF90CQkJZGlyZWN0aW9uOw0KZGlmZiAtLWdpdCBh L2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX3RhYmxlcy5oIGIvaW5jbHVkZS9saW51eC9uZXRm aWx0ZXIvbmZfdGFibGVzLmgNCmluZGV4IGU4NGE5ZjUuLjJkNDc3ODQgMTAwNjQ0DQotLS0gYS9p bmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl90YWJsZXMuaA0KKysrIGIvaW5jbHVkZS9saW51eC9u ZXRmaWx0ZXIvbmZfdGFibGVzLmgNCkBAIC03NTMsNiArNzUzLDE5IEBAIGVudW0gbmZ0X21ldGFf a2V5cyB7DQogfTsNCiANCiAvKioNCisgKiBlbnVtIG5mdF9ydF9rZXlzIC0gbmZfdGFibGVzIHJv dXRpbmcgZXhwcmVzc2lvbiBrZXlzDQorICoNCisgKiBATkZUX1JUX0NMQVNTSUQ6IHJlYWxtIHZh bHVlIG9mIHBhY2tldCdzIHJvdXRlIChza2ItPmRzdC0+dGNsYXNzaWQpDQorICogQE5GVF9SVF9O RVhUSE9QNDogcm91dGluZyBuZXh0aG9wIGZvciBJUHY0DQorICogQE5GVF9SVF9ORVhUSE9QNjog cm91dGluZyBuZXh0aG9wIGZvciBJUHY2DQorICovDQorZW51bSBuZnRfcnRfa2V5cyB7DQorCU5G VF9SVF9DTEFTU0lELA0KKwlORlRfUlRfTkVYVEhPUDQsDQorCU5GVF9SVF9ORVhUSE9QNiwNCit9 Ow0KKw0KKy8qKg0KICAqIGVudW0gbmZ0X2hhc2hfYXR0cmlidXRlcyAtIG5mX3RhYmxlcyBoYXNo IGV4cHJlc3Npb24gbmV0bGluayBhdHRyaWJ1dGVzDQogICoNCiAgKiBATkZUQV9IQVNIX1NSRUc6 IHNvdXJjZSByZWdpc3RlciAoTkxBX1UzMikNCkBAIC03ODksNiArODAyLDIwIEBAIGVudW0gbmZ0 X21ldGFfYXR0cmlidXRlcyB7DQogI2RlZmluZSBORlRBX01FVEFfTUFYCQkoX19ORlRBX01FVEFf TUFYIC0gMSkNCiANCiAvKioNCisgKiBlbnVtIG5mdF9ydF9hdHRyaWJ1dGVzIC0gbmZfdGFibGVz IHJvdXRpbmcgZXhwcmVzc2lvbiBuZXRsaW5rIGF0dHJpYnV0ZXMNCisgKg0KKyAqIEBORlRBX1JU X0RSRUc6IGRlc3RpbmF0aW9uIHJlZ2lzdGVyIChOTEFfVTMyKQ0KKyAqIEBORlRBX1JUX0tFWTog cm91dGluZyBkYXRhIGl0ZW0gdG8gbG9hZCAoTkxBX1UzMjogbmZ0X3J0X2tleXMpDQorICovDQor ZW51bSBuZnRfcnRfYXR0cmlidXRlcyB7DQorCU5GVEFfUlRfVU5TUEVDLA0KKwlORlRBX1JUX0RS RUcsDQorCU5GVEFfUlRfS0VZLA0KKwlfX05GVEFfUlRfTUFYDQorfTsNCisjZGVmaW5lIE5GVEFf UlRfTUFYCQkoX19ORlRBX1JUX01BWCAtIDEpDQorDQorLyoqDQogICogZW51bSBuZnRfY3Rfa2V5 cyAtIG5mX3RhYmxlcyBjdCBleHByZXNzaW9uIGtleXMNCiAgKg0KICAqIEBORlRfQ1RfU1RBVEU6 IGNvbm50cmFjayBzdGF0ZSAoYml0bWFzayBvZiBlbnVtIGlwX2Nvbm50cmFja19pbmZvKQ0KZGlm ZiAtLWdpdCBhL2luY2x1ZGUvcnQuaCBiL2luY2x1ZGUvcnQuaA0KbmV3IGZpbGUgbW9kZSAxMDA2 NDQNCmluZGV4IDAwMDAwMDAuLjcyOGNmNWYNCi0tLSAvZGV2L251bGwNCisrKyBiL2luY2x1ZGUv cnQuaA0KQEAgLTAsMCArMSwzMyBAQA0KKyNpZm5kZWYgTkZUQUJMRVNfUlRfSA0KKyNkZWZpbmUg TkZUQUJMRVNfUlRfSA0KKw0KKy8qKg0KKyAqIHN0cnVjdCBydF90ZW1wbGF0ZSAtIHRlbXBsYXRl IGZvciByb3V0aW5nIGV4cHJlc3Npb25zDQorICoNCisgKiBAdG9rZW46CXBhcnNlciB0b2tlbiBm b3IgdGhlIGV4cHJlc3Npb24NCisgKiBAZHR5cGU6CWRhdGEgdHlwZSBvZiB0aGUgZXhwcmVzc2lv bg0KKyAqIEBsZW46CWxlbmd0aCBvZiB0aGUgZXhwcmVzc2lvbg0KKyAqIEBieXRlb3JkZXI6CWJ5 dGVvcmRlcg0KKyAqIEBpbnZhbGlkOglpbnZhbGlkYXRlIGRhdGF0eXBlIG9uIGFsbG9jYXRpb24g ZnJvbSBwYXJzZXINCisgKi8NCitzdHJ1Y3QgcnRfdGVtcGxhdGUgew0KKwljb25zdCBjaGFyCQkq dG9rZW47DQorCWNvbnN0IHN0cnVjdCBkYXRhdHlwZQkqZHR5cGU7DQorCXVuc2lnbmVkIGludAkJ bGVuOw0KKwllbnVtIGJ5dGVvcmRlcgkJYnl0ZW9yZGVyOw0KKwlib29sCQkJaW52YWxpZDsNCit9 Ow0KKw0KKyNkZWZpbmUgUlRfVEVNUExBVEUoX190b2tlbiwgX19kdHlwZSwgX19sZW4sIF9fYnl0 ZW9yZGVyLCBfX2ludmFsaWQpIHsJXA0KKwkudG9rZW4JCT0gKF9fdG9rZW4pLAkJCQkJXA0KKwku ZHR5cGUJCT0gKF9fZHR5cGUpLAkJCQkJXA0KKwkubGVuCQk9IChfX2xlbiksCQkJCQlcDQorCS5i eXRlb3JkZXIJPSAoX19ieXRlb3JkZXIpLAkJCQlcDQorCS5pbnZhbGlkCT0gKF9faW52YWxpZCks CQkJCQlcDQorfQ0KKw0KK2V4dGVybiBzdHJ1Y3QgZXhwciAqcnRfZXhwcl9hbGxvYyhjb25zdCBz dHJ1Y3QgbG9jYXRpb24gKmxvYywNCisJCQkJICBlbnVtIG5mdF9ydF9rZXlzIGtleSwgYm9vbCBp bnZhbGlkKTsNCitleHRlcm4gdm9pZCBydF9leHByX3VwZGF0ZV90eXBlKHN0cnVjdCBwcm90b19j dHggKmN0eCwgc3RydWN0IGV4cHIgKmV4cHIpOw0KKw0KKyNlbmRpZiAvKiBORlRBQkxFU19SVF9I ICovDQpkaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmFtIGIvc3JjL01ha2VmaWxlLmFtDQppbmRl eCA2M2JiZWYyLi45YTE1MWJkIDEwMDY0NA0KLS0tIGEvc3JjL01ha2VmaWxlLmFtDQorKysgYi9z cmMvTWFrZWZpbGUuYW0NCkBAIC0zOCw2ICszOCw3IEBAIG5mdF9TT1VSQ0VTID0JbWFpbi5jCQkJ CVwNCiAJCWV4dGhkci5jCQkJXA0KIAkJaGFzaC5jCQkJCVwNCiAJCW1ldGEuYwkJCQlcDQorCQly dC5jCQkJCVwNCiAJCW51bWdlbi5jCQkJXA0KIAkJY3QuYwkJCQlcDQogCQluZXRsaW5rLmMJCQlc DQpkaWZmIC0tZ2l0IGEvc3JjL2V2YWx1YXRlLmMgYi9zcmMvZXZhbHVhdGUuYw0KaW5kZXggNDVh ZjMyOS4uYWIwZGQ5ZSAxMDA2NDQNCi0tLSBhL3NyYy9ldmFsdWF0ZS5jDQorKysgYi9zcmMvZXZh bHVhdGUuYw0KQEAgLTYxMiw2ICs2MTIsMzggQEAgc3RhdGljIGludCBleHByX2V2YWx1YXRlX3Bh eWxvYWQoc3RydWN0IGV2YWxfY3R4ICpjdHgsIHN0cnVjdCBleHByICoqZXhwcnApDQogfQ0KIA0K IC8qDQorICogUlQgZXhwcmVzc2lvbjogdmFsaWRhdGUgcHJvdG9jb2wgZGVwZW5kZW5jaWVzLg0K KyAqLw0KK3N0YXRpYyBpbnQgZXhwcl9ldmFsdWF0ZV9ydChzdHJ1Y3QgZXZhbF9jdHggKmN0eCwg c3RydWN0IGV4cHIgKipleHByKQ0KK3sNCisJY29uc3Qgc3RydWN0IHByb3RvX2Rlc2MgKmJhc2U7 DQorCXN0cnVjdCBleHByICpydCA9ICpleHByOw0KKw0KKwlydF9leHByX3VwZGF0ZV90eXBlKCZj dHgtPnBjdHgsIHJ0KTsNCisNCisJYmFzZSA9IGN0eC0+cGN0eC5wcm90b2NvbFtQUk9UT19CQVNF X05FVFdPUktfSERSXS5kZXNjOw0KKwlzd2l0Y2ggKHJ0LT5ydC5rZXkpIHsNCisJY2FzZSBORlRf UlRfTkVYVEhPUDQ6DQorCQlpZiAoYmFzZSAhPSAmcHJvdG9faXApDQorCQkJZ290byBlcnI7DQor CQlicmVhazsNCisJY2FzZSBORlRfUlRfTkVYVEhPUDY6DQorCQlpZiAoYmFzZSAhPSAmcHJvdG9f aXA2KQ0KKwkJCWdvdG8gZXJyOw0KKwkJYnJlYWs7DQorCWRlZmF1bHQ6DQorCQlicmVhazsNCisJ fQ0KKw0KKwlyZXR1cm4gZXhwcl9ldmFsdWF0ZV9wcmltYXJ5KGN0eCwgZXhwcik7DQorDQorZXJy Og0KKwlyZXR1cm4gZXhwcl9lcnJvcihjdHgtPm1zZ3MsIHJ0LA0KKwkJCSAgImV0aGVyIHR5cGUg aXAgb3IgaXA2IG11c3QgYmUgc3BlY2lmaWVkIGJlZm9yZSAiDQorCQkJICAicm91dGluZyBleHBy ZXNzaW9uIik7DQorfQ0KKw0KKy8qDQogICogQ1QgZXhwcmVzc2lvbjogdXBkYXRlIHRoZSBwcm90 b2NvbCBkZXBlbmRhbnQgdHlwZXMgYmFzZXMgb24gdGhlIHByb3RvY29sDQogICogY29udGV4dC4N CiAgKi8NCkBAIC0xNjA5LDYgKzE2NDEsOCBAQCBzdGF0aWMgaW50IGV4cHJfZXZhbHVhdGUoc3Ry dWN0IGV2YWxfY3R4ICpjdHgsIHN0cnVjdCBleHByICoqZXhwcikNCiAJCXJldHVybiBleHByX2V2 YWx1YXRlX3ByaW1hcnkoY3R4LCBleHByKTsNCiAJY2FzZSBFWFBSX1BBWUxPQUQ6DQogCQlyZXR1 cm4gZXhwcl9ldmFsdWF0ZV9wYXlsb2FkKGN0eCwgZXhwcik7DQorCWNhc2UgRVhQUl9SVDoNCisJ CXJldHVybiBleHByX2V2YWx1YXRlX3J0KGN0eCwgZXhwcik7DQogCWNhc2UgRVhQUl9DVDoNCiAJ CXJldHVybiBleHByX2V2YWx1YXRlX2N0KGN0eCwgZXhwcik7DQogCWNhc2UgRVhQUl9QUkVGSVg6 DQpkaWZmIC0tZ2l0IGEvc3JjL25ldGxpbmtfZGVsaW5lYXJpemUuYyBiL3NyYy9uZXRsaW5rX2Rl bGluZWFyaXplLmMNCmluZGV4IGMzYjBiMjcuLmRjOWNjODMgMTAwNjQ0DQotLS0gYS9zcmMvbmV0 bGlua19kZWxpbmVhcml6ZS5jDQorKysgYi9zcmMvbmV0bGlua19kZWxpbmVhcml6ZS5jDQpAQCAt NTg1LDYgKzU4NSwyMSBAQCBzdGF0aWMgdm9pZCBuZXRsaW5rX3BhcnNlX21ldGEoc3RydWN0IG5l dGxpbmtfcGFyc2VfY3R4ICpjdHgsDQogCQluZXRsaW5rX3BhcnNlX21ldGFfc3RtdChjdHgsIGxv YywgbmxlKTsNCiB9DQogDQorc3RhdGljIHZvaWQgbmV0bGlua19wYXJzZV9ydChzdHJ1Y3QgbmV0 bGlua19wYXJzZV9jdHggKmN0eCwNCisJCQkgICAgIGNvbnN0IHN0cnVjdCBsb2NhdGlvbiAqbG9j LA0KKwkJCSAgICAgY29uc3Qgc3RydWN0IG5mdG5sX2V4cHIgKm5sZSkNCit7DQorCWVudW0gbmZ0 X3JlZ2lzdGVycyBkcmVnOw0KKwl1aW50MzJfdCBrZXk7DQorCXN0cnVjdCBleHByICpleHByOw0K Kw0KKwlrZXkgID0gbmZ0bmxfZXhwcl9nZXRfdTMyKG5sZSwgTkZUTkxfRVhQUl9SVF9LRVkpOw0K KwlleHByID0gcnRfZXhwcl9hbGxvYyhsb2MsIGtleSwgZmFsc2UpOw0KKw0KKwlkcmVnID0gbmV0 bGlua19wYXJzZV9yZWdpc3RlcihubGUsIE5GVE5MX0VYUFJfUlRfRFJFRyk7DQorCW5ldGxpbmtf c2V0X3JlZ2lzdGVyKGN0eCwgZHJlZywgZXhwcik7DQorfQ0KKw0KIHN0YXRpYyB2b2lkIG5ldGxp bmtfcGFyc2VfbnVtZ2VuKHN0cnVjdCBuZXRsaW5rX3BhcnNlX2N0eCAqY3R4LA0KIAkJCQkgY29u c3Qgc3RydWN0IGxvY2F0aW9uICpsb2MsDQogCQkJCSBjb25zdCBzdHJ1Y3QgbmZ0bmxfZXhwciAq bmxlKQ0KQEAgLTEwODYsNiArMTEwMSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgew0KIAl7IC5u YW1lID0gInBheWxvYWQiLAkucGFyc2UgPSBuZXRsaW5rX3BhcnNlX3BheWxvYWQgfSwNCiAJeyAu bmFtZSA9ICJleHRoZHIiLAkucGFyc2UgPSBuZXRsaW5rX3BhcnNlX2V4dGhkciB9LA0KIAl7IC5u YW1lID0gIm1ldGEiLAkucGFyc2UgPSBuZXRsaW5rX3BhcnNlX21ldGEgfSwNCisJeyAubmFtZSA9 ICJydCIsCQkucGFyc2UgPSBuZXRsaW5rX3BhcnNlX3J0IH0sDQogCXsgLm5hbWUgPSAiY3QiLAkJ LnBhcnNlID0gbmV0bGlua19wYXJzZV9jdCB9LA0KIAl7IC5uYW1lID0gImNvdW50ZXIiLAkucGFy c2UgPSBuZXRsaW5rX3BhcnNlX2NvdW50ZXIgfSwNCiAJeyAubmFtZSA9ICJsb2ciLAkucGFyc2Ug PSBuZXRsaW5rX3BhcnNlX2xvZyB9LA0KQEAgLTE3MjQsNiArMTc0MCw3IEBAIHN0YXRpYyB2b2lk IGV4cHJfcG9zdHByb2Nlc3Moc3RydWN0IHJ1bGVfcHBfY3R4ICpjdHgsIHN0cnVjdCBleHByICoq ZXhwcnApDQogCQlicmVhazsNCiAJY2FzZSBFWFBSX1NFVF9SRUY6DQogCWNhc2UgRVhQUl9NRVRB Og0KKwljYXNlIEVYUFJfUlQ6DQogCWNhc2UgRVhQUl9WRVJESUNUOg0KIAljYXNlIEVYUFJfTlVN R0VOOg0KIAkJYnJlYWs7DQpkaWZmIC0tZ2l0IGEvc3JjL25ldGxpbmtfbGluZWFyaXplLmMgYi9z cmMvbmV0bGlua19saW5lYXJpemUuYw0KaW5kZXggYjA0NjI1Zi4uYTVkNDUwMiAxMDA2NDQNCi0t LSBhL3NyYy9uZXRsaW5rX2xpbmVhcml6ZS5jDQorKysgYi9zcmMvbmV0bGlua19saW5lYXJpemUu Yw0KQEAgLTE3Miw2ICsxNzIsMTggQEAgc3RhdGljIHZvaWQgbmV0bGlua19nZW5fbWV0YShzdHJ1 Y3QgbmV0bGlua19saW5lYXJpemVfY3R4ICpjdHgsDQogCW5mdG5sX3J1bGVfYWRkX2V4cHIoY3R4 LT5ubHIsIG5sZSk7DQogfQ0KIA0KK3N0YXRpYyB2b2lkIG5ldGxpbmtfZ2VuX3J0KHN0cnVjdCBu ZXRsaW5rX2xpbmVhcml6ZV9jdHggKmN0eCwNCisJCQkgICAgIGNvbnN0IHN0cnVjdCBleHByICpl eHByLA0KKwkJCSAgICAgZW51bSBuZnRfcmVnaXN0ZXJzIGRyZWcpDQorew0KKwlzdHJ1Y3QgbmZ0 bmxfZXhwciAqbmxlOw0KKw0KKwlubGUgPSBhbGxvY19uZnRfZXhwcigicnQiKTsNCisJbmV0bGlu a19wdXRfcmVnaXN0ZXIobmxlLCBORlROTF9FWFBSX1JUX0RSRUcsIGRyZWcpOw0KKwluZnRubF9l eHByX3NldF91MzIobmxlLCBORlROTF9FWFBSX1JUX0tFWSwgZXhwci0+cnQua2V5KTsNCisJbmZ0 bmxfcnVsZV9hZGRfZXhwcihjdHgtPm5sciwgbmxlKTsNCit9DQorDQogc3RhdGljIHZvaWQgbmV0 bGlua19nZW5fbnVtZ2VuKHN0cnVjdCBuZXRsaW5rX2xpbmVhcml6ZV9jdHggKmN0eCwNCiAJCQkg ICAgY29uc3Qgc3RydWN0IGV4cHIgKmV4cHIsDQogCQkJICAgIGVudW0gbmZ0X3JlZ2lzdGVycyBk cmVnKQ0KQEAgLTY0MSw2ICs2NTMsOCBAQCBzdGF0aWMgdm9pZCBuZXRsaW5rX2dlbl9leHByKHN0 cnVjdCBuZXRsaW5rX2xpbmVhcml6ZV9jdHggKmN0eCwNCiAJCXJldHVybiBuZXRsaW5rX2dlbl9l eHRoZHIoY3R4LCBleHByLCBkcmVnKTsNCiAJY2FzZSBFWFBSX01FVEE6DQogCQlyZXR1cm4gbmV0 bGlua19nZW5fbWV0YShjdHgsIGV4cHIsIGRyZWcpOw0KKwljYXNlIEVYUFJfUlQ6DQorCQlyZXR1 cm4gbmV0bGlua19nZW5fcnQoY3R4LCBleHByLCBkcmVnKTsNCiAJY2FzZSBFWFBSX0NUOg0KIAkJ cmV0dXJuIG5ldGxpbmtfZ2VuX2N0KGN0eCwgZXhwciwgZHJlZyk7DQogCWNhc2UgRVhQUl9TRVRf RUxFTToNCmRpZmYgLS1naXQgYS9zcmMvcGFyc2VyX2Jpc29uLnkgYi9zcmMvcGFyc2VyX2Jpc29u LnkNCmluZGV4IGVjOTA1MmEuLmRjMDJmZDIgMTAwNjQ0DQotLS0gYS9zcmMvcGFyc2VyX2Jpc29u LnkNCisrKyBiL3NyYy9wYXJzZXJfYmlzb24ueQ0KQEAgLTMzOCw2ICszMzgsOSBAQCBzdGF0aWMg dm9pZCBsb2NhdGlvbl91cGRhdGUoc3RydWN0IGxvY2F0aW9uICpsb2MsIHN0cnVjdCBsb2NhdGlv biAqcmhzLCBpbnQgbikNCiAldG9rZW4gT0lGR1JPVVAJCQkib2lmZ3JvdXAiDQogJXRva2VuIENH Uk9VUAkJCSJjZ3JvdXAiDQogDQorJXRva2VuIENMQVNTSUQJCQkiY2xhc3NpZCINCisldG9rZW4g TkVYVEhPUAkJCSJuZXh0aG9wIg0KKw0KICV0b2tlbiBDVAkJCSJjdCINCiAldG9rZW4gRElSRUNU SU9OCQkiZGlyZWN0aW9uIg0KICV0b2tlbiBTVEFURQkJCSJzdGF0ZSINCkBAIC01OTAsNiArNTkz LDEwIEBAIHN0YXRpYyB2b2lkIGxvY2F0aW9uX3VwZGF0ZShzdHJ1Y3QgbG9jYXRpb24gKmxvYywg c3RydWN0IGxvY2F0aW9uICpyaHMsIGludCBuKQ0KICVkZXN0cnVjdG9yIHsgZXhwcl9mcmVlKCQk KTsgfQltZXRhX2V4cHINCiAldHlwZSA8dmFsPgkJCW1ldGFfa2V5CW1ldGFfa2V5X3F1YWxpZmll ZAltZXRhX2tleV91bnF1YWxpZmllZAludW1nZW5fdHlwZQ0KIA0KKyV0eXBlIDxleHByPgkJCXJ0 X2V4cHINCislZGVzdHJ1Y3RvciB7IGV4cHJfZnJlZSgkJCk7IH0JcnRfZXhwcg0KKyV0eXBlIDx2 YWw+CQkJcnRfa2V5DQorDQogJXR5cGUgPGV4cHI+CQkJY3RfZXhwcg0KICVkZXN0cnVjdG9yIHsg ZXhwcl9mcmVlKCQkKTsgfQljdF9leHByDQogJXR5cGUgPHZhbD4JCQljdF9rZXkJCWN0X2tleV9k aXIJY3Rfa2V5X2NvdW50ZXJzDQpAQCAtMTk5NSw2ICsyMDAyLDcgQEAgcHJpbWFyeV9leHByCQk6 CXN5bWJvbF9leHByCQkJeyAkJCA9ICQxOyB9DQogCQkJfAlwYXlsb2FkX2V4cHIJCQl7ICQkID0g JDE7IH0NCiAJCQl8CWV4dGhkcl9leHByCQkJeyAkJCA9ICQxOyB9DQogCQkJfAltZXRhX2V4cHIJ CQl7ICQkID0gJDE7IH0NCisJCQl8CXJ0X2V4cHIJCQkJeyAkJCA9ICQxOyB9DQogCQkJfAljdF9l eHByCQkJCXsgJCQgPSAkMTsgfQ0KIAkJCXwJbnVtZ2VuX2V4cHIJCQl7ICQkID0gJDE7IH0NCiAJ CQl8CWhhc2hfZXhwcgkJCXsgJCQgPSAkMTsgfQ0KQEAgLTI1MjksNiArMjUzNywxNiBAQCBoYXNo X2V4cHIJCToJSkhBU0gJZXhwcglNT0QJTlVNCVNFRUQJTlVNDQogCQkJfQ0KIAkJCTsNCiANCity dF9leHByCQkJOglSVAlydF9rZXkNCisJCQl7DQorCQkJCSQkID0gcnRfZXhwcl9hbGxvYygmQCQs ICQyLCB0cnVlKTsNCisJCQl9DQorCQkJOw0KKw0KK3J0X2tleQkJCToJQ0xBU1NJRAkJeyAkJCA9 IE5GVF9SVF9DTEFTU0lEOyB9DQorCQkJfAlORVhUSE9QCQl7ICQkID0gTkZUX1JUX05FWFRIT1A0 OyB9DQorCQkJOw0KKw0KIGN0X2V4cHIJCQk6IAlDVAljdF9rZXkNCiAJCQl7DQogCQkJCSQkID0g Y3RfZXhwcl9hbGxvYygmQCQsICQyLCAtMSk7DQpkaWZmIC0tZ2l0IGEvc3JjL3J0LmMgYi9zcmMv cnQuYw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAuLjIzMmMxZGMNCi0tLSAv ZGV2L251bGwNCisrKyBiL3NyYy9ydC5jDQpAQCAtMCwwICsxLDE0MSBAQA0KKy8qDQorICogUm91 dGluZyBleHByZXNzaW9uIHJlbGF0ZWQgZGVmaW5pdGlvbiBhbmQgdHlwZXMuDQorICoNCisgKiBD b3B5cmlnaHQgKGMpIDIwMTYgQW5kZXJzIEsuIFBlZGVyc2VuIDxha3BAY29oYWVzaW8uY29tPg0K KyAqDQorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkNCisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcw0KKyAqIHB1Ymxpc2hlZCBieSB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLg0KKyAqLw0KKw0KKyNpbmNsdWRlIDxlcnJuby5oPg0K KyNpbmNsdWRlIDxzdGRkZWYuaD4NCisjaW5jbHVkZSA8c3RkbGliLmg+DQorI2luY2x1ZGUgPHN0 ZGlvLmg+DQorI2luY2x1ZGUgPHN0ZGludC5oPg0KKyNpbmNsdWRlIDxzdHJpbmcuaD4NCisjaW5j bHVkZSA8YXJwYS9pbmV0Lmg+DQorI2luY2x1ZGUgPGxpbnV4L25ldGZpbHRlci5oPg0KKw0KKyNp bmNsdWRlIDxuZnRhYmxlcy5oPg0KKyNpbmNsdWRlIDxleHByZXNzaW9uLmg+DQorI2luY2x1ZGUg PGRhdGF0eXBlLmg+DQorI2luY2x1ZGUgPHJ0Lmg+DQorI2luY2x1ZGUgPHJ1bGUuaD4NCisNCitz dGF0aWMgc3RydWN0IHN5bWJvbF90YWJsZSAqcmVhbG1fdGJsOw0KK3N0YXRpYyB2b2lkIF9faW5p dCByZWFsbV90YWJsZV9pbml0KHZvaWQpDQorew0KKwlyZWFsbV90YmwgPSBydF9zeW1ib2xfdGFi bGVfaW5pdCgiL2V0Yy9pcHJvdXRlMi9ydF9yZWFsbXMiKTsNCit9DQorDQorc3RhdGljIHZvaWQg X19leGl0IHJlYWxtX3RhYmxlX2V4aXQodm9pZCkNCit7DQorCXJ0X3N5bWJvbF90YWJsZV9mcmVl KHJlYWxtX3RibCk7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIHJlYWxtX3R5cGVfcHJpbnQoY29uc3Qg c3RydWN0IGV4cHIgKmV4cHIpDQorew0KKwlyZXR1cm4gc3ltYm9saWNfY29uc3RhbnRfcHJpbnQo cmVhbG1fdGJsLCBleHByLCB0cnVlKTsNCit9DQorDQorc3RhdGljIHN0cnVjdCBlcnJvcl9yZWNv cmQgKnJlYWxtX3R5cGVfcGFyc2UoY29uc3Qgc3RydWN0IGV4cHIgKnN5bSwNCisJCQkJCSAgICAg c3RydWN0IGV4cHIgKipyZXMpDQorew0KKwlyZXR1cm4gc3ltYm9saWNfY29uc3RhbnRfcGFyc2Uo c3ltLCByZWFsbV90YmwsIHJlcyk7DQorfQ0KKw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZGF0YXR5 cGUgcmVhbG1fdHlwZSA9IHsNCisJLnR5cGUJCT0gVFlQRV9SRUFMTSwNCisJLm5hbWUJCT0gInJl YWxtIiwNCisJLmRlc2MJCT0gInJvdXRpbmcgcmVhbG0iLA0KKwkuYnl0ZW9yZGVyCT0gQllURU9S REVSX0hPU1RfRU5ESUFOLA0KKwkuc2l6ZQkJPSA0ICogQklUU19QRVJfQllURSwNCisJLmJhc2V0 eXBlCT0gJmludGVnZXJfdHlwZSwNCisJLnByaW50CQk9IHJlYWxtX3R5cGVfcHJpbnQsDQorCS5w YXJzZQkJPSByZWFsbV90eXBlX3BhcnNlLA0KKwkuZmxhZ3MJCT0gRFRZUEVfRl9QUkVGSVgsDQor fTsNCisNCitzdGF0aWMgY29uc3Qgc3RydWN0IHJ0X3RlbXBsYXRlIHJ0X3RlbXBsYXRlc1tdID0g ew0KKwlbTkZUX1JUX0NMQVNTSURdCT0gUlRfVEVNUExBVEUoImNsYXNzaWQiLA0KKwkJCQkJICAg ICAgJnJlYWxtX3R5cGUsDQorCQkJCQkgICAgICA0ICogQklUU19QRVJfQllURSwNCisJCQkJCSAg ICAgIEJZVEVPUkRFUl9IT1NUX0VORElBTiwNCisJCQkJCSAgICAgIGZhbHNlKSwNCisJW05GVF9S VF9ORVhUSE9QNF0JPSBSVF9URU1QTEFURSgibmV4dGhvcCIsDQorCQkJCQkgICAgICAmaXBhZGRy X3R5cGUsDQorCQkJCQkgICAgICA0ICogQklUU19QRVJfQllURSwNCisJCQkJCSAgICAgIEJZVEVP UkRFUl9CSUdfRU5ESUFOLA0KKwkJCQkJICAgICAgdHJ1ZSksDQorCVtORlRfUlRfTkVYVEhPUDZd CT0gUlRfVEVNUExBVEUoIm5leHRob3AiLA0KKwkJCQkJICAgICAgJmlwNmFkZHJfdHlwZSwNCisJ CQkJCSAgICAgIDE2ICogQklUU19QRVJfQllURSwNCisJCQkJCSAgICAgIEJZVEVPUkRFUl9CSUdf RU5ESUFOLA0KKwkJCQkJICAgICAgdHJ1ZSksDQorfTsNCisNCitzdGF0aWMgdm9pZCBydF9leHBy X3ByaW50KGNvbnN0IHN0cnVjdCBleHByICpleHByKQ0KK3sNCisJcHJpbnRmKCJydCAlcyIsIHJ0 X3RlbXBsYXRlc1tleHByLT5ydC5rZXldLnRva2VuKTsNCit9DQorDQorc3RhdGljIGJvb2wgcnRf ZXhwcl9jbXAoY29uc3Qgc3RydWN0IGV4cHIgKmUxLCBjb25zdCBzdHJ1Y3QgZXhwciAqZTIpDQor ew0KKwlyZXR1cm4gZTEtPnJ0LmtleSA9PSBlMi0+cnQua2V5Ow0KK30NCisNCitzdGF0aWMgdm9p ZCBydF9leHByX2Nsb25lKHN0cnVjdCBleHByICpuZXcsIGNvbnN0IHN0cnVjdCBleHByICpleHBy KQ0KK3sNCisJbmV3LT5ydC5rZXkgPSBleHByLT5ydC5rZXk7DQorfQ0KKw0KK3N0YXRpYyBjb25z dCBzdHJ1Y3QgZXhwcl9vcHMgcnRfZXhwcl9vcHMgPSB7DQorCS50eXBlCQk9IEVYUFJfUlQsDQor CS5uYW1lCQk9ICJydCIsDQorCS5wcmludAkJPSBydF9leHByX3ByaW50LA0KKwkuY21wCQk9IHJ0 X2V4cHJfY21wLA0KKwkuY2xvbmUJCT0gcnRfZXhwcl9jbG9uZSwNCit9Ow0KKw0KK3N0cnVjdCBl eHByICpydF9leHByX2FsbG9jKGNvbnN0IHN0cnVjdCBsb2NhdGlvbiAqbG9jLCBlbnVtIG5mdF9y dF9rZXlzIGtleSwNCisJCQkgICBib29sIGludmFsaWQpDQorew0KKwljb25zdCBzdHJ1Y3QgcnRf dGVtcGxhdGUgKnRtcGwgPSAmcnRfdGVtcGxhdGVzW2tleV07DQorCXN0cnVjdCBleHByICpleHBy Ow0KKw0KKwlpZiAoaW52YWxpZCAmJiB0bXBsLT5pbnZhbGlkKQ0KKwkJZXhwciA9IGV4cHJfYWxs b2MobG9jLCAmcnRfZXhwcl9vcHMsICZpbnZhbGlkX3R5cGUsDQorCQkJCSAgdG1wbC0+Ynl0ZW9y ZGVyLCAwKTsNCisJZWxzZQ0KKwkJZXhwciA9IGV4cHJfYWxsb2MobG9jLCAmcnRfZXhwcl9vcHMs IHRtcGwtPmR0eXBlLA0KKwkJCQkgIHRtcGwtPmJ5dGVvcmRlciwgdG1wbC0+bGVuKTsNCisJZXhw ci0+cnQua2V5ID0ga2V5Ow0KKw0KKwlyZXR1cm4gZXhwcjsNCit9DQorDQordm9pZCBydF9leHBy X3VwZGF0ZV90eXBlKHN0cnVjdCBwcm90b19jdHggKmN0eCwgc3RydWN0IGV4cHIgKmV4cHIpDQor ew0KKwljb25zdCBzdHJ1Y3QgcHJvdG9fZGVzYyAqZGVzYzsNCisNCisJc3dpdGNoIChleHByLT5y dC5rZXkpIHsNCisJY2FzZSBORlRfUlRfTkVYVEhPUDQ6DQorCQlkZXNjID0gY3R4LT5wcm90b2Nv bFtQUk9UT19CQVNFX05FVFdPUktfSERSXS5kZXNjOw0KKwkJaWYgKGRlc2MgPT0gJnByb3RvX2lw KQ0KKwkJCWV4cHItPmR0eXBlID0gJmlwYWRkcl90eXBlOw0KKwkJZWxzZSBpZiAoZGVzYyA9PSAm cHJvdG9faXA2KSB7DQorCQkJZXhwci0+cnQua2V5Kys7DQorCQkJZXhwci0+ZHR5cGUgPSAmaXA2 YWRkcl90eXBlOw0KKwkJfQ0KKwkJZXhwci0+bGVuID0gZXhwci0+ZHR5cGUtPnNpemU7DQorCQli cmVhazsNCisJZGVmYXVsdDoNCisJCWJyZWFrOw0KKwl9DQorfQ0KKw0KK3N0YXRpYyB2b2lkIF9f aW5pdCBydF9pbml0KHZvaWQpDQorew0KKwlkYXRhdHlwZV9yZWdpc3RlcigmcmVhbG1fdHlwZSk7 DQorfQ0KZGlmZiAtLWdpdCBhL3NyYy9zY2FubmVyLmwgYi9zcmMvc2Nhbm5lci5sDQppbmRleCA4 YWZkZGYxLi5jODM1MjAxIDEwMDY0NA0KLS0tIGEvc3JjL3NjYW5uZXIubA0KKysrIGIvc3JjL3Nj YW5uZXIubA0KQEAgLTQ0Niw2ICs0NDYsOSBAQCBhZGRyc3RyaW5nCSh7bWFjYWRkcn18e2lwNGFk ZHJ9fHtpcDZhZGRyfSkNCiAib2lmZ3JvdXAiCQl7IHJldHVybiBPSUZHUk9VUDsgfQ0KICJjZ3Jv dXAiCQl7IHJldHVybiBDR1JPVVA7IH0NCiANCisiY2xhc3NpZCIJCXsgcmV0dXJuIENMQVNTSUQ7 IH0NCisibmV4dGhvcCIJCXsgcmV0dXJuIE5FWFRIT1A7IH0NCisNCiAiY3QiCQkJeyByZXR1cm4g Q1Q7IH0NCiAibDNwcm90byIJCXsgcmV0dXJuIEwzUFJPVE9DT0w7IH0NCiAicHJvdG8tc3JjIgkJ eyByZXR1cm4gUFJPVE9fU1JDOyB9DQpkaWZmIC0tZ2l0IGEvdGVzdHMvZmlsZXMvZXhwci1ydCBi L3Rlc3RzL2ZpbGVzL2V4cHItcnQNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAw Li40YzE1NDA5DQotLS0gL2Rldi9udWxsDQorKysgYi90ZXN0cy9maWxlcy9leHByLXJ0DQpAQCAt MCwwICsxLDIxIEBADQorIyEgbmZ0IC1mDQorDQorYWRkIHRhYmxlIGlwIGZpbHRlcg0KK2FkZCBj aGFpbiBpcCBmaWx0ZXIgb3V0cHV0IHsgdHlwZSBmaWx0ZXIgaG9vayBvdXRwdXQgcHJpb3JpdHkg MCA7IH0NCisNCithZGQgdGFibGUgaXA2IGZpbHRlcg0KK2FkZCBjaGFpbiBpcDYgZmlsdGVyIG91 dHB1dCB7IHR5cGUgZmlsdGVyIGhvb2sgb3V0cHV0IHByaW9yaXR5IDAgOyB9DQorDQorYWRkIHRh YmxlIGluZXQgZmlsdGVyDQorYWRkIGNoYWluIGluZXQgZmlsdGVyIG91dHB1dCB7IHR5cGUgZmls dGVyIGhvb2sgb3V0cHV0IHByaW9yaXR5IDAgOyB9DQorDQorIyBydDogY2xhc3NpZCAoc2VlIC9l dGMvaXByb3V0ZTIvcnRfcmVhbG1zKQ0KK2FkZCBydWxlIGlwIGZpbHRlciBvdXRwdXQgcnQgY2xh c3NpZCBjb3Ntb3MgY291bnRlcg0KK2FkZCBydWxlIGlwNiBmaWx0ZXIgb3V0cHV0IHJ0IGNsYXNz aWQgY29zbW9zIGNvdW50ZXINCithZGQgcnVsZSBpbmV0IGZpbHRlciBvdXRwdXQgcnQgY2xhc3Np ZCBjb3Ntb3MgY291bnRlcg0KKw0KKyMgcnQ6IG5leHRob3ANCithZGQgcnVsZSBpcCBmaWx0ZXIg b3V0cHV0IHJ0IG5leHRob3AgMTkyLjE2OC4wLjEgY291bnRlcg0KK2FkZCBydWxlIGlwNiBmaWx0 ZXIgb3V0cHV0IHJ0IG5leHRob3AgZmQwMDo6MSBjb3VudGVyDQorYWRkIHJ1bGUgaW5ldCBmaWx0 ZXIgb3V0cHV0IGV0aGVyIHR5cGUgaXAgcnQgbmV4dGhvcCAxOTIuMTY4LjAuMSBjb3VudGVyDQor YWRkIHJ1bGUgaW5ldCBmaWx0ZXIgb3V0cHV0IGV0aGVyIHR5cGUgaXA2IHJ0IG5leHRob3AgZmQw MDo6MSBjb3VudGVyDQpkaWZmIC0tZ2l0IGEvdGVzdHMvc2hlbGwvcnVuLXRlc3RzLnNoIGIvdGVz dHMvc2hlbGwvcnVuLXRlc3RzLnNoDQppbmRleCBmZjI0MzQ0Li5kOWM0NGM4IDEwMDc1NQ0KLS0t IGEvdGVzdHMvc2hlbGwvcnVuLXRlc3RzLnNoDQorKysgYi90ZXN0cy9zaGVsbC9ydW4tdGVzdHMu c2gNCkBAIC01Nyw3ICs1Nyw3IEBAIGtlcm5lbF9jbGVhbnVwKCkgew0KIAluZnRfZXh0aGRyIG5m dF9wYXlsb2FkIG5mdF9jbXAgbmZ0X3JhbmdlIFwNCiAJbmZ0X3F1b3RhIG5mdF9xdWV1ZSBuZnRf bnVtZ2VuIFwNCiAJbmZ0X21ldGEgbmZ0X21ldGFfYnJpZGdlIG5mdF9jb3VudGVyIG5mdF9sb2cg bmZ0X2xpbWl0IFwNCi0JbmZ0X2hhc2ggbmZ0X2N0IG5mdF9jb21wYXQgXA0KKwluZnRfaGFzaCBu ZnRfY3QgbmZ0X2NvbXBhdCBuZnRfcnQgXA0KIAluZnRfc2V0X2hhc2ggbmZ0X3NldF9yYnRyZWUg XA0KIAluZnRfY2hhaW5fbmF0X2lwdjQgbmZ0X2NoYWluX25hdF9pcHY2IFwNCiAJbmZfdGFibGVz X2luZXQgbmZfdGFibGVzX2JyaWRnZSBuZl90YWJsZXNfYXJwIFwNCg==