Date: Tue, 19 Jun 2001 12:19:19 -0500 (CDT) From: Mike Silbersack <silby@silby.com> To: <freebsd-net@freebsd.org> Subject: tcp template removal / scalability patch Message-ID: <20010619121337.C77484-300000@achilles.silby.com>
next in thread | raw e-mail | index | archive | help
This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. --0-1282980704-992971159=:77484 Content-Type: TEXT/PLAIN; charset=US-ASCII As suggested by Terry, I've cooked up a patch which halts the use of mbufs for storing tcp template structures. The structure was only used in two places; tcp_output.c when sending packets, and tcp_timer.c when sending keepalives. tcp_output now pulls the info directly from the tcpcb, while tcp_timer creates a short-term tcp template that is destroyed after use. The end result is that rather than 1 mbuf being the minimum used per connection, 0 mbufs is now the minimum. As a result, those with boxes handling a lot of connections should see greatly reduced mbuf usage. I've attached two patches; one for current, and one for stable. Please review / test, _especially_ if you're using IPv6 or IPSec - while those cases look correct, I'm not running either and haven't tested them. Thanks, Mike "Silby" Silbersack --0-1282980704-992971159=:77484 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="tcptemplate-stable.patch" Content-Transfer-Encoding: BASE64 Content-ID: <20010619121919.M77484@achilles.silby.com> Content-Description: Content-Disposition: attachment; filename="tcptemplate-stable.patch" T25seSBpbiBuZXRpbmV0Lm9sZC86IGljbXBfdmFyLmgub3JpZw0KT25seSBp biBuZXRpbmV0Lm9sZC86IGlwX2ljbXAuYy5vcmlnDQpkaWZmIC11IC1yIG5l dGluZXQub2xkL3RjcF9pbnB1dC5jIG5ldGluZXQvdGNwX2lucHV0LmMNCi0t LSBuZXRpbmV0Lm9sZC90Y3BfaW5wdXQuYwlUdWUgSnVuIDE5IDExOjUzOjE2 IDIwMDENCisrKyBuZXRpbmV0L3RjcF9pbnB1dC5jCVR1ZSBKdW4gMTkgMTE6 NTM6MjUgMjAwMQ0KQEAgLTEwNjYsMTIgKzEwNjYsNyBAQA0KIAkJfQ0KIAkJ RlJFRShzaW4sIE1fU09OQU1FKTsNCiAJICAgICAgfQ0KLQkJdHAtPnRfdGVt cGxhdGUgPSB0Y3BfdGVtcGxhdGUodHApOw0KLQkJaWYgKHRwLT50X3RlbXBs YXRlID09IDApIHsNCi0JCQl0cCA9IHRjcF9kcm9wKHRwLCBFTk9CVUZTKTsN Ci0JCQlkcm9wc29ja2V0ID0gMDsJCS8qIHNvY2tldCBpcyBhbHJlYWR5IGdv bmUgKi8NCi0JCQlnb3RvIGRyb3A7DQotCQl9DQorCQl0cC0+dF90ZW1wbGF0 ZSA9IE5VTEw7DQogCQlpZiAoKHRhb3AgPSB0Y3BfZ2V0dGFvY2FjaGUoaW5w KSkgPT0gTlVMTCkgew0KIAkJCXRhb3AgPSAmdGFvX25vbmNhY2hlZDsNCiAJ CQliemVybyh0YW9wLCBzaXplb2YoKnRhb3ApKTsNCk9ubHkgaW4gbmV0aW5l dC5vbGQvOiB0Y3BfaW5wdXQuYy5vcmlnDQpPbmx5IGluIG5ldGluZXQub2xk LzogdGNwX2lucHV0LmMucmVqDQpkaWZmIC11IC1yIG5ldGluZXQub2xkL3Rj cF9vdXRwdXQuYyBuZXRpbmV0L3RjcF9vdXRwdXQuYw0KLS0tIG5ldGluZXQu b2xkL3RjcF9vdXRwdXQuYwlUdWUgSnVuIDE5IDExOjUzOjE2IDIwMDENCisr KyBuZXRpbmV0L3RjcF9vdXRwdXQuYwlUdWUgSnVuIDE5IDExOjUzOjI1IDIw MDENCkBAIC02MzAsMTYgKzYzMCwxMiBAQA0KIAkJbS0+bV9sZW4gPSBoZHJs ZW47DQogCX0NCiAJbS0+bV9wa3RoZHIucmN2aWYgPSAoc3RydWN0IGlmbmV0 ICopMDsNCi0JaWYgKHRwLT50X3RlbXBsYXRlID09IDApDQotCQlwYW5pYygi dGNwX291dHB1dCIpOw0KKw0KICNpZmRlZiBJTkVUNg0KIAlpZiAoaXNpcHY2 KSB7DQogCQlpcDYgPSBtdG9kKG0sIHN0cnVjdCBpcDZfaGRyICopOw0KIAkJ dGggPSAoc3RydWN0IHRjcGhkciAqKShpcDYgKyAxKTsNCi0JCWJjb3B5KChj YWRkcl90KXRwLT50X3RlbXBsYXRlLT50dF9pcGdlbiwgKGNhZGRyX3QpaXA2 LA0KLQkJICAgICAgc2l6ZW9mKHN0cnVjdCBpcDZfaGRyKSk7DQotCQliY29w eSgoY2FkZHJfdCkmdHAtPnRfdGVtcGxhdGUtPnR0X3QsIChjYWRkcl90KXRo LA0KLQkJICAgICAgc2l6ZW9mKHN0cnVjdCB0Y3BoZHIpKTsNCisJCXRjcF9m aWxsaGVhZGVycyh0cCwgaXA2LCB0aCk7DQogCX0gZWxzZQ0KICNlbmRpZiAv KiBJTkVUNiAqLw0KICAgICAgIHsNCkBAIC02NDcsMTAgKzY0Myw3IEBADQog CWlwb3YgPSAoc3RydWN0IGlwb3ZseSAqKWlwOw0KIAl0aCA9IChzdHJ1Y3Qg dGNwaGRyICopKGlwICsgMSk7DQogCS8qIHRoaXMgcGlja3MgdXAgdGhlIHBz ZXVkbyBoZWFkZXIgKHcvbyB0aGUgbGVuZ3RoKSAqLw0KLQliY29weSgoY2Fk ZHJfdCl0cC0+dF90ZW1wbGF0ZS0+dHRfaXBnZW4sIChjYWRkcl90KWlwLA0K LQkgICAgICBzaXplb2Yoc3RydWN0IGlwKSk7DQotCWJjb3B5KChjYWRkcl90 KSZ0cC0+dF90ZW1wbGF0ZS0+dHRfdCwgKGNhZGRyX3QpdGgsDQotCSAgICAg IHNpemVvZihzdHJ1Y3QgdGNwaGRyKSk7DQorCXRjcF9maWxsaGVhZGVycyh0 cCwgaXAsIHRoKTsNCiAgICAgICB9DQogDQogCS8qDQpPbmx5IGluIG5ldGlu ZXQub2xkLzogdGNwX291dHB1dC5jLm9yaWcNCk9ubHkgaW4gbmV0aW5ldC5v bGQvOiB0Y3Bfc2VxLmgub3JpZw0KZGlmZiAtdSAtciBuZXRpbmV0Lm9sZC90 Y3Bfc3Vici5jIG5ldGluZXQvdGNwX3N1YnIuYw0KLS0tIG5ldGluZXQub2xk L3RjcF9zdWJyLmMJVHVlIEp1biAxOSAxMTo1MzoxNiAyMDAxDQorKysgbmV0 aW5ldC90Y3Bfc3Vici5jCVR1ZSBKdW4gMTkgMTE6NTc6NTYgMjAwMQ0KQEAg LTIyMCwzMiArMjIwLDI3IEBADQogI3VuZGVmIFRDUF9NSU5QUk9UT0hEUg0K IH0NCiANCisNCiAvKg0KLSAqIENyZWF0ZSB0ZW1wbGF0ZSB0byBiZSB1c2Vk IHRvIHNlbmQgdGNwIHBhY2tldHMgb24gYSBjb25uZWN0aW9uLg0KLSAqIENh bGwgYWZ0ZXIgaG9zdCBlbnRyeSBjcmVhdGVkLCBhbGxvY2F0ZXMgYW4gbWJ1 ZiBhbmQgZmlsbHMNCi0gKiBpbiBhIHNrZWxldGFsIHRjcC9pcCBoZWFkZXIs IG1pbmltaXppbmcgdGhlIGFtb3VudCBvZiB3b3JrDQotICogbmVjZXNzYXJ5 IHdoZW4gdGhlIGNvbm5lY3Rpb24gaXMgdXNlZC4NCisgKiBGaWxsIGluIHRo ZSBJUCBhbmQgVENQIGhlYWRlcnMgZm9yIGFuIG91dGdvaW5nIHBhY2tldCwg Z2l2ZW4gdGhlIHRjcGNiLg0KKyAqIHRjcF90ZW1wbGF0ZSB1c2VkIHRvIHN0 b3JlIHRoaXMgZGF0YSBpbiBtYnVmcywgYnV0IHdlIG5vdyByZWNvcHkgaXQg b3V0DQorICogb2YgdGhlIHRjcGNiIGVhY2ggdGltZSB0byBjb25zZXJ2ZSBt YnVmcy4NCiAgKi8NCi1zdHJ1Y3QgdGNwdGVtcCAqDQotdGNwX3RlbXBsYXRl KHRwKQ0KKw0KK3ZvaWQNCit0Y3BfZmlsbGhlYWRlcnModHAsIGlwX3B0ciwg dGNwX3B0cikNCiAJc3RydWN0IHRjcGNiICp0cDsNCisJdm9pZCAqaXBfcHRy Ow0KKwl2b2lkICp0Y3BfcHRyOw0KIHsNCi0JcmVnaXN0ZXIgc3RydWN0IGlu cGNiICppbnAgPSB0cC0+dF9pbnBjYjsNCi0JcmVnaXN0ZXIgc3RydWN0IG1i dWYgKm07DQotCXJlZ2lzdGVyIHN0cnVjdCB0Y3B0ZW1wICpuOw0KKwlzdHJ1 Y3QgaW5wY2IgKmlucCA9IHRwLT50X2lucGNiOw0KKwlzdHJ1Y3QgdGNwaGRy ICp0Y3BfaGRyID0gKHN0cnVjdCB0Y3BoZHIgKil0Y3BfcHRyOw0KIA0KLQlp ZiAoKG4gPSB0cC0+dF90ZW1wbGF0ZSkgPT0gMCkgew0KLQkJbSA9IG1fZ2V0 KE1fRE9OVFdBSVQsIE1UX0hFQURFUik7DQotCQlpZiAobSA9PSBOVUxMKQ0K LQkJCXJldHVybiAoMCk7DQotCQltLT5tX2xlbiA9IHNpemVvZiAoc3RydWN0 IHRjcHRlbXApOw0KLQkJbiA9IG10b2QobSwgc3RydWN0IHRjcHRlbXAgKik7 DQotCX0NCiAjaWZkZWYgSU5FVDYNCiAJaWYgKChpbnAtPmlucF92ZmxhZyAm IElOUF9JUFY2KSAhPSAwKSB7DQotCQlyZWdpc3RlciBzdHJ1Y3QgaXA2X2hk ciAqaXA2Ow0KKwkJc3RydWN0IGlwNl9oZHIgKmlwNjsNCiANCi0JCWlwNiA9 IChzdHJ1Y3QgaXA2X2hkciAqKW4tPnR0X2lwZ2VuOw0KKwkJaXA2ID0gKHN0 cnVjdCBpcDZfaGRyICopaXBfcHRyOw0KIAkJaXA2LT5pcDZfZmxvdyA9IChp cDYtPmlwNl9mbG93ICYgfklQVjZfRkxPV0lORk9fTUFTSykgfA0KIAkJCShp bnAtPmluNnBfZmxvd2luZm8gJiBJUFY2X0ZMT1dJTkZPX01BU0spOw0KIAkJ aXA2LT5pcDZfdmZjID0gKGlwNi0+aXA2X3ZmYyAmIH5JUFY2X1ZFUlNJT05f TUFTSykgfA0KQEAgLTI1NCwyOSArMjQ5LDUyIEBADQogCQlpcDYtPmlwNl9w bGVuID0gc2l6ZW9mKHN0cnVjdCB0Y3BoZHIpOw0KIAkJaXA2LT5pcDZfc3Jj ID0gaW5wLT5pbjZwX2xhZGRyOw0KIAkJaXA2LT5pcDZfZHN0ID0gaW5wLT5p bjZwX2ZhZGRyOw0KLQkJbi0+dHRfdC50aF9zdW0gPSAwOw0KKwkJdGNwX2hk ci0+dGhfc3VtID0gMDsNCiAJfSBlbHNlDQogI2VuZGlmDQotICAgICAgew0K LQlzdHJ1Y3QgaXAgKmlwID0gKHN0cnVjdCBpcCAqKW4tPnR0X2lwZ2VuOw0K Kwl7DQorCXN0cnVjdCBpcCAqaXAgPSAoc3RydWN0IGlwICopIGlwX3B0cjsN CiANCi0JYnplcm8oaXAsIHNpemVvZihzdHJ1Y3QgaXApKTsJCS8qIFhYWCBv dmVya2lsbD8gKi8NCisJYnplcm8oaXAsIHNpemVvZihzdHJ1Y3QgaXApKTsg ICAgICAgICAgIC8qIFhYWCBvdmVya2lsbD8gKi8NCiAJaXAtPmlwX3ZobCA9 IElQX1ZITF9CT1JJTkc7DQogCWlwLT5pcF9wID0gSVBQUk9UT19UQ1A7DQog CWlwLT5pcF9zcmMgPSBpbnAtPmlucF9sYWRkcjsNCiAJaXAtPmlwX2RzdCA9 IGlucC0+aW5wX2ZhZGRyOw0KLQluLT50dF90LnRoX3N1bSA9IGluX3BzZXVk byhpcC0+aXBfc3JjLnNfYWRkciwgaXAtPmlwX2RzdC5zX2FkZHIsDQotCSAg ICBodG9ucyhzaXplb2Yoc3RydWN0IHRjcGhkcikgKyBJUFBST1RPX1RDUCkp Ow0KLSAgICAgIH0NCi0Jbi0+dHRfdC50aF9zcG9ydCA9IGlucC0+aW5wX2xw b3J0Ow0KLQluLT50dF90LnRoX2Rwb3J0ID0gaW5wLT5pbnBfZnBvcnQ7DQot CW4tPnR0X3QudGhfc2VxID0gMDsNCi0Jbi0+dHRfdC50aF9hY2sgPSAwOw0K LQluLT50dF90LnRoX3gyID0gMDsNCi0Jbi0+dHRfdC50aF9vZmYgPSA1Ow0K LQluLT50dF90LnRoX2ZsYWdzID0gMDsNCi0Jbi0+dHRfdC50aF93aW4gPSAw Ow0KLQluLT50dF90LnRoX3VycCA9IDA7DQorCXRjcF9oZHItPnRoX3N1bSA9 IGluX3BzZXVkbyhpcC0+aXBfc3JjLnNfYWRkciwgaXAtPmlwX2RzdC5zX2Fk ZHIsDQorCQlodG9ucyhzaXplb2Yoc3RydWN0IHRjcGhkcikgKyBJUFBST1RP X1RDUCkpOw0KKwl9DQorDQorCXRjcF9oZHItPnRoX3Nwb3J0ID0gaW5wLT5p bnBfbHBvcnQ7DQorCXRjcF9oZHItPnRoX2Rwb3J0ID0gaW5wLT5pbnBfZnBv cnQ7DQorCXRjcF9oZHItPnRoX3NlcSA9IDA7DQorCXRjcF9oZHItPnRoX2Fj ayA9IDA7DQorCXRjcF9oZHItPnRoX3gyID0gMDsNCisJdGNwX2hkci0+dGhf b2ZmID0gNTsNCisJdGNwX2hkci0+dGhfZmxhZ3MgPSAwOw0KKwl0Y3BfaGRy LT50aF93aW4gPSAwOw0KKwl0Y3BfaGRyLT50aF91cnAgPSAwOw0KK30NCisN CisNCisvKg0KKyAqIENyZWF0ZSB0ZW1wbGF0ZSB0byBiZSB1c2VkIHRvIHNl bmQgdGNwIHBhY2tldHMgb24gYSBjb25uZWN0aW9uLg0KKyAqIEFsbG9jYXRl cyBhbiBtYnVmIGFuZCBmaWxscyBpbiBhIHNrZWxldGFsIHRjcC9pcCBoZWFk ZXIuICBUaGUgb25seQ0KKyAqIHVzZSBmb3IgdGhpcyBmdW5jdGlvbiBpcyBp biBrZWVwYWxpdmVzLCB3aG8gbGlrZSB0byB1c2UgdGNwX3Jlc3BvbmQuDQor ICovDQorc3RydWN0IHRjcHRlbXAgKg0KK3RjcF9tYWtldGVtcGxhdGUodHAp DQorCXN0cnVjdCB0Y3BjYiAqdHA7DQorew0KKwlzdHJ1Y3QgbWJ1ZiAqbTsN CisJc3RydWN0IHRjcHRlbXAgKm47DQorDQorCW0gPSBtX2dldChNX0RPTlRX QUlULCBNVF9IRUFERVIpOw0KKwlpZiAobSA9PSBOVUxMKQ0KKwkJcmV0dXJu ICgwKTsNCisJbS0+bV9sZW4gPSBzaXplb2YgKHN0cnVjdCB0Y3B0ZW1wKTsN CisJbiA9IG10b2QobSwgc3RydWN0IHRjcHRlbXAgKik7DQorDQorCXRjcF9m aWxsaGVhZGVycyh0cCwgKHZvaWQgKikmbi0+dHRfaXBnZW4sICh2b2lkICop Jm4tPnR0X3QpOw0KIAlyZXR1cm4gKG4pOw0KIH0NCiANCkBAIC03MDYsNyAr NzI0LDcgQEANCiAJCUZSRUUocSwgTV9UU0VHUSk7DQogCX0NCiAJaWYgKHRw LT50X3RlbXBsYXRlKQ0KLQkJKHZvaWQpIG1fZnJlZShkdG9tKHRwLT50X3Rl bXBsYXRlKSk7DQorCQlwYW5pYygidF90ZW1wbGF0ZSBub24tbnVsbCEiKTsN CiAJaW5wLT5pbnBfcHBjYiA9IE5VTEw7DQogCXNvaXNkaXNjb25uZWN0ZWQo c28pOw0KICNpZmRlZiBJTkVUNg0KQEAgLTEzNDcsNyArMTM2NSw3IEBADQog I2VuZGlmIC8qIElORVQ2ICovDQogCXN0cnVjdCB0Y3BoZHIgKnRoOw0KIA0K LQlpZiAoIXRwIHx8ICF0cC0+dF90ZW1wbGF0ZSB8fCAhKGlucCA9IHRwLT50 X2lucGNiKSkNCisJaWYgKCF0cCB8fCAhKGlucCA9IHRwLT50X2lucGNiKSkN CiAJCXJldHVybiAwOw0KIAlNR0VUSERSKG0sIE1fRE9OVFdBSVQsIE1UX0RB VEEpOw0KIAlpZiAoIW0pDQpAQCAtMTM1OSwxMCArMTM3Nyw3IEBADQogCQl0 aCA9IChzdHJ1Y3QgdGNwaGRyICopKGlwNiArIDEpOw0KIAkJbS0+bV9wa3Ro ZHIubGVuID0gbS0+bV9sZW4gPQ0KIAkJCXNpemVvZihzdHJ1Y3QgaXA2X2hk cikgKyBzaXplb2Yoc3RydWN0IHRjcGhkcik7DQotCQliY29weSgoY2FkZHJf dCl0cC0+dF90ZW1wbGF0ZS0+dHRfaXBnZW4sIChjYWRkcl90KWlwNiwNCi0J CSAgICAgIHNpemVvZihzdHJ1Y3QgaXA2X2hkcikpOw0KLQkJYmNvcHkoKGNh ZGRyX3QpJnRwLT50X3RlbXBsYXRlLT50dF90LCAoY2FkZHJfdCl0aCwNCi0J CSAgICAgIHNpemVvZihzdHJ1Y3QgdGNwaGRyKSk7DQorCQl0Y3BfZmlsbGhl YWRlcnModHAsIGlwNiwgdGgpOw0KIAkJaGRyc2l6ID0gaXBzZWM2X2hkcnNp eihtLCBJUFNFQ19ESVJfT1VUQk9VTkQsIGlucCk7DQogCX0gZWxzZQ0KICNl bmRpZiAvKiBJTkVUNiAqLw0KQEAgLTEzNzAsMTAgKzEzODUsNyBAQA0KIAlp cCA9IG10b2QobSwgc3RydWN0IGlwICopOw0KIAl0aCA9IChzdHJ1Y3QgdGNw aGRyICopKGlwICsgMSk7DQogCW0tPm1fcGt0aGRyLmxlbiA9IG0tPm1fbGVu ID0gc2l6ZW9mKHN0cnVjdCB0Y3BpcGhkcik7DQotCWJjb3B5KChjYWRkcl90 KXRwLT50X3RlbXBsYXRlLT50dF9pcGdlbiwgKGNhZGRyX3QpaXAsDQotCSAg ICAgIHNpemVvZihzdHJ1Y3QgaXApKTsNCi0JYmNvcHkoKGNhZGRyX3QpJnRw LT50X3RlbXBsYXRlLT50dF90LCAoY2FkZHJfdCl0aCwNCi0JICAgICAgc2l6 ZW9mKHN0cnVjdCB0Y3BoZHIpKTsNCisJdGNwX2ZpbGxoZWFkZXJzKHRwLCBp cCwgdGgpOw0KIAloZHJzaXogPSBpcHNlYzRfaGRyc2l6KG0sIElQU0VDX0RJ Ul9PVVRCT1VORCwgaW5wKTsNCiAgICAgICB9DQogDQpPbmx5IGluIG5ldGlu ZXQub2xkLzogdGNwX3N1YnIuYy5vcmlnDQpkaWZmIC11IC1yIG5ldGluZXQu b2xkL3RjcF90aW1lci5jIG5ldGluZXQvdGNwX3RpbWVyLmMNCi0tLSBuZXRp bmV0Lm9sZC90Y3BfdGltZXIuYwlUdWUgSnVuIDE5IDExOjUzOjE2IDIwMDEN CisrKyBuZXRpbmV0L3RjcF90aW1lci5jCVR1ZSBKdW4gMTkgMTE6NTY6MTMg MjAwMQ0KQEAgLTQxLDYgKzQxLDcgQEANCiAjaW5jbHVkZSA8c3lzL3BhcmFt Lmg+DQogI2luY2x1ZGUgPHN5cy9zeXN0bS5oPg0KICNpbmNsdWRlIDxzeXMv a2VybmVsLmg+DQorI2luY2x1ZGUgPHN5cy9tYnVmLmg+DQogI2luY2x1ZGUg PHN5cy9zeXNjdGwuaD4NCiAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPg0KICNp bmNsdWRlIDxzeXMvc29ja2V0dmFyLmg+DQpAQCAtMjI3LDYgKzIyOCw3IEBA DQogCXZvaWQgKnh0cDsNCiB7DQogCXN0cnVjdCB0Y3BjYiAqdHAgPSB4dHA7 DQorCXN0cnVjdCB0Y3B0ZW1wICp0X3RlbXBsYXRlOw0KIAlpbnQgczsNCiAj aWZkZWYgVENQREVCVUcNCiAJaW50IG9zdGF0ZTsNCkBAIC0yNzMsOSArMjc1 LDE0IEBADQogCQkJICAgICZ0cC0+dF90ZW1wbGF0ZS0+dHRfdCwgKHN0cnVj dCBtYnVmICopTlVMTCwNCiAJCQkgICAgdHAtPnJjdl9ueHQgLSAxLCB0cC0+ c25kX3VuYSAtIDEsIDApOw0KICNlbHNlDQotCQl0Y3BfcmVzcG9uZCh0cCwg dHAtPnRfdGVtcGxhdGUtPnR0X2lwZ2VuLA0KLQkJCSAgICAmdHAtPnRfdGVt cGxhdGUtPnR0X3QsIChzdHJ1Y3QgbWJ1ZiAqKU5VTEwsDQotCQkJICAgIHRw LT5yY3Zfbnh0LCB0cC0+c25kX3VuYSAtIDEsIDApOw0KKw0KKwkJdF90ZW1w bGF0ZSA9IHRjcF9tYWtldGVtcGxhdGUodHApOw0KKwkJaWYgKHRfdGVtcGxh dGUpIHsNCisJCQl0Y3BfcmVzcG9uZCh0cCwgdF90ZW1wbGF0ZS0+dHRfaXBn ZW4sDQorCQkJCSZ0X3RlbXBsYXRlLT50dF90LCAoc3RydWN0IG1idWYgKilO VUxMLA0KKwkJCQl0cC0+cmN2X254dCwgdHAtPnNuZF91bmEgLSAxLCAwKTsN CisJCQkodm9pZCkgbV9mcmVlKGR0b20odF90ZW1wbGF0ZSkpOw0KKwkJfQ0K ICNlbmRpZg0KIAkJY2FsbG91dF9yZXNldCh0cC0+dHRfa2VlcCwgdGNwX2tl ZXBpbnR2bCwgdGNwX3RpbWVyX2tlZXAsIHRwKTsNCiAJfSBlbHNlDQpPbmx5 IGluIG5ldGluZXQub2xkLzogdGNwX3RpbWVyLmMub3JpZw0KZGlmZiAtdSAt ciBuZXRpbmV0Lm9sZC90Y3BfdXNycmVxLmMgbmV0aW5ldC90Y3BfdXNycmVx LmMNCi0tLSBuZXRpbmV0Lm9sZC90Y3BfdXNycmVxLmMJVHVlIEp1biAxOSAx MTo1MzoxNiAyMDAxDQorKysgbmV0aW5ldC90Y3BfdXNycmVxLmMJVHVlIEp1 biAxOSAxMTo1MzoyNyAyMDAxDQpAQCAtNzQ0LDExICs3NDQsNyBAQA0KIAlp bnAtPmlucF9mcG9ydCA9IHNpbi0+c2luX3BvcnQ7DQogCWluX3BjYnJlaGFz aChpbnApOw0KIA0KLQl0cC0+dF90ZW1wbGF0ZSA9IHRjcF90ZW1wbGF0ZSh0 cCk7DQotCWlmICh0cC0+dF90ZW1wbGF0ZSA9PSAwKSB7DQotCQlpbl9wY2Jk aXNjb25uZWN0KGlucCk7DQotCQlyZXR1cm4gRU5PQlVGUzsNCi0JfQ0KKwl0 cC0+dF90ZW1wbGF0ZSA9IE5VTEw7DQogDQogCS8qIENvbXB1dGUgd2luZG93 IHNjYWxpbmcgdG8gcmVxdWVzdC4gICovDQogCXdoaWxlICh0cC0+cmVxdWVz dF9yX3NjYWxlIDwgVENQX01BWF9XSU5TSElGVCAmJg0KQEAgLTg0MSwxMSAr ODM3LDcgQEANCiAJCWlucC0+aW42cF9mbG93aW5mbyA9IHNpbjYtPnNpbjZf Zmxvd2luZm87DQogCWluX3BjYnJlaGFzaChpbnApOw0KIA0KLQl0cC0+dF90 ZW1wbGF0ZSA9IHRjcF90ZW1wbGF0ZSh0cCk7DQotCWlmICh0cC0+dF90ZW1w bGF0ZSA9PSAwKSB7DQotCQlpbjZfcGNiZGlzY29ubmVjdChpbnApOw0KLQkJ cmV0dXJuIEVOT0JVRlM7DQotCX0NCisJdHAtPnRfdGVtcGxhdGUgPSBOVUxM Ow0KIA0KIAkvKiBDb21wdXRlIHdpbmRvdyBzY2FsaW5nIHRvIHJlcXVlc3Qu ICAqLw0KIAl3aGlsZSAodHAtPnJlcXVlc3Rfcl9zY2FsZSA8IFRDUF9NQVhf V0lOU0hJRlQgJiYNCk9ubHkgaW4gbmV0aW5ldC5vbGQvOiB0Y3BfdXNycmVx LmMub3JpZw0KT25seSBpbiBuZXRpbmV0Lm9sZC86IHRjcF91c3JyZXEuYy5y ZWoNCmRpZmYgLXUgLXIgbmV0aW5ldC5vbGQvdGNwX3Zhci5oIG5ldGluZXQv dGNwX3Zhci5oDQotLS0gbmV0aW5ldC5vbGQvdGNwX3Zhci5oCVR1ZSBKdW4g MTkgMTE6NTM6MTYgMjAwMQ0KKysrIG5ldGluZXQvdGNwX3Zhci5oCVR1ZSBK dW4gMTkgMTE6NTM6MjcgMjAwMQ0KQEAgLTQwMCw3ICs0MDAsOCBAQA0KIHZv aWQJIHRjcF9zZXRwZXJzaXN0IF9fUCgoc3RydWN0IHRjcGNiICopKTsNCiB2 b2lkCSB0Y3Bfc2xvd3RpbW8gX19QKCh2b2lkKSk7DQogc3RydWN0IHRjcHRl bXAgKg0KLQkgdGNwX3RlbXBsYXRlIF9fUCgoc3RydWN0IHRjcGNiICopKTsN CisJIHRjcF9tYWtldGVtcGxhdGUgX19QKChzdHJ1Y3QgdGNwY2IgKikpOw0K K3ZvaWQJIHRjcF9maWxsaGVhZGVycyBfX1AoKHN0cnVjdCB0Y3BjYiAqLCB2 b2lkICosIHZvaWQgKikpOw0KIHN0cnVjdCB0Y3BjYiAqDQogCSB0Y3BfdGlt ZXJzIF9fUCgoc3RydWN0IHRjcGNiICosIGludCkpOw0KIHZvaWQJIHRjcF90 cmFjZSBfX1AoKGludCwgaW50LCBzdHJ1Y3QgdGNwY2IgKiwgdm9pZCAqLCBz dHJ1Y3QgdGNwaGRyICosDQpPbmx5IGluIG5ldGluZXQub2xkLzogdGNwX3Zh ci5oLm9yaWcNCk9ubHkgaW4gbmV0aW5ldC5vbGQvOiB1ZHBfdXNycmVxLmMu b3JpZw0K --0-1282980704-992971159=:77484 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="tcptemplate-current.patch" Content-Transfer-Encoding: BASE64 Content-ID: <20010619121919.T77484@achilles.silby.com> Content-Description: Content-Disposition: attachment; filename="tcptemplate-current.patch" ZGlmZiAtdSAtciBuZXRpbmV0Lm9sZC90Y3BfaW5wdXQuYyBuZXRpbmV0L3Rj cF9pbnB1dC5jDQotLS0gbmV0aW5ldC5vbGQvdGNwX2lucHV0LmMJTW9uIEp1 biAxOCAyMDo0NTowNyAyMDAxDQorKysgbmV0aW5ldC90Y3BfaW5wdXQuYwlN b24gSnVuIDE4IDIxOjA0OjA0IDIwMDENCkBAIC0xMTI3LDEyICsxMTI3LDcg QEANCiAJCX0NCiAJCUZSRUUoc2luLCBNX1NPTkFNRSk7DQogCSAgICAgIH0N Ci0JCXRwLT50X3RlbXBsYXRlID0gdGNwX3RlbXBsYXRlKHRwKTsNCi0JCWlm ICh0cC0+dF90ZW1wbGF0ZSA9PSAwKSB7DQotCQkJdHAgPSB0Y3BfZHJvcCh0 cCwgRU5PQlVGUyk7DQotCQkJZHJvcHNvY2tldCA9IDA7CQkvKiBzb2NrZXQg aXMgYWxyZWFkeSBnb25lICovDQotCQkJZ290byBkcm9wOw0KLQkJfQ0KKwkJ dHAtPnRfdGVtcGxhdGUgPSBOVUxMOw0KIAkJaWYgKCh0YW9wID0gdGNwX2dl dHRhb2NhY2hlKGlucCkpID09IE5VTEwpIHsNCiAJCQl0YW9wID0gJnRhb19u b25jYWNoZWQ7DQogCQkJYnplcm8odGFvcCwgc2l6ZW9mKCp0YW9wKSk7DQpk aWZmIC11IC1yIG5ldGluZXQub2xkL3RjcF9vdXRwdXQuYyBuZXRpbmV0L3Rj cF9vdXRwdXQuYw0KLS0tIG5ldGluZXQub2xkL3RjcF9vdXRwdXQuYwlNb24g SnVuIDE4IDIwOjQ1OjA3IDIwMDENCisrKyBuZXRpbmV0L3RjcF9vdXRwdXQu YwlNb24gSnVuIDE4IDIwOjU5OjU5IDIwMDENCkBAIC02MzIsMTYgKzYzMiwx MiBAQA0KIAkJbS0+bV9sZW4gPSBoZHJsZW47DQogCX0NCiAJbS0+bV9wa3Ro ZHIucmN2aWYgPSAoc3RydWN0IGlmbmV0ICopMDsNCi0JaWYgKHRwLT50X3Rl bXBsYXRlID09IDApDQotCQlwYW5pYygidGNwX291dHB1dCIpOw0KKw0KICNp ZmRlZiBJTkVUNg0KIAlpZiAoaXNpcHY2KSB7DQogCQlpcDYgPSBtdG9kKG0s IHN0cnVjdCBpcDZfaGRyICopOw0KIAkJdGggPSAoc3RydWN0IHRjcGhkciAq KShpcDYgKyAxKTsNCi0JCWJjb3B5KChjYWRkcl90KXRwLT50X3RlbXBsYXRl LT50dF9pcGdlbiwgKGNhZGRyX3QpaXA2LA0KLQkJICAgICAgc2l6ZW9mKHN0 cnVjdCBpcDZfaGRyKSk7DQotCQliY29weSgoY2FkZHJfdCkmdHAtPnRfdGVt cGxhdGUtPnR0X3QsIChjYWRkcl90KXRoLA0KLQkJICAgICAgc2l6ZW9mKHN0 cnVjdCB0Y3BoZHIpKTsNCisJCXRjcF9maWxsaGVhZGVycyh0cCwgaXA2LCB0 aCk7DQogCX0gZWxzZQ0KICNlbmRpZiAvKiBJTkVUNiAqLw0KICAgICAgIHsN CkBAIC02NDksMTAgKzY0NSw3IEBADQogCWlwb3YgPSAoc3RydWN0IGlwb3Zs eSAqKWlwOw0KIAl0aCA9IChzdHJ1Y3QgdGNwaGRyICopKGlwICsgMSk7DQog CS8qIHRoaXMgcGlja3MgdXAgdGhlIHBzZXVkbyBoZWFkZXIgKHcvbyB0aGUg bGVuZ3RoKSAqLw0KLQliY29weSgoY2FkZHJfdCl0cC0+dF90ZW1wbGF0ZS0+ dHRfaXBnZW4sIChjYWRkcl90KWlwLA0KLQkgICAgICBzaXplb2Yoc3RydWN0 IGlwKSk7DQotCWJjb3B5KChjYWRkcl90KSZ0cC0+dF90ZW1wbGF0ZS0+dHRf dCwgKGNhZGRyX3QpdGgsDQotCSAgICAgIHNpemVvZihzdHJ1Y3QgdGNwaGRy KSk7DQorCXRjcF9maWxsaGVhZGVycyh0cCwgaXAsIHRoKTsNCiAgICAgICB9 DQogDQogCS8qDQpkaWZmIC11IC1yIG5ldGluZXQub2xkL3RjcF9zdWJyLmMg bmV0aW5ldC90Y3Bfc3Vici5jDQotLS0gbmV0aW5ldC5vbGQvdGNwX3N1YnIu YwlNb24gSnVuIDE4IDIwOjQ1OjA3IDIwMDENCisrKyBuZXRpbmV0L3RjcF9z dWJyLmMJVHVlIEp1biAxOSAxMTo0Nzo1NyAyMDAxDQpAQCAtMjE3LDMyICsy MTcsMjcgQEANCiAjdW5kZWYgVENQX01JTlBST1RPSERSDQogfQ0KIA0KKw0K IC8qDQotICogQ3JlYXRlIHRlbXBsYXRlIHRvIGJlIHVzZWQgdG8gc2VuZCB0 Y3AgcGFja2V0cyBvbiBhIGNvbm5lY3Rpb24uDQotICogQ2FsbCBhZnRlciBo b3N0IGVudHJ5IGNyZWF0ZWQsIGFsbG9jYXRlcyBhbiBtYnVmIGFuZCBmaWxs cw0KLSAqIGluIGEgc2tlbGV0YWwgdGNwL2lwIGhlYWRlciwgbWluaW1pemlu ZyB0aGUgYW1vdW50IG9mIHdvcmsNCi0gKiBuZWNlc3Nhcnkgd2hlbiB0aGUg Y29ubmVjdGlvbiBpcyB1c2VkLg0KKyAqIEZpbGwgaW4gdGhlIElQIGFuZCBU Q1AgaGVhZGVycyBmb3IgYW4gb3V0Z29pbmcgcGFja2V0LCBnaXZlbiB0aGUg dGNwY2IuDQorICogdGNwX3RlbXBsYXRlIHVzZWQgdG8gc3RvcmUgdGhpcyBk YXRhIGluIG1idWZzLCBidXQgd2Ugbm93IHJlY29weSBpdCBvdXQNCisgKiBv ZiB0aGUgdGNwY2IgZWFjaCB0aW1lIHRvIGNvbnNlcnZlIG1idWZzLg0KICAq Lw0KLXN0cnVjdCB0Y3B0ZW1wICoNCi10Y3BfdGVtcGxhdGUodHApDQorDQor dm9pZA0KK3RjcF9maWxsaGVhZGVycyh0cCwgaXBfcHRyLCB0Y3BfcHRyKQ0K IAlzdHJ1Y3QgdGNwY2IgKnRwOw0KKwl2b2lkICppcF9wdHI7DQorCXZvaWQg KnRjcF9wdHI7DQogew0KLQlyZWdpc3RlciBzdHJ1Y3QgaW5wY2IgKmlucCA9 IHRwLT50X2lucGNiOw0KLQlyZWdpc3RlciBzdHJ1Y3QgbWJ1ZiAqbTsNCi0J cmVnaXN0ZXIgc3RydWN0IHRjcHRlbXAgKm47DQorCXN0cnVjdCBpbnBjYiAq aW5wID0gdHAtPnRfaW5wY2I7DQorCXN0cnVjdCB0Y3BoZHIgKnRjcF9oZHIg PSAoc3RydWN0IHRjcGhkciAqKXRjcF9wdHI7DQogDQotCWlmICgobiA9IHRw LT50X3RlbXBsYXRlKSA9PSAwKSB7DQotCQltID0gbV9nZXQoTV9ET05UV0FJ VCwgTVRfSEVBREVSKTsNCi0JCWlmIChtID09IE5VTEwpDQotCQkJcmV0dXJu ICgwKTsNCi0JCW0tPm1fbGVuID0gc2l6ZW9mIChzdHJ1Y3QgdGNwdGVtcCk7 DQotCQluID0gbXRvZChtLCBzdHJ1Y3QgdGNwdGVtcCAqKTsNCi0JfQ0KICNp ZmRlZiBJTkVUNg0KIAlpZiAoKGlucC0+aW5wX3ZmbGFnICYgSU5QX0lQVjYp ICE9IDApIHsNCi0JCXJlZ2lzdGVyIHN0cnVjdCBpcDZfaGRyICppcDY7DQor CQlzdHJ1Y3QgaXA2X2hkciAqaXA2Ow0KIA0KLQkJaXA2ID0gKHN0cnVjdCBp cDZfaGRyICopbi0+dHRfaXBnZW47DQorCQlpcDYgPSAoc3RydWN0IGlwNl9o ZHIgKilpcF9wdHI7DQogCQlpcDYtPmlwNl9mbG93ID0gKGlwNi0+aXA2X2Zs b3cgJiB+SVBWNl9GTE9XSU5GT19NQVNLKSB8DQogCQkJKGlucC0+aW42cF9m bG93aW5mbyAmIElQVjZfRkxPV0lORk9fTUFTSyk7DQogCQlpcDYtPmlwNl92 ZmMgPSAoaXA2LT5pcDZfdmZjICYgfklQVjZfVkVSU0lPTl9NQVNLKSB8DQpA QCAtMjUxLDI5ICsyNDYsNTIgQEANCiAJCWlwNi0+aXA2X3BsZW4gPSBzaXpl b2Yoc3RydWN0IHRjcGhkcik7DQogCQlpcDYtPmlwNl9zcmMgPSBpbnAtPmlu NnBfbGFkZHI7DQogCQlpcDYtPmlwNl9kc3QgPSBpbnAtPmluNnBfZmFkZHI7 DQotCQluLT50dF90LnRoX3N1bSA9IDA7DQorCQl0Y3BfaGRyLT50aF9zdW0g PSAwOw0KIAl9IGVsc2UNCiAjZW5kaWYNCi0gICAgICB7DQotCXN0cnVjdCBp cCAqaXAgPSAoc3RydWN0IGlwICopbi0+dHRfaXBnZW47DQorCXsNCisJc3Ry dWN0IGlwICppcCA9IChzdHJ1Y3QgaXAgKikgaXBfcHRyOw0KIA0KLQliemVy byhpcCwgc2l6ZW9mKHN0cnVjdCBpcCkpOwkJLyogWFhYIG92ZXJraWxsPyAq Lw0KKwliemVybyhpcCwgc2l6ZW9mKHN0cnVjdCBpcCkpOyAgICAgICAgICAg LyogWFhYIG92ZXJraWxsPyAqLw0KIAlpcC0+aXBfdmhsID0gSVBfVkhMX0JP UklORzsNCiAJaXAtPmlwX3AgPSBJUFBST1RPX1RDUDsNCiAJaXAtPmlwX3Ny YyA9IGlucC0+aW5wX2xhZGRyOw0KIAlpcC0+aXBfZHN0ID0gaW5wLT5pbnBf ZmFkZHI7DQotCW4tPnR0X3QudGhfc3VtID0gaW5fcHNldWRvKGlwLT5pcF9z cmMuc19hZGRyLCBpcC0+aXBfZHN0LnNfYWRkciwNCi0JICAgIGh0b25zKHNp emVvZihzdHJ1Y3QgdGNwaGRyKSArIElQUFJPVE9fVENQKSk7DQotICAgICAg fQ0KLQluLT50dF90LnRoX3Nwb3J0ID0gaW5wLT5pbnBfbHBvcnQ7DQotCW4t PnR0X3QudGhfZHBvcnQgPSBpbnAtPmlucF9mcG9ydDsNCi0Jbi0+dHRfdC50 aF9zZXEgPSAwOw0KLQluLT50dF90LnRoX2FjayA9IDA7DQotCW4tPnR0X3Qu dGhfeDIgPSAwOw0KLQluLT50dF90LnRoX29mZiA9IDU7DQotCW4tPnR0X3Qu dGhfZmxhZ3MgPSAwOw0KLQluLT50dF90LnRoX3dpbiA9IDA7DQotCW4tPnR0 X3QudGhfdXJwID0gMDsNCisJdGNwX2hkci0+dGhfc3VtID0gaW5fcHNldWRv KGlwLT5pcF9zcmMuc19hZGRyLCBpcC0+aXBfZHN0LnNfYWRkciwNCisJCWh0 b25zKHNpemVvZihzdHJ1Y3QgdGNwaGRyKSArIElQUFJPVE9fVENQKSk7DQor CX0NCisNCisJdGNwX2hkci0+dGhfc3BvcnQgPSBpbnAtPmlucF9scG9ydDsN CisJdGNwX2hkci0+dGhfZHBvcnQgPSBpbnAtPmlucF9mcG9ydDsNCisJdGNw X2hkci0+dGhfc2VxID0gMDsNCisJdGNwX2hkci0+dGhfYWNrID0gMDsNCisJ dGNwX2hkci0+dGhfeDIgPSAwOw0KKwl0Y3BfaGRyLT50aF9vZmYgPSA1Ow0K Kwl0Y3BfaGRyLT50aF9mbGFncyA9IDA7DQorCXRjcF9oZHItPnRoX3dpbiA9 IDA7DQorCXRjcF9oZHItPnRoX3VycCA9IDA7DQorfQ0KKw0KKw0KKy8qDQor ICogQ3JlYXRlIHRlbXBsYXRlIHRvIGJlIHVzZWQgdG8gc2VuZCB0Y3AgcGFj a2V0cyBvbiBhIGNvbm5lY3Rpb24uDQorICogQWxsb2NhdGVzIGFuIG1idWYg YW5kIGZpbGxzIGluIGEgc2tlbGV0YWwgdGNwL2lwIGhlYWRlci4gIFRoZSBv bmx5DQorICogdXNlIGZvciB0aGlzIGZ1bmN0aW9uIGlzIGluIGtlZXBhbGl2 ZXMsIHdobyBsaWtlIHRvIHVzZSB0Y3BfcmVzcG9uZC4NCisgKi8NCitzdHJ1 Y3QgdGNwdGVtcCAqDQordGNwX21ha2V0ZW1wbGF0ZSh0cCkNCisJc3RydWN0 IHRjcGNiICp0cDsNCit7DQorCXN0cnVjdCBtYnVmICptOw0KKwlzdHJ1Y3Qg dGNwdGVtcCAqbjsNCisNCisJbSA9IG1fZ2V0KE1fRE9OVFdBSVQsIE1UX0hF QURFUik7DQorCWlmIChtID09IE5VTEwpDQorCQlyZXR1cm4gKDApOw0KKwlt LT5tX2xlbiA9IHNpemVvZiAoc3RydWN0IHRjcHRlbXApOw0KKwluID0gbXRv ZChtLCBzdHJ1Y3QgdGNwdGVtcCAqKTsNCisNCisJdGNwX2ZpbGxoZWFkZXJz KHRwLCAodm9pZCAqKSZuLT50dF9pcGdlbiwgKHZvaWQgKikmbi0+dHRfdCk7 DQogCXJldHVybiAobik7DQogfQ0KIA0KQEAgLTcwMiw3ICs3MjAsNyBAQA0K IAkJRlJFRShxLCBNX1RTRUdRKTsNCiAJfQ0KIAlpZiAodHAtPnRfdGVtcGxh dGUpDQotCQkodm9pZCkgbV9mcmVlKGR0b20odHAtPnRfdGVtcGxhdGUpKTsN CisJCXBhbmljKCJ0X3RlbXBsYXRlIG5vbi1udWxsISIpOw0KIAlpbnAtPmlu cF9wcGNiID0gTlVMTDsNCiAJc29pc2Rpc2Nvbm5lY3RlZChzbyk7DQogI2lm ZGVmIElORVQ2DQpAQCAtMTMzOSw3ICsxMzU3LDcgQEANCiAjZW5kaWYgLyog SU5FVDYgKi8NCiAJc3RydWN0IHRjcGhkciAqdGg7DQogDQotCWlmICghdHAg fHwgIXRwLT50X3RlbXBsYXRlIHx8ICEoaW5wID0gdHAtPnRfaW5wY2IpKQ0K KwlpZiAoIXRwIHx8ICEoaW5wID0gdHAtPnRfaW5wY2IpKQ0KIAkJcmV0dXJu IDA7DQogCU1HRVRIRFIobSwgTV9ET05UV0FJVCwgTVRfREFUQSk7DQogCWlm ICghbSkNCkBAIC0xMzUxLDEwICsxMzY5LDcgQEANCiAJCXRoID0gKHN0cnVj dCB0Y3BoZHIgKikoaXA2ICsgMSk7DQogCQltLT5tX3BrdGhkci5sZW4gPSBt LT5tX2xlbiA9DQogCQkJc2l6ZW9mKHN0cnVjdCBpcDZfaGRyKSArIHNpemVv ZihzdHJ1Y3QgdGNwaGRyKTsNCi0JCWJjb3B5KChjYWRkcl90KXRwLT50X3Rl bXBsYXRlLT50dF9pcGdlbiwgKGNhZGRyX3QpaXA2LA0KLQkJICAgICAgc2l6 ZW9mKHN0cnVjdCBpcDZfaGRyKSk7DQotCQliY29weSgoY2FkZHJfdCkmdHAt PnRfdGVtcGxhdGUtPnR0X3QsIChjYWRkcl90KXRoLA0KLQkJICAgICAgc2l6 ZW9mKHN0cnVjdCB0Y3BoZHIpKTsNCisJCXRjcF9maWxsaGVhZGVycyh0cCwg aXA2LCB0aCk7DQogCQloZHJzaXogPSBpcHNlYzZfaGRyc2l6KG0sIElQU0VD X0RJUl9PVVRCT1VORCwgaW5wKTsNCiAJfSBlbHNlDQogI2VuZGlmIC8qIElO RVQ2ICovDQpAQCAtMTM2MiwxMCArMTM3Nyw3IEBADQogCWlwID0gbXRvZCht LCBzdHJ1Y3QgaXAgKik7DQogCXRoID0gKHN0cnVjdCB0Y3BoZHIgKikoaXAg KyAxKTsNCiAJbS0+bV9wa3RoZHIubGVuID0gbS0+bV9sZW4gPSBzaXplb2Yo c3RydWN0IHRjcGlwaGRyKTsNCi0JYmNvcHkoKGNhZGRyX3QpdHAtPnRfdGVt cGxhdGUtPnR0X2lwZ2VuLCAoY2FkZHJfdClpcCwNCi0JICAgICAgc2l6ZW9m KHN0cnVjdCBpcCkpOw0KLQliY29weSgoY2FkZHJfdCkmdHAtPnRfdGVtcGxh dGUtPnR0X3QsIChjYWRkcl90KXRoLA0KLQkgICAgICBzaXplb2Yoc3RydWN0 IHRjcGhkcikpOw0KKwl0Y3BfZmlsbGhlYWRlcnModHAsIGlwLCB0aCk7DQog CWlwLT5pcF92aGwgPSBJUF9WSExfQk9SSU5HOw0KIAloZHJzaXogPSBpcHNl YzRfaGRyc2l6KG0sIElQU0VDX0RJUl9PVVRCT1VORCwgaW5wKTsNCiAgICAg ICB9DQpPbmx5IGluIG5ldGluZXQub2xkLzogdGNwX3N1YnIuYy5uZXcNCmRp ZmYgLXUgLXIgbmV0aW5ldC5vbGQvdGNwX3RpbWVyLmMgbmV0aW5ldC90Y3Bf dGltZXIuYw0KLS0tIG5ldGluZXQub2xkL3RjcF90aW1lci5jCU1vbiBKdW4g MTggMjA6NDU6MDcgMjAwMQ0KKysrIG5ldGluZXQvdGNwX3RpbWVyLmMJVHVl IEp1biAxOSAxMToyODoyNiAyMDAxDQpAQCAtNDEsNiArNDEsNyBAQA0KICNp bmNsdWRlIDxzeXMvcGFyYW0uaD4NCiAjaW5jbHVkZSA8c3lzL3N5c3RtLmg+ DQogI2luY2x1ZGUgPHN5cy9rZXJuZWwuaD4NCisjaW5jbHVkZSA8c3lzL21i dWYuaD4NCiAjaW5jbHVkZSA8c3lzL3N5c2N0bC5oPg0KICNpbmNsdWRlIDxz eXMvc29ja2V0Lmg+DQogI2luY2x1ZGUgPHN5cy9zb2NrZXR2YXIuaD4NCkBA IC0yMjIsNiArMjIzLDcgQEANCiAJdm9pZCAqeHRwOw0KIHsNCiAJc3RydWN0 IHRjcGNiICp0cCA9IHh0cDsNCisJc3RydWN0IHRjcHRlbXAgKnRfdGVtcGxh dGU7DQogCWludCBzOw0KICNpZmRlZiBUQ1BERUJVRw0KIAlpbnQgb3N0YXRl Ow0KQEAgLTI1OSw5ICsyNjEsMTQgQEANCiAJCSAqIGNvcnJlc3BvbmRlbnQg VENQIHRvIHJlc3BvbmQuDQogCQkgKi8NCiAJCXRjcHN0YXQudGNwc19rZWVw cHJvYmUrKzsNCi0JCXRjcF9yZXNwb25kKHRwLCB0cC0+dF90ZW1wbGF0ZS0+ dHRfaXBnZW4sDQotCQkJICAgICZ0cC0+dF90ZW1wbGF0ZS0+dHRfdCwgKHN0 cnVjdCBtYnVmICopTlVMTCwNCi0JCQkgICAgdHAtPnJjdl9ueHQsIHRwLT5z bmRfdW5hIC0gMSwgMCk7DQorCQl0X3RlbXBsYXRlID0gdGNwX21ha2V0ZW1w bGF0ZSh0cCk7DQorCQlpZiAodF90ZW1wbGF0ZSkgew0KKwkJCXRjcF9yZXNw b25kKHRwLCB0X3RlbXBsYXRlLT50dF9pcGdlbiwNCisJCQkJICAgICZ0X3Rl bXBsYXRlLT50dF90LCAoc3RydWN0IG1idWYgKilOVUxMLA0KKwkJCQkgICAg dHAtPnJjdl9ueHQsIHRwLT5zbmRfdW5hIC0gMSwgMCk7DQorCQkJKHZvaWQp IG1fZnJlZShkdG9tKHRfdGVtcGxhdGUpKTsNCisJCX0NCisJCQ0KIAkJY2Fs bG91dF9yZXNldCh0cC0+dHRfa2VlcCwgdGNwX2tlZXBpbnR2bCwgdGNwX3Rp bWVyX2tlZXAsIHRwKTsNCiAJfSBlbHNlDQogCQljYWxsb3V0X3Jlc2V0KHRw LT50dF9rZWVwLCB0Y3Bfa2VlcGlkbGUsIHRjcF90aW1lcl9rZWVwLCB0cCk7 DQpkaWZmIC11IC1yIG5ldGluZXQub2xkL3RjcF91c3JyZXEuYyBuZXRpbmV0 L3RjcF91c3JyZXEuYw0KLS0tIG5ldGluZXQub2xkL3RjcF91c3JyZXEuYwlN b24gSnVuIDE4IDIwOjQ1OjA3IDIwMDENCisrKyBuZXRpbmV0L3RjcF91c3Jy ZXEuYwlNb24gSnVuIDE4IDIxOjA0OjQzIDIwMDENCkBAIC03NDksMTEgKzc0 OSw3IEBADQogCWlucC0+aW5wX2Zwb3J0ID0gc2luLT5zaW5fcG9ydDsNCiAJ aW5fcGNicmVoYXNoKGlucCk7DQogDQotCXRwLT50X3RlbXBsYXRlID0gdGNw X3RlbXBsYXRlKHRwKTsNCi0JaWYgKHRwLT50X3RlbXBsYXRlID09IDApIHsN Ci0JCWluX3BjYmRpc2Nvbm5lY3QoaW5wKTsNCi0JCXJldHVybiBFTk9CVUZT Ow0KLQl9DQorCXRwLT50X3RlbXBsYXRlID0gTlVMTDsNCiANCiAJLyogQ29t cHV0ZSB3aW5kb3cgc2NhbGluZyB0byByZXF1ZXN0LiAgKi8NCiAJd2hpbGUg KHRwLT5yZXF1ZXN0X3Jfc2NhbGUgPCBUQ1BfTUFYX1dJTlNISUZUICYmDQpA QCAtODQxLDExICs4MzcsNyBAQA0KIAkJaW5wLT5pbjZwX2Zsb3dpbmZvID0g c2luNi0+c2luNl9mbG93aW5mbzsNCiAJaW5fcGNicmVoYXNoKGlucCk7DQog DQotCXRwLT50X3RlbXBsYXRlID0gdGNwX3RlbXBsYXRlKHRwKTsNCi0JaWYg KHRwLT50X3RlbXBsYXRlID09IDApIHsNCi0JCWluNl9wY2JkaXNjb25uZWN0 KGlucCk7DQotCQlyZXR1cm4gRU5PQlVGUzsNCi0JfQ0KKwl0cC0+dF90ZW1w bGF0ZSA9IE5VTEw7DQogDQogCS8qIENvbXB1dGUgd2luZG93IHNjYWxpbmcg dG8gcmVxdWVzdC4gICovDQogCXdoaWxlICh0cC0+cmVxdWVzdF9yX3NjYWxl IDwgVENQX01BWF9XSU5TSElGVCAmJg0KZGlmZiAtdSAtciBuZXRpbmV0Lm9s ZC90Y3BfdmFyLmggbmV0aW5ldC90Y3BfdmFyLmgNCi0tLSBuZXRpbmV0Lm9s ZC90Y3BfdmFyLmgJTW9uIEp1biAxOCAyMDo0NTowNyAyMDAxDQorKysgbmV0 aW5ldC90Y3BfdmFyLmgJVHVlIEp1biAxOSAxMToyNzo0NCAyMDAxDQpAQCAt NDAwLDcgKzQwMCw4IEBADQogdm9pZAkgdGNwX3NldHBlcnNpc3QgX19QKChz dHJ1Y3QgdGNwY2IgKikpOw0KIHZvaWQJIHRjcF9zbG93dGltbyBfX1AoKHZv aWQpKTsNCiBzdHJ1Y3QgdGNwdGVtcCAqDQotCSB0Y3BfdGVtcGxhdGUgX19Q KChzdHJ1Y3QgdGNwY2IgKikpOw0KKwkgdGNwX21ha2V0ZW1wbGF0ZSBfX1Ao KHN0cnVjdCB0Y3BjYiAqKSk7DQordm9pZAkgdGNwX2ZpbGxoZWFkZXJzIF9f UCgoc3RydWN0IHRjcGNiICosIHZvaWQgKiwgdm9pZCAqKSk7DQogc3RydWN0 IHRjcGNiICoNCiAJIHRjcF90aW1lcnMgX19QKChzdHJ1Y3QgdGNwY2IgKiwg aW50KSk7DQogdm9pZAkgdGNwX3RyYWNlIF9fUCgoaW50LCBpbnQsIHN0cnVj dCB0Y3BjYiAqLCB2b2lkICosIHN0cnVjdCB0Y3BoZHIgKiwNCg== --0-1282980704-992971159=:77484-- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-net" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20010619121337.C77484-300000>