From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 520DDC282DC for ; Sun, 2 Jun 2019 07:33:34 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id E4DC927825 for ; Sun, 2 Jun 2019 07:33:33 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=darbyshire-bryant.me.uk header.i=@darbyshire-bryant.me.uk header.b="RR3SSbDz" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1725974AbfFBHdc (ORCPT ); Sun, 2 Jun 2019 03:33:32 -0400 Received: from mail-eopbgr10064.outbound.protection.outlook.com ([40.107.1.64]:62341 "EHLO EUR02-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1725875AbfFBHdc (ORCPT ); Sun, 2 Jun 2019 03:33:32 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=darbyshire-bryant.me.uk; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=2PGXwNwCxiFEaCLWE7ixGzS7hNMrvuGNAIIy4IvERso=; b=RR3SSbDzHVCpcp8r/vJI4XbJeoFVOgG5sneTUY3Z3Qtu4Czpbc7vskt7JuvCFXpao7GTjrOgWt5+Bo5h6wFitV9DyGUd+/uA26kJIVbDfx6yWnYs2GQT4wNbkSI56uGDjo5QDGg8vnKis9SpAkBdqSgGPH8U8HpjzuuZdTz0P8w= Received: from VI1PR0302MB2750.eurprd03.prod.outlook.com (10.171.106.21) by VI1PR0302MB3440.eurprd03.prod.outlook.com (52.134.14.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1922.18; Sun, 2 Jun 2019 07:33:23 +0000 Received: from VI1PR0302MB2750.eurprd03.prod.outlook.com ([fe80::74:c526:8946:7cf3]) by VI1PR0302MB2750.eurprd03.prod.outlook.com ([fe80::74:c526:8946:7cf3%2]) with mapi id 15.20.1943.018; Sun, 2 Jun 2019 07:33:23 +0000 From: Kevin 'ldir' Darbyshire-Bryant To: Kevin 'ldir' Darbyshire-Bryant CC: netdev , "stephen@networkplumber.org" Subject: Re: [PATCH RFC iproute2-next v2] tc: add support for act ctinfo Thread-Topic: [PATCH RFC iproute2-next v2] tc: add support for act ctinfo Thread-Index: AQHVF4hpTUFEUDi3vU+P+gbE5v+d86aH+9gA Date: Sun, 2 Jun 2019 07:33:23 +0000 Message-ID: <6398F34B-47A3-49FD-A05D-EFB49480C466@darbyshire-bryant.me.uk> References: <20190531081031.24671-1-ldir.kdb@icloud.com> In-Reply-To: <20190531081031.24671-1-ldir.kdb@icloud.com> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=ldir@darbyshire-bryant.me.uk; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [2a02:c7f:1268:6500::dc83] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 9710bff6-e185-4a80-cf66-08d6e72c981e x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);SRVR:VI1PR0302MB3440; x-ms-traffictypediagnostic: VI1PR0302MB3440: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:2201; x-forefront-prvs: 005671E15D x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(39830400003)(376002)(396003)(346002)(136003)(366004)(189003)(199004)(8936002)(14454004)(102836004)(76176011)(6512007)(53546011)(6506007)(81166006)(4326008)(256004)(14444005)(6862004)(99286004)(68736007)(37006003)(54906003)(53936002)(91956017)(76116006)(73956011)(66946007)(36756003)(305945005)(6246003)(7736002)(71190400001)(71200400001)(83716004)(5660300002)(66556008)(66476007)(66446008)(64756008)(316002)(6200100001)(186003)(476003)(33656002)(74482002)(6116002)(30864003)(25786009)(81156014)(6486002)(86362001)(6436002)(478600001)(8676002)(229853002)(486006)(11346002)(2616005)(82746002)(446003)(2906002)(46003);DIR:OUT;SFP:1101;SCL:1;SRVR:VI1PR0302MB3440;H:VI1PR0302MB2750.eurprd03.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: darbyshire-bryant.me.uk does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: mjov3wUwytbNfPV1iw4RPz3NHoT4c97UuLPbsqLB4GUac+V74onLL4GUMeBlxKNXBtDQxqnkW9uJbCWajli1XxwgBMLIlqFjcRucEpM2/aWpESST4910WCQLB3Vg+1rUyAcCBq6jK3yYyTf46yw8gl774vA47R9fPxTDFk88gpLBcLpnq8Hh9ocSlEzVib0O+zR7cEKC56kgspxC1yGoJXTHQZSeYKWA7rs5jKllD6jBkBMpPqGZh9i5EcujlLODkPwfScEy6PIsZ4QIuBLt5zui6pmD1+7gfc52LGUaF3fNgpy8ZgWxjgz35Tjy4FqoR/M3J8TSEHLvlbaV10SQZIRrnOdzbYhElvRYqd9qMqf8i0VINhK40GYohfq2b1jCO7YoFlMvJL9uCE4qPkUrD6Pw0GC9AtjoA+whGcKJJDA= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: darbyshire-bryant.me.uk X-MS-Exchange-CrossTenant-Network-Message-Id: 9710bff6-e185-4a80-cf66-08d6e72c981e X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Jun 2019 07:33:23.4705 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 9151708b-c553-406f-8e56-694f435154a4 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: kevin@darbyshire-bryant.me.uk X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0302MB3440 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org UGxlYXNlIGlnbm9yZSB0aGlzIHBhdGNoLiAgSGF2ZSBqdXN0IHJlYWxpc2VkIEnigJl2ZSBzZW50 IGNvbXBsZXRlbHkNCnRoZSB3cm9uZyB0aGluZy4gIFNvbWVob3cgbWFuYWdlZCB0byBzZW5kIHRo ZSBrZXJuZWwgc3BhY2UgcGF0Y2gNCmFnYWluIHdoaWNoIGlzIGFscmVhZHkgYWNjZXB0ZWQuICBJ IHdpbGwgc2VuZCBhIHYzIG9mIHRoZSB1c2VyIHNwYWNlDQpwYXRjaCBzaG9ydGx5Lg0KDQpBcG9s b2dpZXMuDQoNCktldmluDQoNCj4gT24gMzEgTWF5IDIwMTksIGF0IDA5OjEwLCBsZGlyLmtkYkBp Y2xvdWQuY29tIHdyb3RlOg0KPiANCj4gRnJvbTogS2V2aW4gRGFyYnlzaGlyZS1CcnlhbnQgPGxk aXJAZGFyYnlzaGlyZS1icnlhbnQubWUudWs+DQo+IA0KPiBjdGluZm8gaXMgYW4gYWN0aW9uIHJl c3RvcmluZyBkYXRhIHN0b3JlZCBpbiBjb25udHJhY2sgbWFya3MgdG8gdmFyaW91cw0KPiBmaWVs ZHMuICBBdCBwcmVzZW50IGl0IGhhcyB0d28gaW5kZXBlbmRlbnQgbW9kZXMgb2Ygb3BlcmF0aW9u LA0KPiByZXN0b3JhdGlvbiBvZiBEU0NQIGludG8gSVB2NC92NiBkaWZmc2VydiBhbmQgcmVzdG9y YXRpb24gb2YgY29ubnRyYWNrDQo+IG1hcmtzIGludG8gcGFja2V0IHNrYiBtYXJrcy4NCj4gDQo+ IEl0IHVuZGVyc3RhbmRzIGEgbnVtYmVyIG9mIHBhcmFtZXRlcnMgc3BlY2lmaWMgdG8gdGhpcyBh Y3Rpb24gaW4NCj4gYWRkaXRpb25hbCB0byB0aGUgdXN1YWwgYWN0aW9uIHN5bnRheC4gIEVhY2gg b3BlcmF0aW5nIG1vZGUgaXMNCj4gaW5kZXBlbmRlbnQgb2YgdGhlIG90aGVyIHNvIGFsbCBvcHRp b25zIGFyZSBlcnIsIG9wdGlvbmFsLCBob3dldmVyIG5vdA0KPiBzcGVjaWZ5aW5nIGF0IGxlYXN0 IG9uZSBtb2RlIGlzIGEgYml0IHBvaW50bGVzcy4NCj4gDQo+IFVzYWdlOiAuLi4gY3RpbmZvIFtk c2NwIG1hc2tbL3N0YXRlbWFza11dIFtjcG1hcmsgW21hc2tdXSBbem9uZSBaT05FXQ0KPiAJCSAg W0NPTlRST0xdIFtpbmRleCA8SU5ERVg+XVxuIg0KPiANCj4gRFNDUCBtb2RlDQo+IA0KPiBkc2Nw IGVuYWJsZXMgY29weWluZyBvZiBhIERTQ1Agc3RvcmUgaW4gdGhlIGNvbm50cmFjayBtYXJrIGlu dG8gdGhlDQo+IGlwdjQvdjYgZGlmZnNlcnYgZmllbGQuICBUaGUgbWFzayBpcyBhIDMyYml0IGZp ZWxkIGFuZCBzcGVjaWZpZXMgd2hlcmUNCj4gaW4gdGhlIGNvbm50cmFjayBtYXJrIHRoZSBEU0NQ IHZhbHVlIGlzIHN0b3JlZC4gIEl0IG11c3QgYmUgNiBjb250aWd1b3VzDQo+IGJpdHMgbG9uZywg ZS5nLiAweGZjMDAwMDAwIHdvdWxkIHJlc3RvcmUgdGhlIERTQ1AgZnJvbSB0aGUgdXBwZXIgNiBi aXRzDQo+IG9mIHRoZSBjb25udHJhY2sgbWFyay4NCj4gDQo+IFRoZSBEU0NQIGNvcHlpbmcgbWF5 IGJlIG9wdGlvbmFsbHkgY29udHJvbGxlZCBieSBhIHN0YXRlbWFzay4gIFRoZQ0KPiBzdGF0ZW1h c2sgaXMgYSAzMmJpdCBmaWVsZCwgdXN1YWxseSB3aXRoIGEgc2luZ2xlIGJpdCBzZXQgYW5kIG11 c3Qgbm90DQo+IG92ZXJsYXAgdGhlIGRzY3AgbWFzay4gIFRoZSBEU0NQIHJlc3RvcmUgb3BlcmF0 aW9uIHdpbGwgb25seSB0YWtlIHBsYWNlDQo+IGlmIHRoZSBjb3JyZXNwb25kaW5nIGJpdC9zIGlu IGNvbm50cmFjayBtYXJrIHlpZWxkIGEgbm9uIHplcm8gcmVzdWx0Lg0KPiANCj4gZWcuIGRzY3Ag MHhmYzAwMDAwMC8weDAxMDAwMDAwIHdvdWxkIHJldHJpZXZlIHRoZSBEU0NQIGZyb20gdGhlIHRv cCA2DQo+IGJpdHMsIHdoaWxzdCB1c2luZyBiaXQgMjUgYXMgYSBmbGFnIHRvIGRvIHNvLiAgQml0 IDI2IGlzIHVudXNlZCBpbiB0aGlzDQo+IGV4YW1wbGUuDQo+IA0KPiBDUE1BUksgbW9kZQ0KPiAN Cj4gY3BtYXJrIGVuYWJsZXMgY29weWluZyBvZiB0aGUgY29ubnRyYWNrIG1hcmsgdG8gdGhlIHBh Y2tldCBza2IgbWFyay4gIEluDQo+IHRoaXMgbW9kZSBpdCBpcyBjb21wbGV0ZWx5IGVxdWl2YWxl bnQgdG8gdGhlIGV4aXN0aW5nIGFjdF9jb25ubWFyay4NCj4gQWRkaXRpb25hbCBmdW5jdGlvbmFs aXR5IGlzIHByb3ZpZGVkIGJ5IHRoZSBvcHRpb25hbCBtYXNrIHBhcmFtZXRlciwNCj4gd2hlcmVi eSB0aGUgc3RvcmVkIGNvbm50cmFjayBtYXJrIGlzIGxvZ2ljYWxseSBhbmRlZCB3aXRoIHRoZSBj cG1hcmsNCj4gbWFzayBiZWZvcmUgYmVpbmcgc3RvcmVkIGludG8gc2tiIG1hcmsuICBUaGlzIGFs bG93cyBzaGFyZWQgdXNhZ2Ugb2YgdGhlDQo+IGNvbm50cmFjayBtYXJrIGJldHdlZW4gYXBwbGlj YXRpb25zLg0KPiANCj4gZWcuIGNwbWFyayAweDAwZmZmZmZmIHdvdWxkIHJlc3RvcmUgb25seSB0 aGUgbG93ZXIgMjQgYml0cyBvZiB0aGUNCj4gY29ubnRyYWNrIG1hcmssIHRodXMgbWF5IGJlIHVz ZWZ1bCBpbiB0aGUgZXZlbnQgdGhhdCB0aGUgdXBwZXIgOCBiaXRzDQo+IGFyZSB1c2VkIGJ5IHRo ZSBEU0NQIGZ1bmN0aW9uLg0KPiANCj4gVXNhZ2U6IC4uLiBjdGluZm8gW2RzY3AgbWFza1svc3Rh dGVtYXNrXV0gW2NwbWFyayBbbWFza11dIFt6b25lIFpPTkVdDQo+IAkJICBbQ09OVFJPTF0gW2lu ZGV4IDxJTkRFWD5dDQo+IHdoZXJlIDoNCj4gCWRzY3AgTUFTSyBpcyB0aGUgYml0bWFzayB0byBy ZXN0b3JlIERTQ1ANCj4gCSAgICAgU1RBVEVNQVNLIGlzIHRoZSBiaXRtYXNrIHRvIGRldGVybWlu ZSBjb25kaXRpb25hbCByZXN0b3JpbmcNCj4gCWNwbWFyayBNQVNLIG1hc2sgYXBwbGllZCB0byBy ZXN0b3JlZCBwYWNrZXQgbWFyaw0KPiAJWk9ORSBpcyB0aGUgY29ubnRyYWNrIHpvbmUNCj4gCUNP TlRST0wgOj0gcmVjbGFzc2lmeSB8IHBpcGUgfCBkcm9wIHwgY29udGludWUgfCBvayB8DQo+IAkJ ICAgZ290byBjaGFpbiA8Q0hBSU5fSU5ERVg+DQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBLZXZpbiBE YXJieXNoaXJlLUJyeWFudCA8bGRpckBkYXJieXNoaXJlLWJyeWFudC5tZS51az4NCj4gLS0tDQo+ IHYyIC0gZml4IHdoaXRlc3BhY2UgaXNzdWUgaW4gcGt0X2Nscw0KPiAgICAgZml4IG1vc3Qgd2Fy bmluZ3MgZnJvbSBjaGVja3BhdGNoIC0gc29tZSBsaW5lcyBzdGlsbCBvdmVyIDgwIGNoYXJzDQo+ ICAgICBkdWUgdG8gbG9uZyBUTFYgbmFtZXMuDQo+IGluY2x1ZGUvdWFwaS9saW51eC9wa3RfY2xz LmggICAgICAgICAgfCAgIDEgKw0KPiBpbmNsdWRlL3VhcGkvbGludXgvdGNfYWN0L3RjX2N0aW5m by5oIHwgIDM0ICsrKysNCj4gdGMvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgMSArDQo+IHRjL21fY3RpbmZvLmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAyNTEgKysr KysrKysrKysrKysrKysrKysrKysrKysNCj4gNCBmaWxlcyBjaGFuZ2VkLCAyODcgaW5zZXJ0aW9u cygrKQ0KPiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS91YXBpL2xpbnV4L3RjX2FjdC90Y19j dGluZm8uaA0KPiBjcmVhdGUgbW9kZSAxMDA2NDQgdGMvbV9jdGluZm8uYw0KPiANCj4gZGlmZiAt LWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9wa3RfY2xzLmggYi9pbmNsdWRlL3VhcGkvbGludXgv cGt0X2Nscy5oDQo+IGluZGV4IDUxYTA0OTZmLi5hOTM2ODBmYyAxMDA2NDQNCj4gLS0tIGEvaW5j bHVkZS91YXBpL2xpbnV4L3BrdF9jbHMuaA0KPiArKysgYi9pbmNsdWRlL3VhcGkvbGludXgvcGt0 X2Nscy5oDQo+IEBAIC0xMDUsNiArMTA1LDcgQEAgZW51bSB0Y2FfaWQgew0KPiAJVENBX0lEX0lG RSA9IFRDQV9BQ1RfSUZFLA0KPiAJVENBX0lEX1NBTVBMRSA9IFRDQV9BQ1RfU0FNUExFLA0KPiAJ Lyogb3RoZXIgYWN0aW9ucyBnbyBoZXJlICovDQo+ICsJVENBX0lEX0NUSU5GTywNCj4gCV9fVENB X0lEX01BWCA9IDI1NQ0KPiB9Ow0KPiANCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51 eC90Y19hY3QvdGNfY3RpbmZvLmggYi9pbmNsdWRlL3VhcGkvbGludXgvdGNfYWN0L3RjX2N0aW5m by5oDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwLi5kYTgwM2UwNQ0K PiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2luY2x1ZGUvdWFwaS9saW51eC90Y19hY3QvdGNfY3Rp bmZvLmgNCj4gQEAgLTAsMCArMSwzNCBAQA0KPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6 IEdQTC0yLjAgV0lUSCBMaW51eC1zeXNjYWxsLW5vdGUgKi8NCj4gKyNpZm5kZWYgX19VQVBJX1RD X0NUSU5GT19IDQo+ICsjZGVmaW5lIF9fVUFQSV9UQ19DVElORk9fSA0KPiArDQo+ICsjaW5jbHVk ZSA8bGludXgvdHlwZXMuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9wa3RfY2xzLmg+DQo+ICsNCj4g K3N0cnVjdCB0Y19jdGluZm8gew0KPiArCXRjX2dlbjsNCj4gK307DQo+ICsNCj4gK2VudW0gew0K PiArCVRDQV9DVElORk9fVU5TUEVDLA0KPiArCVRDQV9DVElORk9fUEFELA0KPiArCVRDQV9DVElO Rk9fVE0sDQo+ICsJVENBX0NUSU5GT19BQ1QsDQo+ICsJVENBX0NUSU5GT19aT05FLA0KPiArCVRD QV9DVElORk9fUEFSTVNfRFNDUF9NQVNLLA0KPiArCVRDQV9DVElORk9fUEFSTVNfRFNDUF9TVEFU RU1BU0ssDQo+ICsJVENBX0NUSU5GT19QQVJNU19DUE1BUktfTUFTSywNCj4gKwlUQ0FfQ1RJTkZP X1NUQVRTX0RTQ1BfU0VULA0KPiArCVRDQV9DVElORk9fU1RBVFNfRFNDUF9FUlJPUiwNCj4gKwlU Q0FfQ1RJTkZPX1NUQVRTX0NQTUFSS19TRVQsDQo+ICsJX19UQ0FfQ1RJTkZPX01BWA0KPiArfTsN Cj4gKw0KPiArI2RlZmluZSBUQ0FfQ1RJTkZPX01BWCAoX19UQ0FfQ1RJTkZPX01BWCAtIDEpDQo+ ICsNCj4gK2VudW0gew0KPiArCUNUSU5GT19NT0RFX0RTQ1AJPSBCSVQoMCksDQo+ICsJQ1RJTkZP X01PREVfQ1BNQVJLCT0gQklUKDEpDQo+ICt9Ow0KPiArDQo+ICsjZW5kaWYNCj4gZGlmZiAtLWdp dCBhL3RjL01ha2VmaWxlIGIvdGMvTWFrZWZpbGUNCj4gaW5kZXggMWEzMDVjZjQuLjYwYWJkZGVl IDEwMDY0NA0KPiAtLS0gYS90Yy9NYWtlZmlsZQ0KPiArKysgYi90Yy9NYWtlZmlsZQ0KPiBAQCAt NDgsNiArNDgsNyBAQCBUQ01PRFVMRVMgKz0gbV9jc3VtLm8NCj4gVENNT0RVTEVTICs9IG1fc2lt cGxlLm8NCj4gVENNT0RVTEVTICs9IG1fdmxhbi5vDQo+IFRDTU9EVUxFUyArPSBtX2Nvbm5tYXJr Lm8NCj4gK1RDTU9EVUxFUyArPSBtX2N0aW5mby5vDQo+IFRDTU9EVUxFUyArPSBtX2JwZi5vDQo+ IFRDTU9EVUxFUyArPSBtX3R1bm5lbF9rZXkubw0KPiBUQ01PRFVMRVMgKz0gbV9zYW1wbGUubw0K PiBkaWZmIC0tZ2l0IGEvdGMvbV9jdGluZm8uYyBiL3RjL21fY3RpbmZvLmMNCj4gbmV3IGZpbGUg bW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAuLmRhYTA4MjAxDQo+IC0tLSAvZGV2L251bGwN Cj4gKysrIGIvdGMvbV9jdGluZm8uYw0KPiBAQCAtMCwwICsxLDI1MSBAQA0KPiArLyogU1BEWC1M aWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8NCj4gKy8qDQo+ICsgKiBtX2N0aW5mby5jCQlu ZXRmaWx0ZXIgY3RpbmZvIG1hcmsgYWN0aW9uDQo+ICsgKg0KPiArICogQ29weXJpZ2h0IChjKSAy MDE5IEtldmluIERhcmJ5c2hpcmUtQnJ5YW50IDxsZGlyQGRhcmJ5c2hpcmUtYnJ5YW50Lm1lLnVr Pg0KPiArICovDQo+ICsNCj4gKyNpbmNsdWRlIDxzdGRpby5oPg0KPiArI2luY2x1ZGUgPHN0ZGxp Yi5oPg0KPiArI2luY2x1ZGUgPHVuaXN0ZC5oPg0KPiArI2luY2x1ZGUgPHN0cmluZy5oPg0KPiAr I2luY2x1ZGUgInV0aWxzLmgiDQo+ICsjaW5jbHVkZSAidGNfdXRpbC5oIg0KPiArI2luY2x1ZGUg PGxpbnV4L3RjX2FjdC90Y19jdGluZm8uaD4NCj4gKw0KPiArc3RhdGljIHZvaWQNCj4gK2V4cGxh aW4odm9pZCkNCj4gK3sNCj4gKwlmcHJpbnRmKHN0ZGVyciwNCj4gKwkJIlVzYWdlOiAuLi4gY3Rp bmZvIFtkc2NwIG1hc2tbL3N0YXRlbWFza11dIFtjcG1hcmsgW21hc2tdXSBbem9uZSBaT05FXSBb Q09OVFJPTF0gW2luZGV4IDxJTkRFWD5dXG4iDQo+ICsJCSJ3aGVyZSA6XG4iDQo+ICsJCSJcdGRz Y3AgICBNQVNLIGJpdG1hc2sgbG9jYXRpb24gb2Ygc3RvcmVkIERTQ1BcbiINCj4gKwkJIlx0ICAg ICAgIFNUQVRFTUFTSyBiaXRtYXNrIHRvIGRldGVybWluZSBjb25kaXRpb25hbCByZXN0b3Jpbmdc biINCj4gKwkJIlx0Y3BtYXJrIE1BU0sgbWFzayBhcHBsaWVkIHRvIG1hcmsgb24gcmVzdG9yYXRp b25cbiINCj4gKwkJIlx0Wk9ORSBpcyB0aGUgY29ubnRyYWNrIHpvbmVcbiINCj4gKwkJIlx0Q09O VFJPTCA6PSByZWNsYXNzaWZ5IHwgcGlwZSB8IGRyb3AgfCBjb250aW51ZSB8IG9rIHxcbiINCj4g KwkJIlx0ICAgICAgICAgICBnb3RvIGNoYWluIDxDSEFJTl9JTkRFWD5cbiIpOw0KPiArfQ0KPiAr DQo+ICtzdGF0aWMgdm9pZA0KPiArdXNhZ2Uodm9pZCkNCj4gK3sNCj4gKwlleHBsYWluKCk7DQo+ ICsJZXhpdCgtMSk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQNCj4gK3BhcnNlX2N0aW5mbyhz dHJ1Y3QgYWN0aW9uX3V0aWwgKmEsIGludCAqYXJnY19wLCBjaGFyICoqKmFyZ3ZfcCwgaW50IHRj YV9pZCwNCj4gKwkgICAgIHN0cnVjdCBubG1zZ2hkciAqbikNCj4gK3sNCj4gKwl1bnNpZ25lZCBp bnQgY3BtYXJrbWFzayA9IDAsIGRzY3BtYXNrID0gMCwgZHNjcHN0YXRlbWFzayA9IDA7DQo+ICsJ c3RydWN0IHRjX2N0aW5mbyBzZWwgPSB7fTsNCj4gKwl1bnNpZ25lZCBzaG9ydCB6b25lID0gMDsN Cj4gKwljaGFyICoqYXJndiA9ICphcmd2X3A7DQo+ICsJc3RydWN0IHJ0YXR0ciAqdGFpbDsNCj4g KwlpbnQgYXJnYyA9ICphcmdjX3A7DQo+ICsJaW50IG9rID0gMDsNCj4gKw0KPiArCXdoaWxlIChh cmdjID4gMCkgew0KPiArCQlpZiAobWF0Y2hlcygqYXJndiwgImN0aW5mbyIpID09IDApIHsNCj4g KwkJCW9rID0gMTsNCj4gKwkJCWFyZ2MtLTsNCj4gKwkJCWFyZ3YrKzsNCj4gKwkJfSBlbHNlIGlm IChtYXRjaGVzKCphcmd2LCAiaGVscCIpID09IDApIHsNCj4gKwkJCXVzYWdlKCk7DQo+ICsJCX0g ZWxzZSB7DQo+ICsJCQlicmVhazsNCj4gKwkJfQ0KPiArDQo+ICsJfQ0KPiArDQo+ICsJaWYgKCFv aykgew0KPiArCQlleHBsYWluKCk7DQo+ICsJCXJldHVybiAtMTsNCj4gKwl9DQo+ICsNCj4gKwlp ZiAoYXJnYykgew0KPiArCQlpZiAobWF0Y2hlcygqYXJndiwgImRzY3AiKSA9PSAwKSB7DQo+ICsJ CQlORVhUX0FSRygpOw0KPiArCQkJY2hhciAqc2xhc2g7DQo+ICsNCj4gKwkJCXNsYXNoID0gc3Ry Y2hyKCphcmd2LCAnLycpOw0KPiArCQkJaWYgKHNsYXNoKQ0KPiArCQkJCSpzbGFzaCA9ICdcMCc7 DQo+ICsJCQlpZiAoZ2V0X3UzMigmZHNjcG1hc2ssICphcmd2LCAwKSkgew0KPiArCQkJCWZwcmlu dGYoc3RkZXJyLA0KPiArCQkJCQkiY3RpbmZvOiBJbGxlZ2FsIGRzY3AgXCJtYXNrXCJcbiIpOw0K PiArCQkJCXJldHVybiAtMTsNCj4gKwkJCX0NCj4gKwkJCWlmIChzbGFzaCAmJiBnZXRfdTMyKCZk c2Nwc3RhdGVtYXNrLCBzbGFzaCArIDEsIDApKSB7DQo+ICsJCQkJZnByaW50ZihzdGRlcnIsDQo+ ICsJCQkJCSJjdGluZm86IElsbGVnYWwgZHNjcCBcInN0YXRlbWFza1wiXG4iKTsNCj4gKwkJCQly ZXR1cm4gLTE7DQo+ICsJCQl9DQo+ICsJCQlhcmdjLS07DQo+ICsJCQlhcmd2Kys7DQo+ICsJCX0N Cj4gKwl9DQo+ICsNCj4gKwkvKiBjcG1hcmsgaGFzIG9wdGlvbmFsIG1hc2sgcGFyYW1ldGVyLCBz byB0aGUgbmV4dCBhcmcgbWlnaHQgbm90ICAqLw0KPiArCS8qIGV4aXN0LCBvciBpdCBtaWdodCBi ZSB0aGUgbmV4dCBvcHRpb24sIG9yIGl0IG1heSBhY3R1YWxseSBiZSBhICovDQo+ICsJLyogMzJi aXQgbWFzayAqLw0KPiArCWlmIChhcmdjKSB7DQo+ICsJCWlmIChtYXRjaGVzKCphcmd2LCAiY3Bt YXJrIikgPT0gMCkgew0KPiArCQkJaWYgKE5FWFRfQVJHX09LKCkpIHsNCj4gKwkJCQlORVhUX0FS R19GV0QoKTsNCj4gKwkJCQlpZiAoIWdldF91MzIoJmNwbWFya21hc2ssICphcmd2LCAwKSkNCj4g KwkJCQkJTkVYVF9BUkdfRldEKCk7IC8qIHdhcyBhIG1hc2sgKi8NCj4gKwkJCQllbHNlIC8qIG5v dCBhIG1hc2ssIHVzZSBkZWZhdWx0ICovDQo+ICsJCQkJCWNwbWFya21hc2sgPSB+MDsNCj4gKwkJ CX0gZWxzZSB7DQo+ICsJCQkJTkVYVF9BUkdfRldEKCk7DQo+ICsJCQl9DQo+ICsJCX0NCj4gKwl9 DQo+ICsNCj4gKwlpZiAoYXJnYykgew0KPiArCQlpZiAobWF0Y2hlcygqYXJndiwgInpvbmUiKSA9 PSAwKSB7DQo+ICsJCQlORVhUX0FSRygpOw0KPiArCQkJaWYgKGdldF91MTYoJnpvbmUsICphcmd2 LCAxMCkpIHsNCj4gKwkJCQlmcHJpbnRmKHN0ZGVyciwgImN0aW5mbzogSWxsZWdhbCBcInpvbmVc IlxuIik7DQo+ICsJCQkJcmV0dXJuIC0xOw0KPiArCQkJfQ0KPiArCQkJYXJnYy0tOw0KPiArCQkJ YXJndisrOw0KPiArCQl9DQo+ICsJfQ0KPiArDQo+ICsJcGFyc2VfYWN0aW9uX2NvbnRyb2xfZGZs dCgmYXJnYywgJmFyZ3YsICZzZWwuYWN0aW9uLA0KPiArCQkJCSAgZmFsc2UsIFRDX0FDVF9QSVBF KTsNCj4gKw0KPiArCWlmIChhcmdjKSB7DQo+ICsJCWlmIChtYXRjaGVzKCphcmd2LCAiaW5kZXgi KSA9PSAwKSB7DQo+ICsJCQlORVhUX0FSRygpOw0KPiArCQkJaWYgKGdldF91MzIoJnNlbC5pbmRl eCwgKmFyZ3YsIDEwKSkgew0KPiArCQkJCWZwcmludGYoc3RkZXJyLCAiY3RpbmZvOiBJbGxlZ2Fs IFwiaW5kZXhcIlxuIik7DQo+ICsJCQkJcmV0dXJuIC0xOw0KPiArCQkJfQ0KPiArCQkJYXJnYy0t Ow0KPiArCQkJYXJndisrOw0KPiArCQl9DQo+ICsJfQ0KPiArDQo+ICsJdGFpbCA9IGFkZGF0dHJf bmVzdChuLCBNQVhfTVNHLCB0Y2FfaWQpOw0KPiArCWFkZGF0dHJfbChuLCBNQVhfTVNHLCBUQ0Ff Q1RJTkZPX0FDVCwgJnNlbCwgc2l6ZW9mKHNlbCkpOw0KPiArCWlmICh6b25lKQ0KPiArCQlhZGRh dHRyMTYobiwgTUFYX01TRywNCj4gKwkJCSAgVENBX0NUSU5GT19aT05FLCB6b25lKTsNCj4gKw0K PiArCWlmIChkc2NwbWFzaykNCj4gKwkJYWRkYXR0cjMyKG4sIE1BWF9NU0csDQo+ICsJCQkgIFRD QV9DVElORk9fUEFSTVNfRFNDUF9NQVNLLCBkc2NwbWFzayk7DQo+ICsNCj4gKwlpZiAoZHNjcHN0 YXRlbWFzaykNCj4gKwkJYWRkYXR0cjMyKG4sIE1BWF9NU0csDQo+ICsJCQkgIFRDQV9DVElORk9f UEFSTVNfRFNDUF9TVEFURU1BU0ssIGRzY3BzdGF0ZW1hc2spOw0KPiArDQo+ICsJaWYgKGNwbWFy a21hc2spDQo+ICsJCWFkZGF0dHIzMihuLCBNQVhfTVNHLA0KPiArCQkJICBUQ0FfQ1RJTkZPX1BB Uk1TX0NQTUFSS19NQVNLLCBjcG1hcmttYXNrKTsNCj4gKw0KPiArCWFkZGF0dHJfbmVzdF9lbmQo biwgdGFpbCk7DQo+ICsNCj4gKwkqYXJnY19wID0gYXJnYzsNCj4gKwkqYXJndl9wID0gYXJndjsN Cj4gKwlyZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBwcmludF9jdGluZm8oc3Ry dWN0IGFjdGlvbl91dGlsICphdSwgRklMRSAqZiwgc3RydWN0IHJ0YXR0ciAqYXJnKQ0KPiArew0K PiArCXVuc2lnbmVkIGludCBjcG1hcmttYXNrID0gfjAsIGRzY3BtYXNrID0gMCwgZHNjcHN0YXRl bWFzayA9IDA7DQo+ICsJc3RydWN0IHJ0YXR0ciAqdGJbVENBX0NUSU5GT19NQVggKyAxXTsNCj4g Kwl1bnNpZ25lZCBzaG9ydCB6b25lID0gMDsNCj4gKwlzdHJ1Y3QgdGNfY3RpbmZvICpjaTsNCj4g Kw0KPiArCWlmIChhcmcgPT0gTlVMTCkNCj4gKwkJcmV0dXJuIC0xOw0KPiArDQo+ICsJcGFyc2Vf cnRhdHRyX25lc3RlZCh0YiwgVENBX0NUSU5GT19NQVgsIGFyZyk7DQo+ICsJaWYgKCF0YltUQ0Ff Q1RJTkZPX0FDVF0pIHsNCj4gKwkJcHJpbnRfc3RyaW5nKFBSSU5UX0ZQLCBOVUxMLCAiJXMiLA0K PiArCQkJICAgICAiW05VTEwgY3RpbmZvIGFjdGlvbiBwYXJhbWV0ZXJzXSIpOw0KPiArCQlyZXR1 cm4gLTE7DQo+ICsJfQ0KPiArDQo+ICsJY2kgPSBSVEFfREFUQSh0YltUQ0FfQ1RJTkZPX0FDVF0p Ow0KPiArDQo+ICsJaWYgKHRiW1RDQV9DVElORk9fUEFSTVNfRFNDUF9NQVNLXSkNCj4gKwkJaWYg KFJUQV9QQVlMT0FEKHRiW1RDQV9DVElORk9fUEFSTVNfRFNDUF9NQVNLXSkgPj0NCj4gKwkJICAg IHNpemVvZihfX3UzMikpDQo+ICsJCQlkc2NwbWFzayA9IHJ0YV9nZXRhdHRyX3UzMih0YltUQ0Ff Q1RJTkZPX1BBUk1TX0RTQ1BfTUFTS10pOw0KPiArCQllbHNlDQo+ICsJCQlwcmludF9zdHJpbmco UFJJTlRfRlAsIE5VTEwsICIlcyIsDQo+ICsJCQkJICAgICAiW2ludmFsaWQgZHNjcCBtYXNrIHBh cmFtZXRlcl0iKTsNCj4gKw0KPiArCWlmICh0YltUQ0FfQ1RJTkZPX1BBUk1TX0RTQ1BfU1RBVEVN QVNLXSkNCj4gKwkJaWYgKFJUQV9QQVlMT0FEKHRiW1RDQV9DVElORk9fUEFSTVNfRFNDUF9TVEFU RU1BU0tdKSA+PQ0KPiArCQkgICAgc2l6ZW9mKF9fdTMyKSkNCj4gKwkJCWRzY3BzdGF0ZW1hc2sg PSBydGFfZ2V0YXR0cl91MzIodGJbVENBX0NUSU5GT19QQVJNU19EU0NQX1NUQVRFTUFTS10pOw0K PiArCQllbHNlDQo+ICsJCQlwcmludF9zdHJpbmcoUFJJTlRfRlAsIE5VTEwsICIlcyIsDQo+ICsJ CQkJICAgICAiW2ludmFsaWQgZHNjcCBzdGF0ZW1hc2sgcGFyYW1ldGVyXSIpOw0KPiArDQo+ICsJ aWYgKHRiW1RDQV9DVElORk9fUEFSTVNfQ1BNQVJLX01BU0tdKQ0KPiArCQlpZiAoUlRBX1BBWUxP QUQodGJbVENBX0NUSU5GT19QQVJNU19DUE1BUktfTUFTS10pID49DQo+ICsJCSAgICBzaXplb2Yo X191MzIpKQ0KPiArCQkJY3BtYXJrbWFzayA9IHJ0YV9nZXRhdHRyX3UzMih0YltUQ0FfQ1RJTkZP X1BBUk1TX0NQTUFSS19NQVNLXSk7DQo+ICsJCWVsc2UNCj4gKwkJCXByaW50X3N0cmluZyhQUklO VF9GUCwgTlVMTCwgIiVzIiwNCj4gKwkJCQkgICAgICJbaW52YWxpZCBjcG1hcmsgbWFzayBwYXJh bWV0ZXJdIik7DQo+ICsNCj4gKwlpZiAodGJbVENBX0NUSU5GT19aT05FXSAmJiBSVEFfUEFZTE9B RCh0YltUQ0FfQ1RJTkZPX1pPTkVdKSA+PQ0KPiArCSAgICBzaXplb2YoX191MTYpKQ0KPiArCQl6 b25lID0gcnRhX2dldGF0dHJfdTE2KHRiW1RDQV9DVElORk9fWk9ORV0pOw0KPiArDQo+ICsJcHJp bnRfc3RyaW5nKFBSSU5UX0FOWSwgImtpbmQiLCAiJXMgIiwgImN0aW5mbyIpOw0KPiArCXByaW50 X2h1KFBSSU5UX0FOWSwgInpvbmUiLCAiem9uZSAldSIsIHpvbmUpOw0KPiArCXByaW50X2FjdGlv bl9jb250cm9sKGYsICIgIiwgY2ktPmFjdGlvbiwgIiIpOw0KPiArDQo+ICsJcHJpbnRfc3RyaW5n KFBSSU5UX0ZQLCBOVUxMLCAiJXMiLCBfU0xfKTsNCj4gKwlwcmludF91aW50KFBSSU5UX0FOWSwg ImluZGV4IiwgIlx0IGluZGV4ICV1IiwgY2ktPmluZGV4KTsNCj4gKwlwcmludF9pbnQoUFJJTlRf QU5ZLCAicmVmIiwgIiByZWYgJWQiLCBjaS0+cmVmY250KTsNCj4gKwlwcmludF9pbnQoUFJJTlRf QU5ZLCAiYmluZCIsICIgYmluZCAlZCIsIGNpLT5iaW5kY250KTsNCj4gKw0KPiArCWlmICh0YltU Q0FfQ1RJTkZPX1BBUk1TX0RTQ1BfTUFTS10pIHsNCj4gKwkJcHJpbnRfMHhoZXgoUFJJTlRfQU5Z LCAiZHNjcG1hc2siLCAiIGRzY3AgJSMwMTBsbHgiLCBkc2NwbWFzayk7DQo+ICsJCXByaW50XzB4 aGV4KFBSSU5UX0FOWSwgImRzY3BzdGF0ZW1hc2siLCAiLyUjMDEwbGx4IiwNCj4gKwkJCSAgICBk c2Nwc3RhdGVtYXNrKTsNCj4gKwl9DQo+ICsNCj4gKwlpZiAodGJbVENBX0NUSU5GT19QQVJNU19D UE1BUktfTUFTS10pDQo+ICsJCXByaW50XzB4aGV4KFBSSU5UX0FOWSwgIm1hcmsiLCAiIG1hcmsg JSMwMTBsbHgiLCBjcG1hcmttYXNrKTsNCj4gKw0KPiArCWlmIChzaG93X3N0YXRzKSB7DQo+ICsJ CWlmICh0YltUQ0FfQ1RJTkZPX1RNXSkgew0KPiArCQkJc3RydWN0IHRjZl90ICp0bSA9IFJUQV9E QVRBKHRiW1RDQV9DVElORk9fVE1dKTsNCj4gKw0KPiArCQkJcHJpbnRfdG0oZiwgdG0pOw0KPiAr CQl9DQo+ICsNCj4gKwkJaWYgKHRiW1RDQV9DVElORk9fU1RBVFNfRFNDUF9TRVRdKQ0KPiArCQkJ cHJpbnRfbGx1aW50KFBSSU5UX0FOWSwgImRzY3BzZXQiLCAiIERTQ1Agc2V0ICVsbHUiLA0KPiAr CQkJCSAgICAgcnRhX2dldGF0dHJfdTY0KHRiW1RDQV9DVElORk9fU1RBVFNfRFNDUF9TRVRdKSk7 DQo+ICsJCWlmICh0YltUQ0FfQ1RJTkZPX1NUQVRTX0RTQ1BfRVJST1JdKQ0KPiArCQkJcHJpbnRf bGx1aW50KFBSSU5UX0FOWSwgImRzY3BlcnJvciIsICIgZXJyb3IgJWxsdSIsDQo+ICsJCQkJICAg ICBydGFfZ2V0YXR0cl91NjQodGJbVENBX0NUSU5GT19TVEFUU19EU0NQX0VSUk9SXSkpOw0KPiAr DQo+ICsJCWlmICh0YltUQ0FfQ1RJTkZPX1NUQVRTX0NQTUFSS19TRVRdKQ0KPiArCQkJcHJpbnRf bGx1aW50KFBSSU5UX0FOWSwgImNwbWFya3NldCIsICIgQ1BNQVJLIHNldCAlbGx1IiwNCj4gKwkJ CQkgICAgIHJ0YV9nZXRhdHRyX3U2NCh0YltUQ0FfQ1RJTkZPX1NUQVRTX0NQTUFSS19TRVRdKSk7 DQo+ICsJfQ0KPiArCXByaW50X3N0cmluZyhQUklOVF9GUCwgTlVMTCwgIiVzIiwgX1NMXyk7DQo+ ICsNCj4gKwlyZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3RydWN0IGFjdGlvbl91dGlsIGN0aW5m b19hY3Rpb25fdXRpbCA9IHsNCj4gKwkuaWQgPSAiY3RpbmZvIiwNCj4gKwkucGFyc2VfYW9wdCA9 IHBhcnNlX2N0aW5mbywNCj4gKwkucHJpbnRfYW9wdCA9IHByaW50X2N0aW5mbywNCj4gK307DQo+ IC0tIA0KPiAyLjIwLjEgKEFwcGxlIEdpdC0xMTcpDQo+IA0KDQoNCg==