[PATCH]sbin/nos-tun WARNS=6, style

看板DFBSD_submit作者時間21年前 (2005/03/19 10:01), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
This is a MIME-formatted message. If you see this text it means that your E-mail software does not support MIME-formatted messages. --=_jive-20559-1111195846-0001-2 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit WARNS=6, style clean. a brief comment at the beginning of the patch further states what the patch does. please review it. --=_jive-20559-1111195846-0001-2 Content-Type: text/plain; charset=us-ascii; name="patch.nos-tun" Content-Transfer-Encoding: base64 Content-ID: <20050319093715.F607@localhost> Content-Description: Content-Disposition: attachment; filename="patch.nos-tun" MSkgIGJ1bXAgdXAgd2FybiBsZXZlbCB0byA2DQoyKSAgcmVvcmdhbml6ZSAi aW5jbHVkZSIgYWNjb3JkaW5nIHRvIHN0eWxlKDkpDQozKSAgY2hhbmdlIGZ1 bmN0aW9uIG5hbWUgdXBwZXIgY2FzZSBpbml0YWlsIGxldHRlciB0byBsb3dl ciBjYXNlDQo0KSAgY2xlYW4gdXAgZ2xvYmFsIHZhcmlhYmxlIHdoaXRlIHNw YWNlDQo1KSAgbW92ZSBmdW5jdGlvbiBuYW1lIHRvIGEgc2VwZXJhdGUgbGlu ZSwgd2hlcmUgZnVuY3Rpb24gaXMgZGVmaW5lZA0KNikgIHJlbW92ZSBvYnZp b3VzIGNvbW1lbnRzLCBmaXggc29tZSBjb21tZW50cw0KNykgIHJlbmFtZSBs b2NhbC12YXJpYmxlL2Z1bmN0aW9uLXBhcmFtZXRlciB0byBhdm9pZCBuYW1l IGNvbGxpc2lvbg0KOCkgIG1ha2UgY2VydGFpbiBmdW5jdGlvbiBwYXJhbWV0 ZXJzIGNvbnN0IHdoZW4gZnVuY3Rpb24gb3BlcmF0aW9uIGRvZXMgbm90IGNo YW5nZSB0aGVtDQo5KSAgYWRkIHdoaXRlIHNwYWNlIGJldHdlZW4gImlmIiBh bmQgIigiLiAgYWRkIHdoaXRlIHNwYWNlIGJldHdlZW4gZnVuY3Rpb24gY2Fs bHMgcGFyYW1ldGVyIGxpc3QuDQoxMCkgcmVtb3ZlIHVubmVjZXNzYXJ5ICJ7 IiAifSIgYWZ0ZXIgImlmIg0KMTEpIGNoYW5nZSAidXNhZ2UiIHN0cmluZyBh Y2NvcmRpbmcgdG8gc3R5bGUgYW5kIG1hbiBwYWdlDQoxMikgMiB3aGl0ZSBz cGFjZSBpbmRlbnQgLT4gMSB0YWIgaW5kZW50DQoNCkluZGV4OiBNYWtlZmls ZQ0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9vcHQvZGZf Y3ZzL3NyYy9zYmluL25vcy10dW4vTWFrZWZpbGUsdg0KcmV0cmlldmluZyBy ZXZpc2lvbiAxLjINCmRpZmYgLXUgLXIxLjIgTWFrZWZpbGUNCi0tLSBNYWtl ZmlsZQkxNyBKdW4gMjAwMyAwNDoyNzozNCAtMDAwMAkxLjINCisrKyBNYWtl ZmlsZQkxOCBNYXIgMjAwNSAxMzoxMjo1OSAtMDAwMA0KQEAgLTEsOCArMSw4 IEBADQogIyAkRnJlZUJTRDogc3JjL3NiaW4vbm9zLXR1bi9NYWtlZmlsZSx2 IDEuMS42LjEgMjAwMS8wNC8yNSAxMDo1ODo0NSBydSBFeHAgJA0KICMgJERy YWdvbkZseTogc3JjL3NiaW4vbm9zLXR1bi9NYWtlZmlsZSx2IDEuMiAyMDAz LzA2LzE3IDA0OjI3OjM0IGRpbGxvbiBFeHAgJA0KIA0KK1dBUk5TPz0JNg0K IFBST0c9CW5vcy10dW4NCiBNQU49CW5vcy10dW4uOA0KIA0KIC5pbmNsdWRl IDxic2QucHJvZy5taz4NCi0NCkluZGV4OiBub3MtdHVuLmMNCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0NClJDUyBmaWxlOiAvb3B0L2RmX2N2cy9zcmMvc2Jp bi9ub3MtdHVuL25vcy10dW4uYyx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEu NQ0KZGlmZiAtdSAtcjEuNSBub3MtdHVuLmMNCi0tLSBub3MtdHVuLmMJMTgg RGVjIDIwMDQgMjE6NDM6MzkgLTAwMDAJMS41DQorKysgbm9zLXR1bi5jCTE4 IE1hciAyMDA1IDEzOjEyOjU5IC0wMDAwDQpAQCAtNTQsMzE1ICs1NCwzMDAg QEANCiAgKiBNYXIuIDIzIDE5OTkgYnkgSXNhbyBTRUtJIDxpc2VraUBnb25n b24uY29tPg0KICAqIEkgYWRkZWQgYSBuZXcgZmxhZyBmb3IgaXAgcHJvdG9j b2wgbnVtYmVyLg0KICAqIFdlIGFyZSB1c2luZyA0IGFzIHByb3RvY29sIG51 bWJlciBpbiBhbXByLm9yZy4NCi0gKg0KICAqLw0KIA0KLSNpbmNsdWRlIDxm Y250bC5oPg0KLSNpbmNsdWRlIDxuZXRkYi5oPg0KLSNpbmNsdWRlIDxzdGRp by5oPg0KLSNpbmNsdWRlIDxzdGRsaWIuaD4NCi0jaW5jbHVkZSA8c3RyaW5n Lmg+DQotI2luY2x1ZGUgPHN5c2xvZy5oPg0KKyNpbmNsdWRlIDxzeXMvdHlw ZXMuaD4NCiAjaW5jbHVkZSA8c3lzL3NpZ25hbC5oPg0KICNpbmNsdWRlIDxz eXMvc29ja2V0Lmg+DQogI2luY2x1ZGUgPHN5cy9pb2N0bC5oPg0KKw0KICNp bmNsdWRlIDxuZXRpbmV0L2luLmg+DQogI2luY2x1ZGUgPG5ldGluZXQvaW5f c3lzdG0uaD4NCiAjaW5jbHVkZSA8bmV0aW5ldC9pcC5oPg0KICNpbmNsdWRl IDxuZXQvaWYuaD4NCiAjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+DQorDQorI2lu Y2x1ZGUgPGZjbnRsLmg+DQorI2luY2x1ZGUgPG5ldGRiLmg+DQorI2luY2x1 ZGUgPHN0ZGlvLmg+DQorI2luY2x1ZGUgPHN0ZGxpYi5oPg0KKyNpbmNsdWRl IDxzdHJpbmcuaD4NCisjaW5jbHVkZSA8c3lzbG9nLmg+DQogI2luY2x1ZGUg PHVuaXN0ZC5oPg0KIA0KLS8qIFR1bm5lbCBpbnRlcmZhY2UgY29uZmlndXJh dGlvbiBzdHVmZiAqLw0KLXN0YXRpYyBzdHJ1Y3QgaWZhbGlhc3JlcSBpZnJh Ow0KLXN0YXRpYyBzdHJ1Y3QgaWZyZXEgaWZycTsNCitzdGF0aWMgc3RydWN0 IGlmYWxpYXNyZXEJaWZyYTsNCitzdGF0aWMgc3RydWN0IGlmcmVxCQlpZnJx Ow0KKw0KK3N0YXRpYyBpbnQJbmV0OwkvKiBzb2NrZXQgZGVzY3JpcHRvciAq Lw0KK3N0YXRpYyBpbnQJdHVuOwkvKiB0dW5uZWwgZGVzY3JpcHRvciAqLw0K IA0KLS8qIEdsb2JhbCBkZXNjcmlwdG9ycyAqLw0KLWludCBuZXQ7ICAgICAg ICAgICAgICAgICAgICAgICAgICAvKiBzb2NrZXQgZGVzY3JpcHRvciAqLw0K LWludCB0dW47ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0dW5uZWwg ZGVzY3JpcHRvciAqLw0KK3N0YXRpYyB2b2lkCXVzYWdlKHZvaWQpOw0KIA0K LXN0YXRpYyB2b2lkIHVzYWdlKHZvaWQpOw0KIA0KLWludCBTZXRfYWRkcmVz cyhjaGFyICphZGRyLCBzdHJ1Y3Qgc29ja2FkZHJfaW4gKnNpbikNCitzdGF0 aWMgaW50DQorc2V0X2FkZHJlc3MoY29uc3QgY2hhciAqYWRkciwgc3RydWN0 IHNvY2thZGRyX2luICppbikNCiB7DQotICBzdHJ1Y3QgaG9zdGVudCAqaHA7 DQorCXN0cnVjdCBob3N0ZW50ICpocDsNCiANCi0gIGJ6ZXJvKChjaGFyICop c2luLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyKSk7DQotICBzaW4tPnNpbl9m YW1pbHkgPSBBRl9JTkVUOw0KLSAgaWYoKHNpbi0+c2luX2FkZHIuc19hZGRy ID0gaW5ldF9hZGRyKGFkZHIpKSA9PSAodV9sb25nKS0xKSB7DQotICAgIGhw ID0gZ2V0aG9zdGJ5bmFtZShhZGRyKTsNCi0gICAgaWYgKCFocCkgew0KLSAg ICAgIHN5c2xvZyhMT0dfRVJSLCJ1bmtub3duIGhvc3QgJXMiLCBhZGRyKTsN Ci0gICAgICByZXR1cm4gMTsNCi0gICAgfQ0KLSAgICBzaW4tPnNpbl9mYW1p bHkgPSBocC0+aF9hZGRydHlwZTsNCi0gICAgYmNvcHkoaHAtPmhfYWRkciwg KGNhZGRyX3QpJnNpbi0+c2luX2FkZHIsIGhwLT5oX2xlbmd0aCk7DQotICB9 DQotICByZXR1cm4gMDsNCisJYnplcm8oaW4sIHNpemVvZihzdHJ1Y3Qgc29j a2FkZHIpKTsNCisJaW4tPnNpbl9mYW1pbHkgPSBBRl9JTkVUOw0KKwlpZiAo KGluLT5zaW5fYWRkci5zX2FkZHIgPSBpbmV0X2FkZHIoYWRkcikpID09IElO QUREUl9OT05FKSB7DQorCQlocCA9IGdldGhvc3RieW5hbWUoYWRkcik7DQor CQlpZiAoIWhwKSB7DQorCQkJc3lzbG9nKExPR19FUlIsICJ1bmtub3duIGhv c3QgJXMiLCBhZGRyKTsNCisJCQlyZXR1cm4gMTsNCisJCX0NCisJCWluLT5z aW5fZmFtaWx5ID0gaHAtPmhfYWRkcnR5cGU7DQorCQliY29weShocC0+aF9h ZGRyLCAmaW4tPnNpbl9hZGRyLCBocC0+aF9sZW5ndGgpOw0KKwl9DQorCXJl dHVybiAwOw0KIH0NCiANCi1pbnQgdHVuX29wZW4oY2hhciAqZGV2bmFtZSwg c3RydWN0IHNvY2thZGRyICpvdXJhZGRyLCBjaGFyICp0aGVpcmFkZHIpDQor c3RhdGljIGludA0KK3R1bl9vcGVuKGNvbnN0IGNoYXIgKmRldl9uYW1lLCBj b25zdCBzdHJ1Y3Qgc29ja2FkZHIgKm91cmFkZHIsDQorCSBjb25zdCBjaGFy ICp0aGVpcmFkZHIpDQogew0KLSAgaW50IHM7DQotICBzdHJ1Y3Qgc29ja2Fk ZHJfaW4gKnNpbjsNCisJaW50IHM7DQorCXN0cnVjdCBzb2NrYWRkcl9pbiAq aW47DQorDQorCS8qIE9wZW4gdHVuIGRldmljZSAqLw0KKwl0dW4gPSBvcGVu KGRldl9uYW1lLCBPX1JEV1IpOw0KKwlpZiAodHVuIDwgMCkgew0KKwkJc3lz bG9nKExPR19FUlIsICJjYW4ndCBvcGVuICVzIC0gJW0iLCBkZXZfbmFtZSk7 DQorCQlyZXR1cm4gMTsNCisJfQ0KKw0KKwkvKiBOYW1lIHRoZSBpbnRlcmZh Y2UgKi8NCisJYnplcm8oJmlmcmEsIHNpemVvZihpZnJhKSk7DQorCWJ6ZXJv KCZpZnJxLCBzaXplb2YoaWZycSkpOw0KKwlzdHJuY3B5KGlmcmEuaWZyYV9u YW1lLCBkZXZfbmFtZSArIDUsIElGTkFNU0laKTsNCisJc3RybmNweShpZnJx Lmlmcl9uYW1lLCBkZXZfbmFtZSArIDUsIElGTkFNU0laKTsNCisNCisJcyA9 IHNvY2tldChBRl9JTkVULCBTT0NLX0RHUkFNLCAwKTsNCisJaWYgKHMgPCAw KSB7DQorCQlzeXNsb2coTE9HX0VSUiwgImNhbid0IG9wZW4gc29ja2V0IC0g JW0iKTsNCisJCWdvdG8gdHVuY19yZXR1cm47DQorCX0NCisNCisJLyoNCisJ ICogRGVsZXRlIChwcmV2aW91cykgYWRkcmVzc2VzIGZvciBpbnRlcmZhY2UN CisJICoNCisJICogWFhYDQorCSAqIE9uIEZyZWVCU0QgdGhpcyBpb2N0bCBy ZXR1cm5zIGVycm9yDQorCSAqIHdoZW4gdHVuTiBoYXZlIG5vIGFkZHJlc3Nl cywgc28gLSBsb2cgYW5kIGlnbm9yZSBpdC4NCisJICovDQorCWlmIChpb2N0 bChzLCBTSU9DRElGQUREUiwgJmlmcmEpIDwgMCkNCisJCXN5c2xvZyhMT0df RVJSLCAiU0lPQ0RJRkFERFIgLSAlbSIpOw0KKw0KKwkvKiBTZXQgaW50ZXJm YWNlIGFkZHJlc3MgKi8NCisJaW4gPSAoc3RydWN0IHNvY2thZGRyX2luICop JmlmcmEuaWZyYV9hZGRyOw0KKwliY29weShvdXJhZGRyLCBpbiwgc2l6ZW9m KHN0cnVjdCBzb2NrYWRkcl9pbikpOw0KKwlpbi0+c2luX2xlbiA9IHNpemVv ZigqaW4pOw0KKw0KKwkvKiBTZXQgZGVzdGluYXRpb24gYWRkcmVzcyAqLw0K KwlpbiA9IChzdHJ1Y3Qgc29ja2FkZHJfaW4gKikmaWZyYS5pZnJhX2Jyb2Fk YWRkcjsNCisJaWYgKHNldF9hZGRyZXNzKHRoZWlyYWRkciwgaW4pKSB7DQor CQlzeXNsb2coTE9HX0VSUiwgImJhZCBkZXN0aW5hdGlvbiBhZGRyZXNzOiAl cyIsIHRoZWlyYWRkcik7DQorCQlnb3RvIHN0dW5jX3JldHVybjsNCisJfQ0K Kwlpbi0+c2luX2xlbiA9IHNpemVvZigqaW4pOw0KKw0KKwlpZiAoaW9jdGwo cywgU0lPQ0FJRkFERFIsICZpZnJhKSA8IDApIHsNCisJCXN5c2xvZyhMT0df RVJSLCAiY2FuJ3Qgc2V0IGludGVyZmFjZSBhZGRyZXNzIC0gJW0iKTsNCisJ CWdvdG8gc3R1bmNfcmV0dXJuOw0KKwl9DQorDQorCS8qIEJyaW5nIHVwIHRo ZSBpbnRlcmZhY2UgKi8NCisJaWYgKGlvY3RsKHMsIFNJT0NHSUZGTEFHUywg JmlmcnEpIDwgMCkgew0KKwkJc3lzbG9nKExPR19FUlIsICJjYW4ndCBnZXQg aW50ZXJmYWNlIGZsYWdzIC0gJW0iKTsNCisJCWdvdG8gc3R1bmNfcmV0dXJu Ow0KKwl9DQorCWlmcnEuaWZyX2ZsYWdzIHw9IElGRl9VUDsNCisJaWYgKCEo aW9jdGwocywgU0lPQ1NJRkZMQUdTLCAmaWZycSkgPCAwKSkgew0KKwkJY2xv c2Uocyk7DQorCQlyZXR1cm4gMDsNCisJfQ0KKwlzeXNsb2coTE9HX0VSUiwg ImNhbid0IHNldCBpbnRlcmZhY2UgVVAgLSAlbSIpOw0KIA0KLSAgLyogT3Bl biB0dW4gZGV2aWNlICovDQotICB0dW4gPSBvcGVuIChkZXZuYW1lLCBPX1JE V1IpOw0KLSAgaWYgKHR1biA8IDApIHsNCi0gICAgc3lzbG9nKExPR19FUlIs ImNhbid0IG9wZW4gJXMgLSAlbSIsZGV2bmFtZSk7DQotICAgIHJldHVybigx KTsNCi0gIH0NCi0NCi0gIC8qDQotICAgKiBBdCBmaXJzdCwgbmFtZSB0aGUg aW50ZXJmYWNlLg0KLSAgICovDQotICBiemVybygoY2hhciAqKSZpZnJhLCBz aXplb2YoaWZyYSkpOw0KLSAgYnplcm8oKGNoYXIgKikmaWZycSwgc2l6ZW9m KGlmcnEpKTsNCi0NCi0gIHN0cm5jcHkoaWZycS5pZnJfbmFtZSwgZGV2bmFt ZSs1LCBJRk5BTVNJWik7DQotICBzdHJuY3B5KGlmcmEuaWZyYV9uYW1lLCBk ZXZuYW1lKzUsIElGTkFNU0laKTsNCi0NCi0gIHMgPSBzb2NrZXQoQUZfSU5F VCwgU09DS19ER1JBTSwgMCk7DQotICBpZiAocyA8IDApIHsNCi0gICAgc3lz bG9nKExPR19FUlIsImNhbid0IG9wZW4gc29ja2V0IC0gJW0iKTsNCi0gICAg Z290byB0dW5jX3JldHVybjsNCi0gIH0NCi0NCi0gIC8qDQotICAgKiAgRGVs ZXRlIChwcmV2aW91cykgYWRkcmVzc2VzIGZvciBpbnRlcmZhY2UNCi0gICAq DQotICAgKiAgISEhIQ0KLSAgICogIE9uIEZyZWVCU0QgdGhpcyBpb2N0bCBy ZXR1cm5zIGVycm9yDQotICAgKiAgd2hlbiB0dW5OIGhhdmUgbm8gYWRkcmVz c2VzLCBzbyAtIGxvZyBhbmQgaWdub3JlIGl0Lg0KLSAgICoNCi0gICAqLw0K LSAgaWYgKGlvY3RsKHMsIFNJT0NESUZBRERSLCAmaWZyYSkgPCAwKSB7DQot ICAgIHN5c2xvZyhMT0dfRVJSLCJTSU9DRElGQUREUiAtICVtIik7DQotICB9 DQotDQotICAvKg0KLSAgICogIFNldCBpbnRlcmZhY2UgYWRkcmVzcw0KLSAg ICovDQotICBzaW4gPSAoc3RydWN0IHNvY2thZGRyX2luICopJihpZnJhLmlm cmFfYWRkcik7DQotICBiY29weShvdXJhZGRyLCBzaW4sIHNpemVvZihzdHJ1 Y3Qgc29ja2FkZHJfaW4pKTsNCi0gIHNpbi0+c2luX2xlbiA9IHNpemVvZigq c2luKTsNCi0NCi0gIC8qDQotICAgKiAgU2V0IGRlc3RpbmF0aW9uIGFkZHJl c3MNCi0gICAqLw0KLSAgc2luID0gKHN0cnVjdCBzb2NrYWRkcl9pbiAqKSYo aWZyYS5pZnJhX2Jyb2FkYWRkcik7DQotICBpZihTZXRfYWRkcmVzcyh0aGVp cmFkZHIsc2luKSkgew0KLSAgICBzeXNsb2coTE9HX0VSUiwiYmFkIGRlc3Rp bmF0aW9uIGFkZHJlc3M6ICVzIix0aGVpcmFkZHIpOw0KLSAgICBnb3RvIHN0 dW5jX3JldHVybjsNCi0gIH0NCi0gIHNpbi0+c2luX2xlbiA9IHNpemVvZigq c2luKTsNCi0NCi0gIGlmIChpb2N0bChzLCBTSU9DQUlGQUREUiwgJmlmcmEp IDwgMCkgew0KLSAgICBzeXNsb2coTE9HX0VSUiwiY2FuJ3Qgc2V0IGludGVy ZmFjZSBhZGRyZXNzIC0gJW0iKTsNCi0gICAgZ290byBzdHVuY19yZXR1cm47 DQotICB9DQotDQotICAvKg0KLSAgICogIE5vdywgYnJpbmcgdXAgdGhlIGlu dGVyZmFjZS4NCi0gICAqLw0KLSAgaWYgKGlvY3RsKHMsIFNJT0NHSUZGTEFH UywgJmlmcnEpIDwgMCkgew0KLSAgICBzeXNsb2coTE9HX0VSUiwiY2FuJ3Qg Z2V0IGludGVyZmFjZSBmbGFncyAtICVtIik7DQotICAgIGdvdG8gc3R1bmNf cmV0dXJuOw0KLSAgfQ0KLQ0KLSAgaWZycS5pZnJfZmxhZ3MgfD0gSUZGX1VQ Ow0KLSAgaWYgKCEoaW9jdGwocywgU0lPQ1NJRkZMQUdTLCAmaWZycSkgPCAw KSkgew0KLSAgICBjbG9zZShzKTsNCi0gICAgcmV0dXJuKDApOw0KLSAgfQ0K LSAgc3lzbG9nKExPR19FUlIsImNhbid0IHNldCBpbnRlcmZhY2UgVVAgLSAl bSIpOw0KIHN0dW5jX3JldHVybjoNCi0gIGNsb3NlKHMpOw0KKwljbG9zZShz KTsNCiB0dW5jX3JldHVybjoNCi0gIGNsb3NlKHR1bik7DQotICByZXR1cm4o MSk7DQorCWNsb3NlKHR1bik7DQorCXJldHVybiAxOw0KIH0NCiANCi12b2lk IEZpbmlzaChpbnQgc2lnbnVtKQ0KK3N0YXRpYyB2b2lkDQorZmluaXNoKGlu dCBzaWdudW0pDQogew0KLSAgaW50IHM7DQorCWludCBzOw0KIA0KLSAgc3lz bG9nKExPR19JTkZPLCJleGl0aW5nIik7DQorCXN5c2xvZyhMT0dfSU5GTywg ImV4aXRpbmciKTsNCiANCi0gIGNsb3NlKG5ldCk7DQorCWNsb3NlKG5ldCk7 DQorDQorCXMgPSBzb2NrZXQoQUZfSU5FVCwgU09DS19ER1JBTSwgMCk7DQor CWlmIChzIDwgMCkgew0KKwkJc3lzbG9nKExPR19FUlIsICJjYW4ndCBvcGVu IHNvY2tldCAtICVtIik7DQorCQlnb3RvIGNsb3NpbmdfdHVuOw0KKwl9DQor DQorCS8qIFNodXQgZG93biBpbnRlcmZhY2UgKi8NCisJaWYgKGlvY3RsKHMs IFNJT0NHSUZGTEFHUywgJmlmcnEpIDwgMCkgew0KKwkJc3lzbG9nKExPR19F UlIsICJjYW4ndCBnZXQgaW50ZXJmYWNlIGZsYWdzIC0gJW0iKTsNCisJCWdv dG8gY2xvc2luZ19mZHM7DQorCX0NCisJaWZycS5pZnJfZmxhZ3MgJj0gfihJ RkZfVVAgfCBJRkZfUlVOTklORyk7DQorCWlmIChpb2N0bChzLCBTSU9DU0lG RkxBR1MsICZpZnJxKSA8IDApIHsNCisJCXN5c2xvZyhMT0dfRVJSLCJjYW4n dCBzZXQgaW50ZXJmYWNlIERPV04gLSAlbSIpOw0KKwkJZ290byBjbG9zaW5n X2ZkczsNCisJfQ0KKw0KKwkvKiBEZWxldGUgYWRkcmVzc2VzIGZvciBpbnRl cmZhY2UgKi8NCisJYnplcm8oJmlmcmEuaWZyYV9hZGRyLCBzaXplb2YoaWZy YS5pZnJhX2FkZHIpKTsNCisJYnplcm8oJmlmcmEuaWZyYV9icm9hZGFkZHIs IHNpemVvZihpZnJhLmlmcmFfYWRkcikpOw0KKwliemVybygmaWZyYS5pZnJh X21hc2ssIHNpemVvZihpZnJhLmlmcmFfYWRkcikpOw0KKwlpZiAoaW9jdGwo cywgU0lPQ0RJRkFERFIsICZpZnJhKSA8IDApDQorCQlzeXNsb2coTE9HX0VS UiwgImNhbid0IGRlbGV0ZSBpbnRlcmZhY2UncyBhZGRyZXNzZXMgLSAlbSIp Ow0KIA0KLSAgcyA9IHNvY2tldChBRl9JTkVULCBTT0NLX0RHUkFNLCAwKTsN Ci0gIGlmIChzIDwgMCkgew0KLSAgICBzeXNsb2coTE9HX0VSUiwiY2FuJ3Qg b3BlbiBzb2NrZXQgLSAlbSIpOw0KLSAgICBnb3RvIGNsb3NpbmdfdHVuOw0K LSAgfQ0KLQ0KLSAgLyoNCi0gICAqICBTaHV0IGRvd24gaW50ZXJmYWNlLg0K LSAgICovDQotICBpZiAoaW9jdGwocywgU0lPQ0dJRkZMQUdTLCAmaWZycSkg PCAwKSB7DQotICAgIHN5c2xvZyhMT0dfRVJSLCJjYW4ndCBnZXQgaW50ZXJm YWNlIGZsYWdzIC0gJW0iKTsNCi0gICAgZ290byBjbG9zaW5nX2ZkczsNCi0g IH0NCi0NCi0gIGlmcnEuaWZyX2ZsYWdzICY9IH4oSUZGX1VQfElGRl9SVU5O SU5HKTsNCi0gIGlmIChpb2N0bChzLCBTSU9DU0lGRkxBR1MsICZpZnJxKSA8 IDApIHsNCi0gICAgc3lzbG9nKExPR19FUlIsImNhbid0IHNldCBpbnRlcmZh Y2UgRE9XTiAtICVtIik7DQotICAgIGdvdG8gY2xvc2luZ19mZHM7DQotICB9 DQotDQotICAvKg0KLSAgICogIERlbGV0ZSBhZGRyZXNzZXMgZm9yIGludGVy ZmFjZQ0KLSAgICovDQotICBiemVybygmaWZyYS5pZnJhX2FkZHIsIHNpemVv ZihpZnJhLmlmcmFfYWRkcikpOw0KLSAgYnplcm8oJmlmcmEuaWZyYV9icm9h ZGFkZHIsIHNpemVvZihpZnJhLmlmcmFfYWRkcikpOw0KLSAgYnplcm8oJmlm cmEuaWZyYV9tYXNrLCBzaXplb2YoaWZyYS5pZnJhX2FkZHIpKTsNCi0gIGlm IChpb2N0bChzLCBTSU9DRElGQUREUiwgJmlmcmEpIDwgMCkgew0KLSAgICBz eXNsb2coTE9HX0VSUiwiY2FuJ3QgZGVsZXRlIGludGVyZmFjZSdzIGFkZHJl c3NlcyAtICVtIik7DQotICB9DQogY2xvc2luZ19mZHM6DQotICBjbG9zZShz KTsNCisJY2xvc2Uocyk7DQogY2xvc2luZ190dW46DQotICBjbG9zZSh0dW4p Ow0KLSAgY2xvc2Vsb2coKTsNCi0gIGV4aXQoc2lnbnVtKTsNCisJY2xvc2Uo dHVuKTsNCisJY2xvc2Vsb2coKTsNCisJZXhpdChzaWdudW0pOw0KIH0NCiAN Ci1pbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQ0KK2ludA0KK21h aW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQ0KIHsNCi0gIGludCAgYywgbGVu LCBpcG9mZjsNCisJaW50ICBjLCBsZW4sIGlwb2ZmOw0KIA0KLSAgY2hhciAq ZGV2bmFtZSA9IE5VTEw7DQotICBjaGFyICpwb2ludF90byA9IE5VTEw7DQot ICBjaGFyICp0b19wb2ludCA9IE5VTEw7DQotICBjaGFyICp0YXJnZXQ7DQot ICBjaGFyICpwcm90b2NvbCA9IE5VTEw7DQotICBpbnQgcHJvdG51bTsNCi0N Ci0gIHN0cnVjdCBzb2NrYWRkciB0X2xhZGRyOyAgICAgICAgICAvKiBTb3Vy Y2UgYWRkcmVzcyBvZiB0dW5uZWwgKi8NCi0gIHN0cnVjdCBzb2NrYWRkciB3 aGVyZXRvOyAgICAgICAgICAvKiBEZXN0aW5hdGlvbiBvZiB0dW5uZWwgKi8N Ci0gIHN0cnVjdCBzb2NrYWRkcl9pbiAqdG87DQotDQotICBjaGFyIGJ1Zlsw eDIwMDBdOyAgICAgICAgICAgICAgICAgLyogUGFja2V0cyBidWZmZXIgKi8N Ci0gIHN0cnVjdCBpcCAqaXAgPSAoc3RydWN0IGlwICopYnVmOw0KLQ0KLSAg ZmRfc2V0IHJmZHMsIHdmZHMsIGVmZHM7ICAgICAgICAgIC8qIEZpbGUgZGVz Y3JpcHRvcnMgZm9yIHNlbGVjdCgpICovDQotICBpbnQgbmZkczsgICAgICAg ICAgICAgICAgICAgICAgICAgLyogUmV0dXJuIGZyb20gc2VsZWN0KCkgKi8N Ci0NCi0NCi0gIHdoaWxlICgoYyA9IGdldG9wdChhcmdjLCBhcmd2LCAiZDpz OnQ6cDoiKSkgIT0gLTEpIHsNCi0gICAgc3dpdGNoIChjKSB7DQotICAgIGNh c2UgJ2QnOg0KLSAgICAgIHRvX3BvaW50ID0gb3B0YXJnOw0KLSAgICAgIGJy ZWFrOw0KLSAgICBjYXNlICdzJzoNCi0gICAgICBwb2ludF90byA9IG9wdGFy ZzsNCi0gICAgICBicmVhazsNCi0gICAgY2FzZSAndCc6DQotICAgICAgZGV2 bmFtZSA9IG9wdGFyZzsNCi0gICAgICBicmVhazsNCi0gICAgY2FzZSAncCc6 DQotICAgICAgcHJvdG9jb2wgPSBvcHRhcmc7DQotICAgICAgYnJlYWs7DQot ICAgIH0NCi0gIH0NCi0gIGFyZ2MgLT0gb3B0aW5kOw0KLSAgYXJndiArPSBv cHRpbmQ7DQotDQotICBpZiAoYXJnYyAhPSAxIHx8IChkZXZuYW1lID09IE5V TEwpIHx8DQotICAgICAgKHBvaW50X3RvID09IE5VTEwpIHx8ICh0b19wb2lu dCA9PSBOVUxMKSkgew0KLSAgICB1c2FnZSgpOw0KLSAgfQ0KLQ0KLSAgaWYo cHJvdG9jb2wgPT0gTlVMTCkNCi0gICAgICBwcm90bnVtID0gOTQ7DQotICBl bHNlDQotICAgICAgcHJvdG51bSA9IGF0b2kocHJvdG9jb2wpOw0KLQ0KLSAg dGFyZ2V0ID0gKmFyZ3Y7DQotDQotICAvKiBFc3RhYmxpc2ggbG9nZ2luZyB0 aHJvdWdoICdzeXNsb2cnICovDQotICBvcGVubG9nKCJub3MtdHVuIiwgTE9H X1BJRCwgTE9HX0RBRU1PTik7DQotDQotICBpZihTZXRfYWRkcmVzcyhwb2lu dF90bywgKHN0cnVjdCBzb2NrYWRkcl9pbiAqKSZ0X2xhZGRyKSkgew0KLSAg ICBjbG9zZWxvZygpOw0KLSAgICBleGl0KDIpOw0KLSAgfQ0KLQ0KLSAgaWYo dHVuX29wZW4oZGV2bmFtZSwgJnRfbGFkZHIsIHRvX3BvaW50KSkgew0KLSAg ICBjbG9zZWxvZygpOw0KLSAgICBleGl0KDMpOw0KLSAgfQ0KLQ0KLSAgdG8g PSAoc3RydWN0IHNvY2thZGRyX2luICopJndoZXJldG87DQotICBpZihTZXRf YWRkcmVzcyh0YXJnZXQsIHRvKSkNCi0gICAgRmluaXNoKDQpOw0KLQ0KLSAg aWYgKChuZXQgPSBzb2NrZXQoQUZfSU5FVCwgU09DS19SQVcsIHByb3RudW0p KSA8IDApIHsNCi0gICAgc3lzbG9nKExPR19FUlIsImNhbid0IG9wZW4gc29j a2V0IC0gJW0iKTsNCi0gICAgRmluaXNoKDUpOw0KLSAgfQ0KLQ0KLSAgaWYg KGNvbm5lY3QobmV0LCZ3aGVyZXRvLHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJf aW4pKSA8IDAgKSB7DQotICAgIHN5c2xvZyhMT0dfRVJSLCJjYW4ndCBjb25u ZWN0IHRvIHRhcmdldCAtICVtIik7DQotICAgIGNsb3NlKG5ldCk7DQotICAg IEZpbmlzaCg2KTsNCi0gIH0NCi0NCi0gIC8qICBEZW1vbml6ZSBpdCAqLw0K LSAgZGFlbW9uKDAsMCk7DQotDQotICAvKiBJbnN0YWxsIHNpZ25hbCBoYW5k bGVycyAqLw0KLSAgc2lnbmFsKFNJR0hVUCxGaW5pc2gpOw0KLSAgc2lnbmFs KFNJR0lOVCxGaW5pc2gpOw0KLSAgc2lnbmFsKFNJR1RFUk0sRmluaXNoKTsN Ci0NCi0gIGZvciAoOzspIHsNCi0gICAgLyogU2V0IGZpbGUgZGVzY3JpcHRv cnMgZm9yIHNlbGVjdCgpICovDQotICAgIEZEX1pFUk8oJnJmZHMpOyBGRF9a RVJPKCZ3ZmRzKTsgRkRfWkVSTygmZWZkcyk7DQotICAgIEZEX1NFVCh0dW4s JnJmZHMpOyBGRF9TRVQobmV0LCZyZmRzKTsNCi0NCi0gICAgbmZkcyA9IHNl bGVjdChuZXQrMTAsJnJmZHMsJndmZHMsJmVmZHMsTlVMTCk7DQotICAgIGlm KG5mZHMgPCAwKSB7DQotICAgICAgc3lzbG9nKExPR19FUlIsImludGVycnVw dGVkIHNlbGVjdCIpOw0KLSAgICAgIGNsb3NlKG5ldCk7DQotICAgICAgRmlu aXNoKDcpOw0KLSAgICB9DQotICAgIGlmKG5mZHMgPT0gMCkgeyAgICAgICAg IC8qIEltcG9zc2libGUgPyAqLw0KLSAgICAgIHN5c2xvZyhMT0dfRVJSLCJ0 aW1lb3V0IGluIHNlbGVjdCIpOw0KLSAgICAgIGNsb3NlKG5ldCk7DQotICAg ICAgRmluaXNoKDgpOw0KLSAgICB9DQotDQotDQotICAgIGlmKEZEX0lTU0VU KG5ldCwmcmZkcykpIHsNCi0gICAgICAvKiBSZWFkIGZyb20gc29ja2V0IC4u LiAqLw0KLSAgICAgIGxlbiA9IHJlYWQobmV0LCBidWYsIHNpemVvZihidWYp KTsNCi0gICAgICAvKiBDaGVjayBpZiB0aGlzIGlzICJvdXIiIHBhY2tldCAq Lw0KLSAgICAgIGlmKChpcC0+aXBfc3JjKS5zX2FkZHIgPT0gKHRvLT5zaW5f YWRkcikuc19hZGRyKSB7DQotCS8qIC4uLiBza2lwIGVuY2Fwc3VsYXRpb24g aGVhZGVycyAuLi4gKi8NCi0JaXBvZmYgPSAoaXAtPmlwX2hsIDw8IDIpOw0K LQkvKiAuLi4gYW5kIHdyaXRlIHRvIHR1bi1kZXZpY2UgKi8NCi0Jd3JpdGUo dHVuLGJ1ZitpcG9mZixsZW4taXBvZmYpOw0KLSAgICAgIH0NCi0gICAgfQ0K LQ0KLSAgICBpZihGRF9JU1NFVCh0dW4sJnJmZHMpKSB7DQotICAgICAgLyog UmVhZCBmcm9tIHR1biAuLi4gKi8NCi0gICAgICBsZW4gPSByZWFkKHR1biwg YnVmLCBzaXplb2YoYnVmKSk7DQotICAgICAgLyogLi4uIGFuZCBzZW5kIHRv IG5ldHdvcmsgKi8NCi0gICAgICBpZihzZW5kKG5ldCwgYnVmLCBsZW4sMCkg PD0gMCkgew0KLQlzeXNsb2coTE9HX0VSUiwiY2FuJ3Qgc2VuZCAtICVtIik7 DQotICAgICAgfQ0KLSAgICB9DQotICB9DQorCWNoYXIgKmRldl9uYW1lID0g TlVMTDsNCisJY2hhciAqcG9pbnRfdG8gPSBOVUxMOw0KKwljaGFyICp0b19w b2ludCA9IE5VTEw7DQorCWNoYXIgKnRhcmdldDsNCisJY2hhciAqcHJvdG9j b2wgPSBOVUxMOw0KKwlpbnQgcHJvdG51bTsNCisNCisJc3RydWN0IHNvY2th ZGRyIHRfbGFkZHI7CS8qIFNvdXJjZSBhZGRyZXNzIG9mIHR1bm5lbCAqLw0K KwlzdHJ1Y3Qgc29ja2FkZHIgd2hlcmV0bzsJLyogRGVzdGluYXRpb24gb2Yg dHVubmVsICovDQorCXN0cnVjdCBzb2NrYWRkcl9pbiAqdG87DQorDQorCWNo YXIgYnVmWzB4MjAwMF07CQkvKiBQYWNrZXRzIGJ1ZmZlciAqLw0KKwlzdHJ1 Y3QgaXAgKmlwID0gKHN0cnVjdCBpcCAqKWJ1ZjsNCisNCisJZmRfc2V0IHJm ZHMsIHdmZHMsIGVmZHM7DQorCWludCBuZmRzOw0KKw0KKw0KKwl3aGlsZSAo KGMgPSBnZXRvcHQoYXJnYywgYXJndiwgImQ6czp0OnA6IikpICE9IC0xKSB7 DQorCQlzd2l0Y2ggKGMpIHsNCisJCWNhc2UgJ2QnOg0KKwkJCXRvX3BvaW50 ID0gb3B0YXJnOw0KKwkJCWJyZWFrOw0KKwkJY2FzZSAncyc6DQorCQkJcG9p bnRfdG8gPSBvcHRhcmc7DQorCQkJYnJlYWs7DQorCQljYXNlICd0JzoNCisJ CQlkZXZfbmFtZSA9IG9wdGFyZzsNCisJCQlicmVhazsNCisJCWNhc2UgJ3An Og0KKwkJCXByb3RvY29sID0gb3B0YXJnOw0KKwkJCWJyZWFrOw0KKwkJfQ0K Kwl9DQorCWFyZ2MgLT0gb3B0aW5kOw0KKwlhcmd2ICs9IG9wdGluZDsNCisN CisJaWYgKGFyZ2MgIT0gMSB8fCBkZXZfbmFtZSA9PSBOVUxMIHx8DQorCSAg ICBwb2ludF90byA9PSBOVUxMIHx8IHRvX3BvaW50ID09IE5VTEwpDQorCQl1 c2FnZSgpOw0KKw0KKwlpZiAocHJvdG9jb2wgPT0gTlVMTCkNCisJCXByb3Ru dW0gPSA5NDsNCisJZWxzZQ0KKwkJcHJvdG51bSA9IGF0b2kocHJvdG9jb2wp Ow0KKw0KKwl0YXJnZXQgPSAqYXJndjsNCisNCisJb3BlbmxvZygibm9zLXR1 biIsIExPR19QSUQsIExPR19EQUVNT04pOw0KKw0KKwlpZiAoc2V0X2FkZHJl c3MocG9pbnRfdG8sIChzdHJ1Y3Qgc29ja2FkZHJfaW4gKikmdF9sYWRkcikp IHsNCisJCWNsb3NlbG9nKCk7DQorCQlleGl0KDIpOw0KKwl9DQorDQorCWlm KHR1bl9vcGVuKGRldl9uYW1lLCAmdF9sYWRkciwgdG9fcG9pbnQpKSB7DQor CQljbG9zZWxvZygpOw0KKwkJZXhpdCgzKTsNCisJfQ0KKw0KKwl0byA9IChz dHJ1Y3Qgc29ja2FkZHJfaW4gKikmd2hlcmV0bzsNCisJaWYoc2V0X2FkZHJl c3ModGFyZ2V0LCB0bykpDQorCQlmaW5pc2goNCk7DQorDQorCWlmICgobmV0 ID0gc29ja2V0KEFGX0lORVQsIFNPQ0tfUkFXLCBwcm90bnVtKSkgPCAwKSB7 DQorCQlzeXNsb2coTE9HX0VSUiwgImNhbid0IG9wZW4gc29ja2V0IC0gJW0i KTsNCisJCWZpbmlzaCg1KTsNCisJfQ0KKw0KKwlpZiAoY29ubmVjdChuZXQs ICZ3aGVyZXRvLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSkgPCAwICkg ew0KKwkJc3lzbG9nKExPR19FUlIsICJjYW4ndCBjb25uZWN0IHRvIHRhcmdl dCAtICVtIik7DQorCQljbG9zZShuZXQpOw0KKwkJZmluaXNoKDYpOw0KKwl9 DQorDQorCWRhZW1vbigwLCAwKTsNCisNCisJc2lnbmFsKFNJR0hVUCwgZmlu aXNoKTsNCisJc2lnbmFsKFNJR0lOVCwgZmluaXNoKTsNCisJc2lnbmFsKFNJ R1RFUk0sIGZpbmlzaCk7DQorDQorCWZvciAoOzspIHsNCisJCUZEX1pFUk8o JnJmZHMpOw0KKwkJRkRfWkVSTygmd2Zkcyk7DQorCQlGRF9aRVJPKCZlZmRz KTsNCisJCUZEX1NFVCh0dW4sICZyZmRzKTsNCisJCUZEX1NFVChuZXQsICZy ZmRzKTsNCisNCisJCW5mZHMgPSBzZWxlY3QobmV0ICsgMTAsICZyZmRzLCAm d2ZkcywgJmVmZHMsIE5VTEwpOw0KKwkJaWYgKG5mZHMgPCAwKSB7DQorCQkJ c3lzbG9nKExPR19FUlIsImludGVycnVwdGVkIHNlbGVjdCIpOw0KKwkJCWNs b3NlKG5ldCk7DQorCQkJZmluaXNoKDcpOw0KKwkJfQ0KKwkJaWYgKG5mZHMg PT0gMCkgewkvKiBYWFggSW1wb3NzaWJsZSA/ICovDQorCQkJc3lzbG9nKExP R19FUlIsICJ0aW1lb3V0IGluIHNlbGVjdCIpOw0KKwkJCWNsb3NlKG5ldCk7 DQorCQkJZmluaXNoKDgpOw0KKwkJfQ0KKw0KKwkJaWYgKEZEX0lTU0VUKG5l dCwmcmZkcykpIHsNCisJCQkvKiBSZWFkIGZyb20gbmV0d29yayAuLi4gKi8N CisJCQlsZW4gPSByZWFkKG5ldCwgYnVmLCBzaXplb2YoYnVmKSk7DQorCQkJ LyogQ2hlY2sgaWYgdGhpcyBpcyAib3VyIiBwYWNrZXQgKi8NCisJCQlpZiAo aXAtPmlwX3NyYy5zX2FkZHIgPT0gdG8tPnNpbl9hZGRyLnNfYWRkcikgew0K KwkJCQkvKiAuLi4gc2tpcCBlbmNhcHN1bGF0aW9uIGhlYWRlcnMgLi4uICov DQorCQkJCWlwb2ZmID0gKGlwLT5pcF9obCA8PCAyKTsNCisJCQkJLyogLi4u IGFuZCB3cml0ZSB0byB0dW4tZGV2aWNlICovDQorCQkJCXdyaXRlKHR1biwg YnVmK2lwb2ZmLCBsZW4taXBvZmYpOw0KKwkJCX0NCisJCX0NCisNCisJCWlm KEZEX0lTU0VUKHR1biwmcmZkcykpIHsNCisJCQkvKiBSZWFkIGZyb20gdHVu IC4uLiAqLw0KKwkJCWxlbiA9IHJlYWQodHVuLCBidWYsIHNpemVvZihidWYp KTsNCisJCQkvKiAuLi4gYW5kIHNlbmQgdG8gbmV0d29yayAqLw0KKwkJCWlm KHNlbmQobmV0LCBidWYsIGxlbiwwKSA8PSAwKQ0KKwkJCQlzeXNsb2coTE9H X0VSUiwiY2FuJ3Qgc2VuZCAtICVtIik7DQorICAgIAkJfQ0KKyAgCX0NCiB9 DQogDQogc3RhdGljIHZvaWQNCiB1c2FnZSh2b2lkKQ0KIHsNCiAJZnByaW50 ZihzdGRlcnIsDQotInVzYWdlOiBub3MtdHVuIC10IDx0dW5fbmFtZT4gLXMg PHNvdXJjZV9hZGRyPiAtZCA8ZGVzdF9hZGRyPiAtcCA8cHJvdG9jb2xfbnVt YmVyPiA8dGFyZ2V0X2FkZHI+XG4iKTsNCisidXNhZ2U6IG5vcy10dW4gLXQg dHVuX25hbWUgLXMgc291cmNlX2FkZHIgLWQgZGVzdF9hZGRyIFstcCBwcm90 b2NvbF9udW1iZXJdIHRhcmdldF9hZGRyXG4iKTsNCiAJZXhpdCgxKTsNCiB9 DQotDQo= --=_jive-20559-1111195846-0001-2--
文章代碼(AID): #12EuVf00 (DFBSD_submit)