Skip site navigation (1)Skip section navigation (2)
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>