From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id D1450A057B; Wed, 1 Apr 2020 22:08:59 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 6D25A1C197; Wed, 1 Apr 2020 22:08:59 +0200 (CEST) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by dpdk.org (Postfix) with ESMTP id 100A71C196 for ; Wed, 1 Apr 2020 22:08:57 +0200 (CEST) Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 031K7XU4002362; Wed, 1 Apr 2020 13:08:57 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : subject : date : message-id : references : in-reply-to : content-type : content-id : content-transfer-encoding : mime-version; s=pfpt0818; bh=pdrwzmjNXfmIIweg1ZewSWy1I12ULs26ZtAxox4KQHc=; b=Tk4pebJANr+SESyWZ7qIj8zZ+CO/DBcTBzno9LCCynqfRWdOJcbzlk2l37QHhLhjZE0O Mw4CjHVDA0pmvjwB31CqFJhiAiBBBDXqxYhoQ0wKgINp5olxNGOX460sRl6nqMCKbYTT ZT7CqSFoppq06fomjPmOaQc9Ue90cW4XI7wxcmULnfTSZiR05DTqw9lfyVRevyIGmvzg 2t98LqHIX6mZCwTBJdwCpnv+JhJXsoPz19xgRrV8bWumDpyNhLIm6bosaS+lTuYcZBSc 6FdT0LzVkU5ejsKc6MBTeoccu0bETBLtpNRlnlUTX9Vvha+0/d49TKfyoPQXkQOQy0KN AA== Received: from sc-exch04.marvell.com ([199.233.58.184]) by mx0b-0016f401.pphosted.com with ESMTP id 3046h5y1uw-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Wed, 01 Apr 2020 13:08:57 -0700 Received: from DC5-EXCH02.marvell.com (10.69.176.39) by SC-EXCH04.marvell.com (10.93.176.84) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 1 Apr 2020 13:08:54 -0700 Received: from SC-EXCH02.marvell.com (10.93.176.82) by DC5-EXCH02.marvell.com (10.69.176.39) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 1 Apr 2020 13:08:54 -0700 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.173) by SC-EXCH02.marvell.com (10.93.176.82) with Microsoft SMTP Server (TLS) id 15.0.1497.2 via Frontend Transport; Wed, 1 Apr 2020 13:08:53 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UADyV6iF2BAUv87Mk0WpJzQZKwfDOG00lu0n/AqOHq7NbFRo9r9S1f1hCgvXdPCOE4L6kIWxed85AAFrE4hV15/8UkweeyHa8fvWifrGsr4W369lKvdmqbJlq5US4ELYDD0U6FGixgtNZqWIy/S2xjL3dMDWSSNNtwYrJ2NOJFi+2MUNCOCuQL85lHIUWWQS/ozwa27nFGGCKwxwisEg/zaXDBMqVVRnCnLi9RIbKX0Y4WEqCSEK9QGyzuV7CUjCp0I7mMOuSWrEYgE+3xMOZDYpVmqk06o9NQ6u8gm4sGY+jvzmtJIFFTj+QqWPqFcvaF7HxsHf0c7DFIolLHEFUw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=pdrwzmjNXfmIIweg1ZewSWy1I12ULs26ZtAxox4KQHc=; b=WSXATfSxfaHKlOOMPJFvRJpl8HOl1oTGfRuSSq+mwEExHros0a9cPYafisr8FiFS/eJxiYuoe6DrWKoP3Vwog7H4xy5sq+3BDv5UUu8bxmUVsUnTiVBBYnlbr3afAndy7aZ1mblfBWci4tmCOKUGoquU4zKfvjYxZkGZN3yO/Cmg9wBmnmJ2h9kEIHa6rxkODw6irnYKfGSzqpCkNv4PxVBmQEIuqfIRtb98PX69vm6fVm9+8+0w6tQ110LmN1Emwesxsz1BI6DZI9Re1ioSVbhbMIhkiXTKLNEBPid6wI/W0JpC3gSyhTMwL/R1T3JB5dS70Xpy2jF1Nc/WYcVSOg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=marvell.com; dmarc=pass action=none header.from=marvell.com; dkim=pass header.d=marvell.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.onmicrosoft.com; s=selector1-marvell-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=pdrwzmjNXfmIIweg1ZewSWy1I12ULs26ZtAxox4KQHc=; b=QZsoZpyiDi6uwnNsR8rPcOapV4oP5nM4qXPtpkfMJCA+tmEIGyERv4eQWEnnZNNEPRF17BFWmFatx9OxMah56DZ68NmF9d5b/toiEWEFKMr13y0t8CR9GTSr3Ok20fbn+aFmuLh6ecT+y6U6GSngGCN0zfSbx/KBYkeQEwAq2yI= Received: from DM6PR18MB3004.namprd18.prod.outlook.com (2603:10b6:5:18c::18) by DM6PR18MB3402.namprd18.prod.outlook.com (2603:10b6:5:1c1::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2856.20; Wed, 1 Apr 2020 20:08:52 +0000 Received: from DM6PR18MB3004.namprd18.prod.outlook.com ([fe80::d5ea:e0a6:a026:2d46]) by DM6PR18MB3004.namprd18.prod.outlook.com ([fe80::d5ea:e0a6:a026:2d46%5]) with mapi id 15.20.2856.019; Wed, 1 Apr 2020 20:08:52 +0000 From: "Andrzej Ostruszka [C]" To: "Varghese, Vipin" , "dev@dpdk.org" , Thomas Monjalon Thread-Topic: [dpdk-dev] [PATCH 1/4] lib: introduce IF Proxy library Thread-Index: AQHWB+aFzmfsVNiozE+8/FKVjCVLdqhksuoA Date: Wed, 1 Apr 2020 20:08:52 +0000 Message-ID: <19d195cd-cb73-6388-0a85-aca74e963003@marvell.com> References: <20200306164104.15528-1-aostruszka@marvell.com> <20200306164104.15528-2-aostruszka@marvell.com> <4C9E0AB70F954A408CC4ADDBF0F8FA7D4D49923E@BGSMSX101.gar.corp.intel.com> In-Reply-To: <4C9E0AB70F954A408CC4ADDBF0F8FA7D4D49923E@BGSMSX101.gar.corp.intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [199.233.58.37] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 1723db11-f581-4816-b883-08d7d6787faf x-ms-traffictypediagnostic: DM6PR18MB3402: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-forefront-prvs: 03607C04F0 x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM6PR18MB3004.namprd18.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(10009020)(4636009)(376002)(39860400002)(136003)(346002)(366004)(396003)(26005)(66946007)(66446008)(5660300002)(64756008)(36756003)(30864003)(81166006)(66476007)(81156014)(66556008)(8676002)(71200400001)(76116006)(6512007)(186003)(110136005)(86362001)(6486002)(31696002)(8936002)(2616005)(478600001)(2906002)(31686004)(316002)(53546011)(6506007); DIR:OUT; SFP:1101; received-spf: None (protection.outlook.com: marvell.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: DbJmuF4OfebvhGfPsea8uifWG2IZ+ZxQoRmD5MDrAcF2E0qYOSwJi/N9/VFiYDHPsehg1j/6G7YdWz1jZ6qN+1FmaqFFCyHDne7OkQx5waUzJtuIn4s7IA2gSuNoLFukLSmNQNSMerW2/00y5xrSnJ4waCU+Fkyqe1IuegnO67oi9LgKVPT0/EuPSBMoIvepp76gvoZZCNq+AQWYEdRXi8v2llgB7fZiME4065kZH+/KDwTLpHiVEwUhRWFKwTJKhJ/fwP99JsRNOijVPWqVNo7kHwBJnpZ3ZvujpFQf4asos2YS54zblYHigpd1iAzBFDxesgADPrIa5LA9+EYMGmS0EIk7CFQAdrw/qk1B2lRrjsPUVISaPocUQIrGwYCaQfGuV4AKZ0ll2zagP//BJFUTx3dMRSIh5O95U/FHlQgA7hbFeJupPXZjhNDfeHRl x-ms-exchange-antispam-messagedata: F4AbLVumnyIWJLUidzKKFj+drRlTWyx85+YOujAGQZpXNjGD+n2Uurqaf1akoXaDy7ISinYC0w7JWuGXyNyB65LVoCFEnaXtKRL2G4MLizKFynsH/ZTtngRWQTdF+tbqGcUtNgyYJ2fEONuu3dLdTw== x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-ID: <6D6B647CC529284799FA02C3A2C19E2B@namprd18.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: 1723db11-f581-4816-b883-08d7d6787faf X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Apr 2020 20:08:52.1047 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 70e1fb47-1155-421d-87fc-2e58f638b6e0 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: It1Kcccd6YEZXm7Kd4PdOXtjwkktMyi3gyeet56HF+Y4RaEKVYuAdyy6vhS47USnMAWH/AwNUUMdE0eiti6OUg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR18MB3402 X-OriginatorOrg: marvell.com X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.138, 18.0.676 definitions=2020-04-01_04:2020-03-31, 2020-04-01 signatures=0 Subject: Re: [dpdk-dev] [PATCH 1/4] lib: introduce IF Proxy library X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Rmlyc3Qgb2YgYWxsIHRoYW5rIHlvdSBWaXBpbiBmb3IgdGFraW5nIGEgbG9vayBhdCB0aGlzLg0K DQpPbiA0LzEvMjAgNzoyOSBBTSwgVmFyZ2hlc2UsIFZpcGluIHdyb3RlOg0KPiBzbmlwcGVkDQo+ PiBkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV9pZl9wcm94eS9NYWtlZmlsZSBiL2xpYi9saWJydGVf aWZfcHJveHkvTWFrZWZpbGUNCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+PiBpbmRleCAwMDAw MDAwMDAuLjQzY2I3MDJhMg0KPj4gLS0tIC9kZXYvbnVsbA0KPj4gKysrIGIvbGliL2xpYnJ0ZV9p Zl9wcm94eS9NYWtlZmlsZQ0KPj4gQEAgLTAsMCArMSwyOSBAQA0KPj4gKyMgU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQ0KPj4gKyMgQ29weXJpZ2h0KEMpIDIwMjAgTWFydmVs bCBJbnRlcm5hdGlvbmFsIEx0ZC4NCj4+ICsNCj4+ICtpbmNsdWRlICQoUlRFX1NESykvbWsvcnRl LnZhcnMubWsNCj4+ICsNCj4+ICsjIGxpYnJhcnkgbmFtZQ0KPj4gK0xJQiA9IGxpYnJ0ZV9pZl9w cm94eS5hDQo+PiArDQo+PiArQ0ZMQUdTICs9IC1EQUxMT1dfRVhQRVJJTUVOVEFMX0FQSQ0KPj4g K0NGTEFHUyArPSAtTzMNCj4+ICtDRkxBR1MgKz0gJChXRVJST1JfRkxBR1MpIC1JJChTUkNESVIp DQo+PiArTERMSUJTICs9IC1scnRlX2VhbCAtbHJ0ZV9ldGhkZXYNCj4+ICsNCj4+ICtFWFBPUlRf TUFQIDo9IHJ0ZV9pZl9wcm94eV92ZXJzaW9uLm1hcA0KPj4gKw0KPj4gK0xJQkFCSVZFUiA6PSAx DQo+PiArDQo+PiArIyBhbGwgc291cmNlIGFyZSBzdG9yZWQgaW4gU1JDUy15DQo+PiArU1JDUy0k KENPTkZJR19SVEVfTElCUlRFX0lGX1BST1hZKSA6PSBpZl9wcm94eV9jb21tb24uYw0KPj4gKw0K Pj4gK1NZU0RJUiA6PSAkKHBhdHN1YnN0ICIlYXBwIiwlLCQoQ09ORklHX1JURV9FWEVDX0VOVikp DQo+PiAraW5jbHVkZSAkKFNSQ0RJUikvJChTWVNESVIpL01ha2VmaWxlDQo+PiArDQo+IFNob3Vs ZCB0aGVyZSBiZSBjaGVjayBgaWZlcSAoJChDT05GSUdfUlRFX0xJQlJURV9LTkkpLHkpYCBhbmQg YGlmZXEgKCQoQ09ORklHX1JURV9MSUJSVEVfVEFQKSx5KWA/DQoNCk1pZ2h0IG5vdCBiZSBuZWNl c3NhcnkuICBXaGlsZSBpdCBpcyB0cnVlIHRoYXQgaWYgeW91IHdhbnQgdG8gY3JlYXRlDQpwcm94 eSB2aWEgdGhpcyBsaWIsIHRoZW4gY3VycmVudGx5IGl0IGlzIG9ubHkgS05JIG9yIFRBUC4gIEhv d2V2ZXIgYW55DQpEUERLIHBvcnQgY2FuIGFjdCBhcyBhIHByb3h5IC0gYXMgbG9uZyBhcyBpdCBp cyB2aXNpYmxlIHRvIHRoZSBzeXN0ZW0NCmFuZCByZXBvcnRzIG5vbi16ZXJvIGlmX2luZGV4IGlu IGl0cyBkZXZfaW5mby4NCg0KSG93ZXZlciBpdCBpcyB0cnVlIHRoYXQgaWYgd2UgYWxsb3cgYnVp bGRpbmcgb2YgaWZfcHJveHkgZXZlbiBpZiBUQVAvS05JDQppcyBub3QgZW5hYmxlZCB0aGVuIEkg c2hvdWxkIGFkZCBjb25kaXRpb25hbHMgdG8gdGhlIHByb3h5IGNyZWF0aW9uDQpmdW5jdGlvbiB0 aGF0IHdvdWxkIHNob3cgc29tZSBtZWFuaW5nZnVsIHdhcm5pbmcgd2hlbiB0aGV5IGFyZSBub3QN CmVuYWJsZWQuICBXaWxsIHRha2UgYSBsb29rIGF0IHRoaXMuDQoNCj4+ICtTUkNTLSQoQ09ORklH X1JURV9MSUJSVEVfSUZfUFJPWFkpICs9ICQoYWRkcHJlZml4ICQoU1lTRElSKS8sJChTUkNTKSkN Cj4+ICsNCj4+ICsjIGluc3RhbGwgdGhpcyBoZWFkZXIgZmlsZQ0KPj4gK1NZTUxJTkstJChDT05G SUdfUlRFX0xJQlJURV9JRl9QUk9YWSktaW5jbHVkZSA6PSBydGVfaWZfcHJveHkuaA0KPj4gKw0K Pj4gK2luY2x1ZGUgJChSVEVfU0RLKS9tay9ydGUubGliLm1rDQo+IFNuaXBwZWQNCj4gDQo+PiAr DQo+PiArdWludDY0X3QgcnRlX2lmcHhfZXZlbnRzX2F2YWlsYWJsZSh2b2lkKQ0KPj4gK3sNCj4+ ICsJLyogQWxsIGV2ZW50cyBhcmUgc3VwcG9ydGVkIG9uIExpbnV4LiAqLw0KPj4gKwlyZXR1cm4g KDFVTEwgPDwgUlRFX0lGUFhfTlVNX0VWRU5UUykgLSAxOw0KPiBTaG91bGQgd2UgZ2l2ZSB0aGUg YXZhaWxhYmxlIGZyb20gdGhlIHVzZWQgY291bnQ/DQoNCkknbSBub3Qgc3VyZSBJIGZvbGxvdyB3 aGF0IHlvdSB3YW50ZWQgdG8gYXNrLiAgSSB3YW50IHRvIHJldHVybiBiaXRtYXNrDQp3aXRoIGVh Y2ggYml0IGJlaW5nIGxpdCBmb3IgZXZlcnkgZXZlbnQgdHlwZS4gIEkgY291bGQgZ28gd2l0aCBv cidpbmcgb2YNCmFsbCAoMVVMTCA8PCBSVEVfSUZQWF9NQUNfQ0hBTkdFKSB8ICgxVUxMIDw8IFJU RV9JRlBYX01UVV9DSEFOR0UpIC4uLg0KYnV0IGRlZW1lZCB0aGF0IHRoaXMgd291bGQgYmUgc2lt cGxlci4NCg0KPj4gK30NCj4+ICsNCj4gDQo+IFNuaXBwZWQNCj4gDQo+PiArDQo+PiArdm9pZCBy dGVfaWZweF9jYWxsYmFja3NfdW5yZWdpc3Rlcih2b2lkKQ0KPj4gK3sNCj4+ICsJcnRlX3NwaW5s b2NrX2xvY2soJmlmcHhfbG9jayk7DQo+PiArCW1lbXNldCgmaWZweF9jYWxsYmFja3MuY2JzLCAw LCBzaXplb2YoaWZweF9jYWxsYmFja3MuY2JzKSk7DQo+IFdoYXQgd291bGQgaGFwcGVuIHRvIHBl bmRpbmcgZXZlbnRzLCBhcmUgYWdyZWVpbmcgdG8gZHJvcCBhbGw/DQoNCmlmcHhfZXZlbnRzX25v dGlmeSgpIGlzIGNhbGxlZCB1bmRlciB0aGUgc2FtZSBsb2NrLiAgU28gZWl0aGVyIHNvbWVvbmUN CmNhbGxzIHRoaXMgdW5yZWdpc3RlciBhbmQgdGhlbiBub3RpZnkgd2lsbCBub3QgZmluZCBhbnkg Y2FsbGJhY2sgb3IgdGhlDQpvdGhlciB3YXkuICBOb3RlIHRoYXQgbm90aWZ5IGRyb3BzIHRoZSBs b2NrIGZvciB0aGUgdGltZSBvZiBjYWxsYmFjaw0KY2FsbCAodG8gYWxsb3cgbW9kaWZpY2F0aW9u cyBmcm9tIHRoZSBjYWxsYmFjaykgYnV0IHRoZSBwb2ludGVyIGlzIGZpcnN0DQpjb3BpZWQgLSBz byB0aGUgYmVoYXZpb3VyIHdvdWxkIGJlIGFzIGlmIHRoZSB1bnJlZ2lzdGVyIHdhcyBjYWxsZWQg bGF0ZXIuDQoNCkknbSBub3Qgc3VyZSBJIGFuc3dlcmVkIHlvdXIgcXVlc3Rpb24gdGhvdWdoIC0g aWYgbm90IHRoZW4gcGxlYXNlIGFzaw0KYWdhaW4gd2l0aCBzb21lIG1vcmUgZGV0YWlscy4NCg0K Pj4gKwlydGVfc3BpbmxvY2tfdW5sb2NrKCZpZnB4X2xvY2spOw0KPj4gK30NCj4+ICsNCj4+ICt1 aW50MTZfdCBydGVfaWZweF9wcm94eV9nZXQodWludDE2X3QgcG9ydF9pZCkNCj4+ICt7DQo+PiAr CWlmIChwb3J0X2lkID49IFJURV9NQVhfRVRIUE9SVFMpDQo+PiArCQlyZXR1cm4gUlRFX01BWF9F VEhQT1JUUzsNCj4gSW4gdGhlIGluaXQgZnVuY3Rpb24sIHRoZSBkZWZhdWx0IHZhbHVlIGlzIHNl dCB3aXRoIFJURV9NQVhfRVRIUE9SVFMuIFdpbGwgdGhlcmUgYmUgYSBzY2VuYXJpbyBwb3J0X2lk IGNhbiBiZSBncmVhdGVyPw0KDQpIZXJlIHBvcnRfaWQgaXMgYW4gaW5wdXQgZnJvbSB1c2VyIC0g KHMpaGUgY2FuIG1ha2UgYW4gZXJyb3IuDQpJbnRlcm5hbGx5IHRoaXMgc2hvdWxkIG5ldmVyIGhh cHBlbi4NCg0KPj4gKw0KPj4gKwlyZXR1cm4gaWZweF9wb3J0c1twb3J0X2lkXTsNCj4+ICt9DQo+ PiArDQo+PiArdW5zaWduZWQgaW50IHJ0ZV9pZnB4X3BvcnRfZ2V0KHVpbnQxNl90IHByb3h5X2lk LA0KPj4gKwkJCSAgICAgICB1aW50MTZfdCAqcG9ydHMsIHVuc2lnbmVkIGludCBudW0pDQo+PiAr ew0KPj4gKwl1bnNpZ25lZCBpbnQgcCwgY250ID0gMDsNCj4+ICsNCj4+ICsJZm9yIChwID0gMDsg cCA8IFJURV9ESU0oaWZweF9wb3J0cyk7ICsrcCkgew0KPj4gKwkJaWYgKGlmcHhfcG9ydHNbcF0g PT0gcHJveHlfaWQgJiYgaWZweF9wb3J0c1twXSAhPSBwKSB7DQo+PiArCQkJKytjbnQ7DQo+PiAr CQkJaWYgKHBvcnRzICYmIG51bSA+IDApIHsNCj4+ICsJCQkJKnBvcnRzKysgPSBwOw0KPj4gKwkJ CQktLW51bTsNCj4+ICsJCQl9DQo+PiArCQl9DQo+PiArCX0NCj4gQXBwbGljYXRpb24gY2FuIGR5 bmFtaWNhbGx5IHBvcnRzIHRvIERQREsuIGlmIHRoaXMgaXMgY29ycmVjdCwgd2lsbCB0aGlzIHJl cXVpcmUgbG9jayB0byBtYWtlIHRoaXMgdGhyZWFkIHNhZmU/DQoNClRoaXMgaXMgYSBnb29kIHBv aW50LiAgQ3VycmVudGx5IGlmcHhfcG9ydHMgaXMgbm90IHByb3RlY3RlZCBieSB0aGUNCmxvY2su ICBTaW5jZSB0aGlzIGlzIGEgc2xvdy9jb250cm9sIHBhdGggSSdsbCBnbyB3aXRoIG1vdmluZyB0 aGlzIHVuZGVyDQpsb2NrIGluc3RlYWQgb2YgdHJ5aW5nIHRvIG1ha2UgdGhpcyBsb2NrbGVzcy4N Cg0KPj4gKwlyZXR1cm4gY250Ow0KPj4gK30NCj4+ICsNCj4+ICtjb25zdCBzdHJ1Y3QgcnRlX2lm cHhfaW5mbyAqcnRlX2lmcHhfaW5mb19nZXQodWludDE2X3QgcG9ydF9pZCkNCj4+ICt7DQo+PiAr CXN0cnVjdCBpZnB4X3Byb3h5X25vZGUgKnB4Ow0KPj4gKw0KPj4gKwlpZiAocG9ydF9pZCA+PSBS VEVfTUFYX0VUSFBPUlRTIHx8DQo+PiArCSAgICBpZnB4X3BvcnRzW3BvcnRfaWRdID09IFJURV9N QVhfRVRIUE9SVFMpDQo+PiArCQlyZXR1cm4gTlVMTDsNCj4+ICsNCj4+ICsJcnRlX3NwaW5sb2Nr X2xvY2soJmlmcHhfbG9jayk7DQo+PiArCVRBSUxRX0ZPUkVBQ0gocHgsICZpZnB4X3Byb3hpZXMs IGVsZW0pIHsNCj4+ICsJCWlmIChweC0+cHJveHlfaWQgPT0gaWZweF9wb3J0c1twb3J0X2lkXSkN Cj4+ICsJCQlicmVhazsNCj4+ICsJfQ0KPj4gKwlydGVfc3BpbmxvY2tfdW5sb2NrKCZpZnB4X2xv Y2spOw0KPj4gKwlSVEVfQVNTRVJUKHB4ICYmICJJbnRlcm5hbCBJRiBQcm94eSBsaWJyYXJ5IGVy cm9yIik7DQo+IA0KPiBDYW4geW91IGhlbHAgbWUgdW5kZXJzdGFuZCB0aGUgYXNzZXJ0IGxvZ2lj IHdpdGggY29uc3Qgc3RyaW5nPw0KDQpUaGlzIGlzIGEgcHJhY3RpY2Ugc29tZXRpbWVzIHVzZWQg dG8gaGF2ZSBhIG1lYW5pbmdmdWwgZXJyb3IgbWVzc2FnZQ0KcHJpbnRlZCAodG9nZXRoZXIgd2l0 aCBhbiBleHByZXNzaW9uKSB3aGlsZSBhc3NlcnRpb24gZmlyZXMuICBUaGUgdmFsdWUNCm9mIGV4 cHJlc3Npb24gZG9lcyBub3QgZGVwZW5kIG9uIHRoaXMgc3RyaW5nIGJ1dCB0aGUgZXhwcmVzc2lv biBpcw0KInN0cmluZ2lmaWVkIiBpbiBtYWNybyBhbmQgcHJpbnRlZCBvbiBjb25zb2xlIHNvIHRo YXQgd2F5IHlvdSBjYW4gYWRkDQpzb21lIG1lc3NhZ2UgdG8gdGhlIGNvbmRpdGlvbiBiZWluZyBj aGVja2VkLiAgSSB0aGluayB0aGlzIGlzIHRoZSBvbmx5DQpwdWJsaWMgZnVuY3Rpb24gd2hlcmUg SSd2ZSB1c2VkIHRoaXMgLSBhbGwgaW50ZXJuYWwgQVNTRVJUUyBoYXZlIG5vDQptZXNzYWdlIHNv IEkgbWlnaHQgZHJvcCBpdCBoZXJlIGlmIHlvdSB3YW50Lg0KDQo+PiArDQo+PiArCXJldHVybiAm cHgtPmluZm87DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYw0KPj4gK3ZvaWQgcXVldWVfZXZlbnQo Y29uc3Qgc3RydWN0IHJ0ZV9pZnB4X2V2ZW50ICpldiwgc3RydWN0IHJ0ZV9yaW5nICpyKQ0KPj4g K3sNCj4+ICsJc3RydWN0IHJ0ZV9pZnB4X2V2ZW50ICplID0gbWFsbG9jKHNpemVvZigqZXYpKTsN Cj4gSXMgdGhlcmUgc3BlY2lmaWMgcmVhc29uIG5vdCB0byB1c2UgcnRlX21hbGxvYz8NCg0KTm90 IHJlYWxseSAtIHRoYXQgd2FzIGFjdHVhbGx5IGEgcXVlc3Rpb24gb2YgbWluZSByZWNlbnRseSBv biB0aGlzIGxpc3QuDQpUaGlzIGlzIGEgc2xvdy9jb250cm9sIHBhdGgsIHNvIG1heWJlIHdlIHNo b3VsZCBzYXZlIGh1Z2VwYWdlIG1lbW9yeSBmb3INCnRoZSBmYXN0IHBhdGg/ICBJIGhhdmUgbm8g c3Ryb25nIG9waW5pb24gaGVyZSBhbmQgY2FuIHN3aXRjaCB0bw0KcnRlX21hbGxvYygpIGlmIHRo YXQgaXMgdGhvdWdodCBhcyBhIGJldHRlciBvcHRpb24uDQoNCj4+ICsNCj4+ICsJaWYgKCFlKSB7 DQo+PiArCQlJRlBYX0xPRyhFUlIsICJGYWlsZWQgdG8gYWxsb2NhdGUgZXZlbnQhIik7DQo+PiAr CQlyZXR1cm47DQo+PiArCX0NCj4+ICsJUlRFX0FTU0VSVChyKTsNCj4+ICsNCj4+ICsJKmUgPSAq ZXY7DQo+PiArCXJ0ZV9yaW5nX3NwX2VucXVldWUociwgZSk7DQo+PiArfQ0KPj4gKw0KPj4gK3Zv aWQgaWZweF9ub3RpZnlfZXZlbnQoc3RydWN0IHJ0ZV9pZnB4X2V2ZW50ICpldiwgc3RydWN0IGlm cHhfcHJveHlfbm9kZSAqcHgpDQo+PiArew0KPj4gKwlzdHJ1Y3QgaWZweF9xdWV1ZV9ub2RlICpx Ow0KPj4gKwlpbnQgZG9uZSA9IDA7DQo+PiArCXVpbnQxNl90IHAsIHByb3h5X2lkOw0KPj4gKw0K Pj4gKwlpZiAocHgpIHsNCj4+ICsJCWlmIChweC0+c3RhdGUgJiBERUxfUEVORElORykNCj4+ICsJ CQlyZXR1cm47DQo+PiArCQlwcm94eV9pZCA9IHB4LT5wcm94eV9pZDsNCj4+ICsJCVJURV9BU1NF UlQocHJveHlfaWQgIT0gUlRFX01BWF9FVEhQT1JUUyk7DQo+PiArCQlweC0+c3RhdGUgfD0gSU5f VVNFOw0KPj4gKwl9IGVsc2UNCj4+ICsJCXByb3h5X2lkID0gUlRFX01BWF9FVEhQT1JUUzsNCj4+ ICsNCj4+ICsJUlRFX0FTU0VSVChldik7DQo+PiArCS8qIFRoaXMgZnVuY3Rpb24gaXMgZXhwZWN0 ZWQgdG8gYmUgY2FsbGVkIHdpdGggYSBsb2NrIGhlbGQuICovDQo+PiArCVJURV9BU1NFUlQocnRl X3NwaW5sb2NrX3RyeWxvY2soJmlmcHhfbG9jaykgPT0gMCk7DQo+PiArDQo+PiArCWlmIChpZnB4 X2NhbGxiYWNrcy5mdW5jc1tldi0+dHlwZV0uZl9wdHIpIHsNCj4+ICsJCXVuaW9uIGNiX3B0cl90 IGNiID0gaWZweF9jYWxsYmFja3MuZnVuY3NbZXYtPnR5cGVdOw0KPj4gKw0KPj4gKwkJLyogRHJv cCB0aGUgbG9jayBmb3IgdGhlIHRpbWUgb2YgY2FsbGJhY2sgY2FsbC4gKi8NCj4+ICsJCXJ0ZV9z cGlubG9ja191bmxvY2soJmlmcHhfbG9jayk7DQo+PiArCQlpZiAocHgpIHsNCj4+ICsJCQlmb3Ig KHAgPSAwOyBwIDwgUlRFX0RJTShpZnB4X3BvcnRzKTsgKytwKSB7DQo+PiArCQkJCWlmIChpZnB4 X3BvcnRzW3BdICE9IHByb3h5X2lkIHx8DQo+PiArCQkJCSAgICBpZnB4X3BvcnRzW3BdID09IHAp DQo+PiArCQkJCQljb250aW51ZTsNCj4+ICsJCQkJZXYtPmRhdGEucG9ydF9pZCA9IHA7DQo+PiAr CQkJCWRvbmUgPSBjYi5mX3B0cigmZXYtPmRhdGEpIHx8IGRvbmU7DQo+PiArCQkJfQ0KPj4gKwkJ fSBlbHNlIHsNCj4+ICsJCQlSVEVfQVNTRVJUKGV2LT50eXBlID09IFJURV9JRlBYX0NGR19ET05F KTsNCj4+ICsJCQlkb25lID0gY2IuY2ZnX2RvbmUoKTsNCj4+ICsJCX0NCj4+ICsJCXJ0ZV9zcGlu bG9ja19sb2NrKCZpZnB4X2xvY2spOw0KPj4gKwl9DQo+PiArCWlmIChkb25lKQ0KPj4gKwkJZ290 byBleGl0Ow0KPj4gKw0KPj4gKwkvKiBFdmVudCBub3QgImNvbnN1bWVkIiB5ZXQgc28gdHJ5IHRv IG5vdGlmeSB2aWEgcXVldWVzLiAqLw0KPiANCj4gSXMgdGhlcmUgYSBjaGFuY2Ugd2hlbiB0cnlp bmcgdG8gdXNlIHF1ZXVlcyB0aGUgZXZlbnRzIGFyZSBjb25zdW1lZCBieSBtZXRob2QgYWJvdmUg YnkgbGlzdGVuZXI/DQoNClRoaXMgaXMgZnVsbHkgdW5kZXIgY29udHJvbCBvZiBhcHBsaWNhdGlv biAtIGlmIGFwcGxpY2F0aW9uIHdhbnRzDQpjZXJ0YWluIGV2ZW50cyB0byBiZSBub3RpZmllZCBi eSB0aGUgcXVldWVzIHRoZW4gZWl0aGVyIGl0IHNob3VsZCBub3QNCnJlZ2lzdGVyIGNhbGxiYWNr IGZvciB0aGF0IGV2ZW50IHR5cGUgb3IsIGlmIGl0IHJlZ2lzdGVycywgdGhlbiB0aGlzDQpjYWxs YmFjayBzaG91bGQgbm90IHJldHVybiBub24temVybyB2YWx1ZSAoanVzdCBkbyBzb21lIGNvbW1v bg0KcHJlcGFyYXRpb24gb3Igc29tZXRoaW5nIGxpa2UgdGhhdCkuDQoNCj4+ICsJVEFJTFFfRk9S RUFDSChxLCAmaWZweF9xdWV1ZXMsIGVsZW0pIHsNCj4+ICsJCWlmIChweCkgew0KPj4gKwkJCWZv ciAocCA9IDA7IHAgPCBSVEVfRElNKGlmcHhfcG9ydHMpOyArK3ApIHsNCj4+ICsJCQkJaWYgKGlm cHhfcG9ydHNbcF0gIT0gcHJveHlfaWQgfHwNCj4+ICsJCQkJICAgIGlmcHhfcG9ydHNbcF0gPT0g cCkNCj4+ICsJCQkJCWNvbnRpbnVlOw0KPj4gKwkJCQkvKiBTZXQgdGhlIHBvcnRfaWQgLSB0aGUg cmVtYWluaW5nIHBhcmFtcw0KPj4gc2hvdWxkDQo+PiArCQkJCSAqIGJlIGZpbGxlZCBiZWZvcmUg Y2FsbGluZyB0aGlzIGZ1bmN0aW9uLg0KPj4gKwkJCQkgKi8NCj4+ICsJCQkJZXYtPmRhdGEucG9y dF9pZCA9IHA7DQo+PiArCQkJCXF1ZXVlX2V2ZW50KGV2LCBxLT5yKTsNCj4+ICsJCQl9DQo+PiAr CQl9IGVsc2UNCj4+ICsJCQlxdWV1ZV9ldmVudChldiwgcS0+cik7DQo+PiArCX0NCj4+ICtleGl0 Og0KPj4gKwlpZiAocHgpDQo+PiArCQlweC0+c3RhdGUgJj0gfklOX1VTRTsNCj4+ICt9DQo+IA0K PiBTbmlwcGVkDQo+IA0KPj4gKw0KPj4gK1JURV9JTklUKGlmX3Byb3h5X2luaXQpDQo+PiArew0K Pj4gKwl1bnNpZ25lZCBpbnQgaTsNCj4gDQo+IElzIElGX1BST1hZIHN1cHBvcnRlZCBmb3IgdmRl diBhbHNvPw0KDQpJJ20gbm90IHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBxdWVzdGlvbiBoZXJlLiAg QW55IHBvcnQgY2FuIGJlIGJvdW5kIHRvIGENCnByb3h5ICh2ZGV2IG9yIG5vdCkgYW5kIGFueSBw b3J0IHZpc2libGUgdG8gc3lzdGVtIChoYXZpbmcgbm9uLXplcm8NCmlmX2luZGV4IGluIGRldl9p bmZvKSBjYW4gYmUgdXNlZCBhcyBhIHByb3h5LiAgRG9lcyB0aGF0IGFuc3dlcnMgeW91cg0KcXVl c3Rpb24/ICBJZiBub3QgcGxlYXNlIGV4cGxhaW4uDQoNCj4+ICsJZm9yIChpID0gMDsgaSA8IFJU RV9ESU0oaWZweF9wb3J0cyk7ICsraSkNCj4+ICsJCWlmcHhfcG9ydHNbaV0gPSBSVEVfTUFYX0VU SFBPUlRTOw0KPj4gKw0KPj4gKwlpZnB4X2xvZ190eXBlID0gcnRlX2xvZ19yZWdpc3RlcigibGli LmlmX3Byb3h5Iik7DQo+PiArCWlmIChpZnB4X2xvZ190eXBlID49IDApDQo+PiArCQlydGVfbG9n X3NldF9sZXZlbChpZnB4X2xvZ190eXBlLCBSVEVfTE9HX1dBUk5JTkcpOw0KPj4gKw0KPj4gKwlp ZiAoaWZweF9wbGF0Zm9ybS5pbml0KQ0KPj4gKwkJaWZweF9wbGF0Zm9ybS5pbml0KCk7DQo+PiAr fQ0KPiBTbmlwcGVkDQo+IA0KPj4gK1NSQ1MgKz0gaWZfcHJveHkuYw0KPj4gZGlmZiAtLWdpdCBh L2xpYi9saWJydGVfaWZfcHJveHkvbGludXgvaWZfcHJveHkuYw0KPj4gYi9saWIvbGlicnRlX2lm X3Byb3h5L2xpbnV4L2lmX3Byb3h5LmMNCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+PiBpbmRl eCAwMDAwMDAwMDAuLmJmODUxYzA5Ng0KPj4gLS0tIC9kZXYvbnVsbA0KPj4gKysrIGIvbGliL2xp YnJ0ZV9pZl9wcm94eS9saW51eC9pZl9wcm94eS5jDQo+PiBAQCAtMCwwICsxLDU1MiBAQA0KPj4g Ky8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UNCj4+ICsgKiBDb3B5cmln aHQoQykgMjAyMCBNYXJ2ZWxsIEludGVybmF0aW9uYWwgTHRkLg0KPj4gKyAqLw0KPiANCj4gQXNz dW1pbmcgYWxsIHRoZSBldmVudHMgYXJlIGV4ZWN1dGVkIGBpZiBhbmQgb25seSBpZmAgdGhlIGN1 cnJlbnQgcHJvY2VzcyBpZiBQcmltYXJ5PyBJZiBpdCBpcyBzZWNvbmRhcnkgZm9yIHBoeXNpY2Fs IGludGVyZmFjZSBjZXJ0YWluIGBydGVfZXRoX2FwaWAgd2lsbCBmYWlsLiBDYW4gd2UgaGF2ZSBj aGVjayB0aGUgZXZlbnRzIGFyZSBwcm9jZXNzZWQgZm9yIHByaW1hcnkgb25seT8NCg0KWWVzIHRo YXQgd2FzIG15IGFzc3VtcHRpb24gaG93ZXZlciBhdCB0aGUgbW9tZW50IEknbSB1c2luZzoNCi0g cnRlX2V0aF9pdGVyYXRvcl9pbml0L25leHQvY2xlYW51cCgpDQotIHJ0ZV9ldGhfZGV2X2luZm9f Z2V0KCkNCi0gcnRlX2V0aF9kZXZfZ2V0X210dSgpDQotIHJ0ZV9ldGhfbWFjYWRkcl9nZXQoKQ0K LSBydGVfZXRoX2Rldl9tYWNfYWRkcl9hZGQoKQ0KLSBydGVfZGV2X3Byb2JlL3JlbW92ZSgpDQoN CklzIHRoZXJlIGEgcHJvYmxlbSB3aXRoIHRoZXNlPyAgSWYgaXQgaXMsIHRoZW4gSSdsbCB0aGlu ayBhYm91dCBhZGRpbmcNCmNoZWNrIGZvciBzZWNvbmRhcnkuDQoNCj4gU25pcHBlZA0KPiANCj4+ IGRpZmYgLS1naXQgYS9saWIvbGlicnRlX2lmX3Byb3h5L21lc29uLmJ1aWxkIGIvbGliL2xpYnJ0 ZV9pZl9wcm94eS9tZXNvbi5idWlsZA0KPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4+IGluZGV4 IDAwMDAwMDAwMC4uZjBjMWE2ZTE1DQo+PiAtLS0gL2Rldi9udWxsDQo+PiArKysgYi9saWIvbGli cnRlX2lmX3Byb3h5L21lc29uLmJ1aWxkDQo+PiBAQCAtMCwwICsxLDE5IEBADQo+PiArIyBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlDQo+PiArIyBDb3B5cmlnaHQoQykgMjAy MCBNYXJ2ZWxsIEludGVybmF0aW9uYWwgTHRkLg0KPj4gKw0KPj4gKyMgQ3VycmVudGx5IG9ubHkg aW1wbGVtZW50ZWQgb24gTGludXgNCj4+ICtpZiBub3QgaXNfbGludXgNCj4+ICsJYnVpbGQgPSBm YWxzZQ0KPj4gKwlyZWFzb24gPSAnb25seSBzdXBwb3J0ZWQgb24gbGludXgnDQo+PiArZW5kaWYN Cj4+ICsNCj4+ICt2ZXJzaW9uID0gMQ0KPj4gK2FsbG93X2V4cGVyaW1lbnRhbF9hcGlzID0gdHJ1 ZQ0KPj4gKw0KPj4gK2RlcHMgKz0gWydldGhkZXYnXQ0KPj4gK3NvdXJjZXMgPSBmaWxlcygnaWZf cHJveHlfY29tbW9uLmMnKQ0KPj4gK2hlYWRlcnMgPSBmaWxlcygncnRlX2lmX3Byb3h5LmgnKQ0K PiANCj4gRG9lcyB0aGUgaWZfcHJveHkgaGF2ZSBkZXBlbmRlbmN5IG9uIFRBUCBhbmQgS05JLiBT aG91bGQgbm90IHdlIGFkZCBjaGVjayBhcyBgIGlmIGRwZGtfY29uZi5oYXMoJ1JURV9MSUJSVEVf S05JJylgIGFuZCBgIGlmIGRwZGtfY29uZi5oYXMoJ1JURV9MSUJSVEVfVEFQJylgPw0KDQpUaGlz IGlzIHRoZSBzYW1lIGFzIGZvciBNYWtlZmlsZSAtIEkgdGhpbmsgSSdsbCBnbyB3aXRoIGFsbG93 aW5nIGl0IHRvDQpidWlsZCBidXQgYWRkaW5nIGNvbmRpdGlvbmFscyBpbiBwcm94eSBjcmVhdGlv bi4gIEhvd2V2ZXIgaWYgeW91IGFuZC9vcg0Kb3RoZXJzIHRoaW5rIGl0IHdvdWxkIGJlIGJldHRl ciB0byBza2lwIGJ1aWxkIHRoZW4gSSB3aWxsIGFkYXB0Lg0KDQo+PiArDQo+PiAraWYgaXNfbGlu dXgNCj4+ICsJc291cmNlcyArPSBmaWxlcygnbGludXgvaWZfcHJveHkuYycpDQo+PiArZW5kaWYN Cj4gDQo+IFNuaXBwZWQNCj4gDQoNClRoYW5rcyBmb3IgcmV2aWV3aW5nIHRoaXMuDQoNCldpdGgg cmVnYXJkcw0KQW5kcnplag0K