From owner-freebsd-bugs@FreeBSD.ORG Tue Sep 24 00:40:02 2013 Return-Path: Delivered-To: freebsd-bugs@smarthost.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id B7160E29 for ; Tue, 24 Sep 2013 00:40:02 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:1900:2254:206c::16:87]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id A37DE248B for ; Tue, 24 Sep 2013 00:40:02 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.7/8.14.7) with ESMTP id r8O0e1D6057249 for ; Tue, 24 Sep 2013 00:40:01 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.7/8.14.7/Submit) id r8O0e0pk057247; Tue, 24 Sep 2013 00:40:00 GMT (envelope-from gnats) Date: Tue, 24 Sep 2013 00:40:00 GMT Message-Id: <201309240040.r8O0e0pk057247@freefall.freebsd.org> To: freebsd-bugs@FreeBSD.org Cc: From: "Henning Matyschok" Subject: Re: kern/179473: Source code contribution of implementation about virtual ethernet interface X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list Reply-To: Henning Matyschok List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 24 Sep 2013 00:40:02 -0000 The following reply was made to PR kern/179473; it has been noted by GNATS. From: "Henning Matyschok" To: bug-followup@freebsd.org, henning.matyschok@stud.fh-flensburg.de Cc: Subject: Re: kern/179473: Source code contribution of implementation about virtual ethernet interface Date: Tue, 24 Sep 2013 02:16:14 -0000 ------------EQZm5yNQd8MHugbtzE49mf Content-Type: text/plain; charset=us-ascii; charset=us-ascii; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit ------------EQZm5yNQd8MHugbtzE49mf Content-Disposition: attachment; filename=if_vether.c Content-Type: application/octet-stream; name=if_vether.c Content-Transfer-Encoding: Base64 LyotCiAqIENvcHlyaWdodCAoYykgMjAxMyBIZW5uaW5nIE1hdHlzY2hvawogKgog KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv cm1zLCB3aXRoIG9yIHdpdGhvdXQKICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0 dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCiAqIGFy ZSBtZXQ6CiAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0 IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CiAqICAgIG5vdGljZSwgdGhpcyBs aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICogICAgbm90aWNlLCB0aGlzIGxpc3Qg b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo ZQogKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogKgogKiBUSElTIFNPRlRXQVJF IElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyBgYEFT IElTJycgQU5ECiAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQogKiBJTVBMSUVEIFdB UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRQogKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U IFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQogKiBG T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAogKiBEQU1BR0VTIChJTkNMVURJTkcs IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH T09EUwogKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKICogSE9XRVZFUiBDQVVTRUQg QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS QUNULCBTVFJJQ1QKICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQogKiBPVVQg T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg VEhFIFBPU1NJQklMSVRZIE9GCiAqIFNVQ0ggREFNQUdFLgogKgogKi8KLyoKICog Q29weXJpZ2h0IChjKSAyMDA5IFRoZW8gZGUgUmFhZHQKICoKICogUGVybWlzc2lv biB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0 d2FyZSBmb3IgYW55CiAqIHB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBo ZXJlYnkgZ3JhbnRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgYWJvdmUKICogY29weXJp Z2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIgaW4g YWxsIGNvcGllcy4KICoKICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJ UyIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTCiAqIFdJ VEggUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVE IFdBUlJBTlRJRVMgT0YKICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTLiBJ TiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IKICogQU5Z IFNQRUNJQUwsIERJUkVDVCwgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFN QUdFUyBPUiBBTlkgREFNQUdFUwogKiBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9N IExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4KICog QUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SIE9USEVSIFRPUlRJT1VT IEFDVElPTiwgQVJJU0lORyBPVVQgT0YKICogT1IgSU4gQ09OTkVDVElPTiBXSVRI IFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4KICovCiNp bmNsdWRlIDxzeXMvcGFyYW0uaD4KI2luY2x1ZGUgPHN5cy9rZXJuZWwuaD4KI2lu Y2x1ZGUgPHN5cy9tb2R1bGUuaD4KI2luY2x1ZGUgPHN5cy9saWJrZXJuLmg+CiNp bmNsdWRlIDxzeXMvc29ja2V0Lmg+IAojaW5jbHVkZSA8c3lzL3NvY2tpby5oPgog CiNpbmNsdWRlIDxuZXQvaWYuaD4KI2luY2x1ZGUgPG5ldC9pZl9jbG9uZS5oPgoj aW5jbHVkZSA8bmV0L2lmX21lZGlhLmg+CiNpbmNsdWRlIDxuZXQvaWZfdHlwZXMu aD4KI2luY2x1ZGUgPG5ldC9icGYuaD4KI2luY2x1ZGUgPG5ldC9ldGhlcm5ldC5o PgojaW5jbHVkZSA8bmV0L2lmX2JyaWRnZXZhci5oPgoKI2RlZmluZSBWRVRIRVJO QU1FCSJ2ZXRoZXIiCiNkZWZpbmUJTVRBR19WRVRIRVIJMTM3NzE0Njc2NAojZGVm aW5lCU1UQUdfVkVUSEVSX0NBTExFRAkwIAogCnN0cnVjdCB2ZXRoZXJfc29mdGMg ewoJc3RydWN0IGlmbmV0CSpzY19pZnA7CS8qIE5ldHdvcmsgaW50ZXJmYWNlLiAq LwoJTElTVF9FTlRSWSh2ZXRoZXJfc29mdGMpIHZldGhlcl9saXN0OwoJc3RydWN0 IG10eAlzY19tdHg7CQojZGVmaW5lCVZFVEhFUl9MT0NLX0lOSVQoc2MpCW10eF9p bml0KCYoc2MpLT5zY19tdHgsICJ2ZXRoZXIgc29mdGMiLAlcCgkJCQkgICAgIE5V TEwsIE1UWF9ERUYpCiNkZWZpbmUJVkVUSEVSX0xPQ0tfREVTVFJPWShzYykJbXR4 X2Rlc3Ryb3koJihzYyktPnNjX210eCkKI2RlZmluZQlWRVRIRVJfTE9DSyhzYykJ CW10eF9sb2NrKCYoc2MpLT5zY19tdHgpCiNkZWZpbmUJVkVUSEVSX1VOTE9DSyhz YykJCW10eF91bmxvY2soJihzYyktPnNjX210eCkKI2RlZmluZQlWRVRIRVJfTE9D S19BU1NFUlQoc2MpCW10eF9hc3NlcnQoJihzYyktPnNjX210eCwgTUFfT1dORUQp CQoJLyogRmFrZSBpbmZvcm1hdGlvbiBhYm91dCB0cmFuc21pc3Npb24gbWVkaWEu ICovCglzdHJ1Y3QgaWZtZWRpYQlzY19pZm07CQoJaW50CXNjX3N0YXR1czsKfTsK CnN0YXRpYyBMSVNUX0hFQUQoLCB2ZXRoZXJfc29mdGMpIHZldGhlcl9saXN0Owog CnN0YXRpYyBzdHJ1Y3QgbXR4IHZldGhlcl9tdHg7CnN0YXRpYyBNQUxMT0NfREVG SU5FKE1fVkVUSEVSLCBWRVRIRVJOQU1FLCAiVmlydHVhbCBFdGhlcm5ldCBpbnRl cmZhY2UiKTsKIApzdGF0aWMgaW50CXZldGhlcl9jbG9uZV9jcmVhdGUoc3RydWN0 IGlmX2Nsb25lICosIGludCwgY2FkZHJfdCk7CnN0YXRpYyB2b2lkCXZldGhlcl9j bG9uZV9kZXN0cm95KHN0cnVjdCBpZm5ldCAqKTsKIApJRkNfU0lNUExFX0RFQ0xB UkUodmV0aGVyLCAwKTsKCnN0YXRpYyB2b2lkCXZldGhlcl9pbml0KHZvaWQgKik7 CnN0YXRpYyB2b2lkCXZldGhlcl9zdG9wKHN0cnVjdCBpZm5ldCAqLCBpbnQpOwpz dGF0aWMgdm9pZAl2ZXRoZXJfc3RhcnRfbG9ja2VkKHN0cnVjdCBpZm5ldCAqKTsK c3RhdGljIHZvaWQJdmV0aGVyX3N0YXJ0KHN0cnVjdCBpZm5ldCAqKTsKCnN0YXRp YyBpbnQJdmV0aGVyX21lZGlhX2NoYW5nZShzdHJ1Y3QgaWZuZXQgKik7CnN0YXRp YyB2b2lkCXZldGhlcl9tZWRpYV9zdGF0dXMoc3RydWN0IGlmbmV0ICosIHN0cnVj dCBpZm1lZGlhcmVxICopOwpzdGF0aWMgaW50CXZldGhlcl9pb2N0bChzdHJ1Y3Qg aWZuZXQgKiwgdV9sb25nLCBjYWRkcl90KTsKCi8qCiAqIEluc3RhbnRpYXRlcyB2 ZXRoZXIgaW50ZXJmYWNlLgogKi8Kc3RhdGljIGludAp2ZXRoZXJfY2xvbmVfY3Jl YXRlKHN0cnVjdCBpZl9jbG9uZSAqaWZjLCBpbnQgdW5pdCwgY2FkZHJfdCBkYXRh KQp7CglzdHJ1Y3QgdmV0aGVyX3NvZnRjICpzYzsKCXN0cnVjdCBpZm5ldCAqaWZw OwoJdWludDMyX3QgcmFuZHZhbDsKCXVpbnQ4X3QJbGxhW0VUSEVSX0FERFJfTEVO XTsKIAoJc2MgPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCB2ZXRoZXJfc29mdGMpLCBN X1ZFVEhFUiwgTV9XQUlUT0t8TV9aRVJPKTsKCWlmcCA9IHNjLT5zY19pZnAgPSBp Zl9hbGxvYyhJRlRfRVRIRVIpOwoJaWYgKGlmcCA9PSBOVUxMKSB7CgkJZnJlZShz YywgTV9WRVRIRVIpOwoJCXJldHVybiAoRU5PU1BDKTsKCX0KIAoJVkVUSEVSX0xP Q0tfSU5JVChzYyk7CglpZnAtPmlmX3NvZnRjID0gc2M7CiAKCWlmX2luaXRuYW1l KGlmcCwgaWZjLT5pZmNfbmFtZSwgdW5pdCk7CiAKCS8qIEdlbmVyYXRlcyBsbGEg d2l0aCByYW5kb21pemVkIHZhbHVlLiAqLwoJbGxhWzBdID0gMHgwOwoJcmFuZHZh bCA9IGFyYzRyYW5kb20oKTsKCW1lbWNweSgmbGxhWzFdLCAmcmFuZHZhbCwgc2l6 ZW9mKHVpbnQzMl90KSk7CglsbGFbNV0gPSAodWludDhfdCl1bml0OyAvKiBJbnRl cmZhY2UgbWFqb3IgbnVtYmVyICovCiAKCWV0aGVyX2lmYXR0YWNoKGlmcCwgbGxh KTsKIAoJaWZwLT5pZl9pbml0ID0gdmV0aGVyX2luaXQ7CglpZnAtPmlmX2lvY3Rs ID0gdmV0aGVyX2lvY3RsOwoJaWZwLT5pZl9zdGFydCA9IHZldGhlcl9zdGFydDsK IAoJaWZwLT5pZl9jYXBhYmlsaXRpZXMgPSBJRkNBUF9WTEFOX01UVSB8IElGQ0FQ X0pVTUJPX01UVTsKCWlmcC0+aWZfY2FwZW5hYmxlID0gSUZDQVBfVkxBTl9NVFUg fCBJRkNBUF9KVU1CT19NVFU7CglpZnAtPmlmX2ZsYWdzID0gKElGRl9TSU1QTEVY IHwgSUZGX0JST0FEQ0FTVCB8IElGRl9NVUxUSUNBU1QpOwoJaWZwLT5pZl9zbmQu aWZxX21heGxlbiA9IGlmcW1heGxlbjsKIAoJaWZtZWRpYV9pbml0KCZzYy0+c2Nf aWZtLCAwLCB2ZXRoZXJfbWVkaWFfY2hhbmdlLCB2ZXRoZXJfbWVkaWFfc3RhdHVz KTsKCWlmbWVkaWFfYWRkKCZzYy0+c2NfaWZtLCBJRk1fRVRIRVIgfCBJRk1fQVVU TywgMCwgTlVMTCk7CglpZm1lZGlhX3NldCgmc2MtPnNjX2lmbSwgSUZNX0VUSEVS IHwgSUZNX0FVVE8pOwogCglzYy0+c2Nfc3RhdHVzID0gSUZNX0FWQUxJRDsKCWlm cC0+aWZfYmF1ZHJhdGUgPSAwOwogCgltdHhfbG9jaygmdmV0aGVyX210eCk7CglM SVNUX0lOU0VSVF9IRUFEKCZ2ZXRoZXJfbGlzdCwgc2MsIHZldGhlcl9saXN0KTsK CW10eF91bmxvY2soJnZldGhlcl9tdHgpOwoJaWZwLT5pZl9kcnZfZmxhZ3MgfD0g SUZGX0RSVl9SVU5OSU5HOwogCglyZXR1cm4gKDApOwp9CiAKLyoKICogRGVzdHJv eXMgdmV0aGVyIGludGVyZmFjZS4KICovCnN0YXRpYyB2b2lkCnZldGhlcl9jbG9u ZV9kZXN0cm95KHN0cnVjdCBpZm5ldCAqaWZwKQp7CglzdHJ1Y3QgdmV0aGVyX3Nv ZnRjICpzYzsJCglzYyA9IGlmcC0+aWZfc29mdGM7CQogCgltdHhfbG9jaygmdmV0 aGVyX210eCk7Cgl2ZXRoZXJfc3RvcChpZnAsIDEpOwoJaWZwLT5pZl9mbGFncyAm PSB+SUZGX1VQOwkJCQoJTElTVF9SRU1PVkUoc2MsIHZldGhlcl9saXN0KTsKCWV0 aGVyX2lmZGV0YWNoKGlmcCk7CglWRVRIRVJfTE9DS19ERVNUUk9ZKHNjKTsKIAoJ bXR4X3VubG9jaygmdmV0aGVyX210eCk7CglmcmVlKHNjLCBNX1ZFVEhFUik7Cn0K IAovKgogKiBJbml0aWFsaXplcyB2ZXRoZXIgaW50ZXJmYWNlLgogKi8Kc3RhdGlj IHZvaWQKdmV0aGVyX2luaXQodm9pZCAqeHNjKQp7CglzdHJ1Y3QgdmV0aGVyX3Nv ZnRjICpzYzsKCXN0cnVjdCBpZm5ldCAqaWZwOwogCiAJc2MgPSAoc3RydWN0IHZl dGhlcl9zb2Z0YyAqKXhzYzsKCVZFVEhFUl9MT0NLKHNjKTsKCWlmcCA9IHNjLT5z Y19pZnA7CglpZnAtPmlmX2Rydl9mbGFncyB8PSBJRkZfRFJWX1JVTk5JTkc7Cglp ZnAtPmlmX2Rydl9mbGFncyAmPSB+SUZGX0RSVl9PQUNUSVZFOwoJVkVUSEVSX1VO TE9DSyhzYyk7Cn0KIAovKgogKiBTdG9wcyB2ZXRoZXIgaW50ZXJmYWNlLgogKi8K c3RhdGljIHZvaWQKdmV0aGVyX3N0b3Aoc3RydWN0IGlmbmV0ICppZnAsIGludCBk aXNhYmxlKQp7CglzdHJ1Y3QgdmV0aGVyX3NvZnRjICpzYzsKCQoJc2MgPSBpZnAt PmlmX3NvZnRjOwoJVkVUSEVSX0xPQ0tfQVNTRVJUKHNjKTsKCWlmcC0+aWZfZHJ2 X2ZsYWdzICY9IH5JRkZfRFJWX1JVTk5JTkc7Cn0JCiAKLyoKICogU3RhcnRzIHRy YW5zbWlzc2lvbi4KICovCnN0YXRpYyB2b2lkCnZldGhlcl9zdGFydChzdHJ1Y3Qg aWZuZXQgKmlmcCkKewoJc3RydWN0IHZldGhlcl9zb2Z0Ywkqc2M7CgoJc2MgPSBp ZnAtPmlmX3NvZnRjOwoJVkVUSEVSX0xPQ0soc2MpOwoJdmV0aGVyX3N0YXJ0X2xv Y2tlZChpZnApOwoJVkVUSEVSX1VOTE9DSyhzYyk7Cn0KCnN0YXRpYyB2b2lkCnZl dGhlcl9zdGFydF9sb2NrZWQoc3RydWN0IGlmbmV0ICppZnApCnsKCXN0cnVjdCB2 ZXRoZXJfc29mdGMJKnNjOwoJc3RydWN0IG1idWYgKm07CglzdHJ1Y3QgbV90YWcg KnQ7CgoJc2MgPSBpZnAtPmlmX3NvZnRjOwoJVkVUSEVSX0xPQ0tfQVNTRVJUKHNj KTsKCglpZnAtPmlmX2Rydl9mbGFncyB8PSBJRkZfRFJWX09BQ1RJVkU7CgkKCWZv ciAoOzspIHsKCQlJRlFfREVRVUVVRSgmaWZwLT5pZl9zbmQsIG0pOwoJCWlmICht ID09IE5VTEwpIAoJCQlicmVhazsKCQkKIAkJaWYgKGlmcC0+aWZfYnJpZGdlID09 IE5VTEwpIHsKCQkJbV9mcmVlbShtKTsKCQkJY29udGludWU7CgkJfQoJCgkJdCA9 IG1fdGFnX2xvY2F0ZShtLCBNVEFHX1ZFVEhFUiwgTVRBR19WRVRIRVJfQ0FMTEVE LCBOVUxMKTsKCQlpZiAodCAhPSBOVUxMKSB7CgkJCW1fZnJlZW0obSk7CgkJCWNv bnRpbnVlOwkJIAkJCgkJfQoJCQkJCgkJaWYgKG0tPm1fcGt0aGRyLnJjdmlmID09 IE5VTEwpIHsKCQkJdCA9IG1fdGFnX2FsbG9jKE1UQUdfVkVUSEVSLCBNVEFHX1ZF VEhFUl9DQUxMRUQsCgkJCQlzaXplb2Yoc3RydWN0IG1fdGFnKSwgTV9OT1dBSVQp OwoJCQlpZiAodCA9PSBOVUxMKSB7IAoJCQkJbV9mcmVlbShtKTsKCQkJCWNvbnRp bnVlOwoJCQl9CgkJCQoJCQltX3RhZ19wcmVwZW5kKG0sIHQpOwoJCQlFVEhFUl9C UEZfTVRBUChpZnAsIG0pOwkJCgoJCQkodm9pZCkoYnJpZGdlX291dHB1dF9wKShp ZnAsIG0sIE5VTEwsIE5VTEwpOwkJCiAJCX0gZWxzZSAKIAkJCW1fZnJlZW0obSk7 Cgl9CgkJCQkJCglpZnAtPmlmX2Rydl9mbGFncyAmPSB+SUZGX0RSVl9PQUNUSVZF Owp9CgovKgogKiBNZWRpYSB0eXBlcyBjYW4ndCBjaGFuZ2VkLgogKi8Kc3RhdGlj IGludAp2ZXRoZXJfaW9jdGwoc3RydWN0IGlmbmV0ICppZnAsIHVfbG9uZyBjbWQs IGNhZGRyX3QgZGF0YSkKewoJc3RydWN0IHZldGhlcl9zb2Z0YyAqc2MgPSBpZnAt PmlmX3NvZnRjOwkKCXN0cnVjdCBpZnJlcSAqaWZyID0gKHN0cnVjdCBpZnJlcSAq KWRhdGE7CglpbnQgZXJyb3IgPSAwOwogCglWRVRIRVJfTE9DSyhzYyk7Cglzd2l0 Y2ggKGNtZCkgewoJY2FzZSBTSU9DU0lGTVRVOgoJCWlmIChpZnItPmlmcl9tdHUg PiBFVEhFUl9NQVhfTEVOX0pVTUJPKSAKCQkJZXJyb3IgPSBFSU5WQUw7CgkJZWxz ZSAKCQkJaWZwLT5pZl9tdHUgPSBpZnItPmlmcl9tdHU7CQoJCWJyZWFrOwoJY2Fz ZSBTSU9DU0lGTUVESUE6CgljYXNlIFNJT0NHSUZNRURJQToKCQllcnJvciA9IGlm bWVkaWFfaW9jdGwoaWZwLCBpZnIsICZzYy0+c2NfaWZtLCBjbWQpOwoJCWJyZWFr OwoJY2FzZSBTSU9DU0lGRkxBR1M6CgljYXNlIFNJT0NBRERNVUxUSToKCWNhc2Ug U0lPQ0RFTE1VTFRJOgoJCWJyZWFrOwoJY2FzZSBTSU9DU0lGUEhZUzoKCQllcnJv ciA9IEVPUE5PVFNVUFA7CgkJYnJlYWs7CglkZWZhdWx0OgoJCWVycm9yID0gZXRo ZXJfaW9jdGwoaWZwLCBjbWQsIGRhdGEpOwoJCWJyZWFrOwoJfQoJVkVUSEVSX1VO TE9DSyhzYyk7CglyZXR1cm4gKGVycm9yKTsKfSAKCnN0YXRpYyBpbnQKdmV0aGVy X21lZGlhX2NoYW5nZShzdHJ1Y3QgaWZuZXQgKmlmcCkKewoJcmV0dXJuICgwKTsK fQogCnN0YXRpYyB2b2lkCnZldGhlcl9tZWRpYV9zdGF0dXMoc3RydWN0IGlmbmV0 ICppZnAsIHN0cnVjdCBpZm1lZGlhcmVxICppZm1yKQp7CglpZm1yLT5pZm1fYWN0 aXZlID0gSUZNX0VUSEVSIHwgSUZNX0FVVE87CglpZm1yLT5pZm1fc3RhdHVzID0g SUZNX0FWQUxJRCB8IElGTV9BQ1RJVkU7Cn0KCnN0YXRpYyBpbnQKdmV0aGVyX21v ZF9ldmVudChtb2R1bGVfdCBtb2QsIGludCBldmVudCwgdm9pZCAqZGF0YSkKewoJ aW50IGVycm9yID0gMDsKIAoJc3dpdGNoIChldmVudCkgewoJY2FzZSBNT0RfTE9B RDoKCQltdHhfaW5pdCgmdmV0aGVyX210eCwgImlmX3ZldGhlciIsIE5VTEwsIE1U WF9ERUYpOwoJCWlmX2Nsb25lX2F0dGFjaCgmdmV0aGVyX2Nsb25lcik7CQoJCWJy ZWFrOwoJY2FzZSBNT0RfVU5MT0FEOgkKCQlpZl9jbG9uZV9kZXRhY2goJnZldGhl cl9jbG9uZXIpOwoJCW10eF9kZXN0cm95KCZ2ZXRoZXJfbXR4KTsKCQlicmVhazsK CWRlZmF1bHQ6CgkJZXJyb3IgPSBFT1BOT1RTVVBQOwoJfQogCglyZXR1cm4gKGVy cm9yKTsKfSAKIApzdGF0aWMgbW9kdWxlZGF0YV90IHZldGhlcl9tb2QgPSB7Cgki aWZfdmV0aGVyIiwKCXZldGhlcl9tb2RfZXZlbnQsCgkwCn07CkRFQ0xBUkVfTU9E VUxFKGlmX3ZldGhlciwgdmV0aGVyX21vZCwgU0lfU1VCX1BTRVVETywgU0lfT1JE RVJfQU5ZKTsK ------------EQZm5yNQd8MHugbtzE49mf--