Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 29 Dec 2004 03:02:20 -0600 (CST)
From:      Mike Silbersack <silby@silby.com>
To:        net@freebsd.org
Subject:   Update: Alternate port randomization approaches
Message-ID:  <20041229025718.U26249@odysseus.silby.com>
In-Reply-To: <20041218033226.L28788@odysseus.silby.com>
References:  <20041218033226.L28788@odysseus.silby.com>

next in thread | previous 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.

--0-1414219215-1104310690=:26249
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; format=flowed
Content-ID: <20041229025813.B26249@odysseus.silby.com>



On Sat, 18 Dec 2004, Mike Silbersack wrote:

> There have been a few reports by users of front end web proxies and other 
> systems under FreeBSD that port randomization causes them problems under 
> load.  This seems to be due to a combination of port randomization and rapid 
> connections to the same host causing ports to be recycled before the ISN has 
> advanced past the end of the previous connection, thereby causing the 
> TIME_WAIT socket on the receiving end to ignore the new SYN.

Based on testing done by Igor Sysoev, I've found that my original patch is 
insufficient; even as little as one randomizaion per second can cause 
problems for some users.  As a result, I've created the attached patch 
(versions for both 6.x and 4.x are included).  It implements a relatively 
simple algorithm:  Port randomization is turned disable once the 
connection rate goes above 20 connections per second, and it is not 
reenabled until the connection rate falls below 20 cps for 5 seconds 
straight.

This appears to work for Igor, and it seems safe enough to commit before 
4.11-RC2.  But, if possible, I'd like a few more sets of eyes to 
doublecheck the concept and code; please take a look at it if you have a 
chance.

Thanks,

Mike "Silby" Silbersack
--0-1414219215-1104310690=:26249
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME="portrandom-gen4-4x.patch"
Content-Transfer-Encoding: BASE64
Content-ID: <20041229025810.L26249@odysseus.silby.com>
Content-Description: 
Content-Disposition: ATTACHMENT; FILENAME="portrandom-gen4-4x.patch"

ZGlmZiAtdSAtciAvdXNyL3NyYy9zeXMub2xkL25ldGluZXQvaW5fcGNiLmMg
L3Vzci9zcmMvc3lzL25ldGluZXQvaW5fcGNiLmMNCi0tLSAvdXNyL3NyYy9z
eXMub2xkL25ldGluZXQvaW5fcGNiLmMJVGh1IERlYyAxNiAwMzoyNjoxMSAy
MDA0DQorKysgL3Vzci9zcmMvc3lzL25ldGluZXQvaW5fcGNiLmMJU2F0IERl
YyAyNSAxNzowNzo1NiAyMDA0DQpAQCAtNjIsNiArNjIsOCBAQA0KICNpbmNs
dWRlIDxuZXRpbmV0L2luX3BjYi5oPg0KICNpbmNsdWRlIDxuZXRpbmV0L2lu
X3Zhci5oPg0KICNpbmNsdWRlIDxuZXRpbmV0L2lwX3Zhci5oPg0KKyNpbmNs
dWRlIDxuZXRpbmV0L3VkcC5oPg0KKyNpbmNsdWRlIDxuZXRpbmV0L3VkcF92
YXIuaD4NCiAjaWZkZWYgSU5FVDYNCiAjaW5jbHVkZSA8bmV0aW5ldC9pcDYu
aD4NCiAjaW5jbHVkZSA8bmV0aW5ldDYvaXA2X3Zhci5oPg0KQEAgLTk1LDgg
Kzk3LDEyIEBADQogaW50CWlwcG9ydF9oaWZpcnN0YXV0byA9IElQUE9SVF9I
SUZJUlNUQVVUTzsJLyogNDkxNTIgKi8NCiBpbnQJaXBwb3J0X2hpbGFzdGF1
dG8gID0gSVBQT1JUX0hJTEFTVEFVVE87CQkvKiA2NTUzNSAqLw0KIA0KLS8q
IFNoYWxsIHdlIGFsbG9jYXRlIGVwaGVtZXJhbCBwb3J0cyBpbiByYW5kb20g
b3JkZXI/ICovDQotaW50CWlwcG9ydF9yYW5kb21pemVkID0gMDsNCisvKiBW
YXJpYWJsZXMgZGVhbGluZyB3aXRoIHJhbmRvbSBlcGhlbWVyYWwgcG9ydCBh
bGxvY2F0aW9uLiAqLw0KK2ludAlpcHBvcnRfcmFuZG9taXplZCA9IDE7CS8q
IHVzZXIgY29udHJvbGxlZCB2aWEgc3lzY3RsICovDQoraW50CWlwcG9ydF9y
YW5kb21jcHMgPSAyMDsJLyogdXNlciBjb250cm9sbGVkIHZpYSBzeXNjdGwg
Ki8NCitpbnQJaXBwb3J0X3N0b3ByYW5kb20gPSAwOwkvKiB0b2dnbGVkIGJ5
IGlwcG9ydF90aWNrICovDQoraW50CWlwcG9ydF90Y3BhbGxvY3M7DQoraW50
CWlwcG9ydF90Y3BsYXN0Y291bnQ7DQogDQogI2RlZmluZSBSQU5HRUNISyh2
YXIsIG1pbiwgbWF4KSBcDQogCWlmICgodmFyKSA8IChtaW4pKSB7ICh2YXIp
ID0gKG1pbik7IH0gXA0KQEAgLTEzNiw2ICsxNDIsOCBAQA0KIAkgICAmaXBw
b3J0X2hpbGFzdGF1dG8sIDAsICZzeXNjdGxfbmV0X2lwcG9ydF9jaGVjaywg
IkkiLCAiIik7DQogU1lTQ1RMX0lOVChfbmV0X2luZXRfaXBfcG9ydHJhbmdl
LCBPSURfQVVUTywgcmFuZG9taXplZCwgQ1RMRkxBR19SVywNCiAJICAgJmlw
cG9ydF9yYW5kb21pemVkLCAwLCAiIik7DQorU1lTQ1RMX0lOVChfbmV0X2lu
ZXRfaXBfcG9ydHJhbmdlLCBPSURfQVVUTywgcmFuZG9tY3BzLA0KKyAgICAg
ICAgICBDVExGTEFHX1JXLCAmaXBwb3J0X3JhbmRvbWNwcywgMCwgIiIpOw0K
IA0KIC8qDQogICogaW5fcGNiLmM6IG1hbmFnZSB0aGUgUHJvdG9jb2wgQ29u
dHJvbCBCbG9ja3MuDQpAQCAtMjAwLDYgKzIwOCw3IEBADQogCXVfc2hvcnQg
bHBvcnQgPSAwOw0KIAlpbnQgd2lsZCA9IDAsIHJldXNlcG9ydCA9IChzby0+
c29fb3B0aW9ucyAmIFNPX1JFVVNFUE9SVCk7DQogCWludCBlcnJvciwgcHJp
c29uID0gMDsNCisJaW50IGRvcmFuZG9tOw0KIA0KIAlpZiAoVEFJTFFfRU1Q
VFkoJmluX2lmYWRkcmhlYWQpKSAvKiBYWFggYnJva2VuISAqLw0KIAkJcmV0
dXJuIChFQUREUk5PVEFWQUlMKTsNCkBAIC0zMTMsNiArMzIyLDIwIEBADQog
CQkJbGFzdHBvcnQgPSAmcGNiaW5mby0+bGFzdHBvcnQ7DQogCQl9DQogCQkv
Kg0KKwkJKiBGb3IgVURQLCB1c2UgcmFuZG9tIHBvcnQgYWxsb2NhdGlvbiBh
cyBsb25nIGFzIHRoZSB1c2VyDQorCQkqIGFsbG93cyBpdC4gIEZvciBUQ1Ag
KGFuZCBhcyBvZiB5ZXQgdW5rbm93bikgY29ubmVjdGlvbnMsDQorCQkqIHVz
ZSByYW5kb20gcG9ydCBhbGxvY2F0aW9uIG9ubHkgaWYgdGhlIHVzZXIgYWxs
b3dzIGl0IEFORA0KKwkJKiBpcHBvcnRfdGljayBhbGxvd3MgaXQuDQorCQkq
Lw0KKwkJaWYgKGlwcG9ydF9yYW5kb21pemVkICYmDQorCQkJKCFpcHBvcnRf
c3RvcHJhbmRvbSB8fCBwY2JpbmZvID09ICZ1ZGJpbmZvKSkNCisJCQlkb3Jh
bmRvbSA9IDE7DQorCQllbHNlDQorCQkJZG9yYW5kb20gPSAwOw0KKwkJLyog
TWFrZSBzdXJlIHRvIG5vdCBpbmNsdWRlIFVEUCBwYWNrZXRzIGluIHRoZSBj
b3VudC4gKi8NCisJCWlmIChwY2JpbmZvICE9ICZ1ZGJpbmZvKQ0KKwkJCWlw
cG9ydF90Y3BhbGxvY3MrKzsNCisJCS8qDQogCQkgKiBTaW1wbGUgY2hlY2sg
dG8gZW5zdXJlIGFsbCBwb3J0cyBhcmUgbm90IHVzZWQgdXAgY2F1c2luZw0K
IAkJICogYSBkZWFkbG9jayBoZXJlLg0KIAkJICoNCkBAIC0zMjMsNyArMzQ2
LDcgQEANCiAJCQkvKg0KIAkJCSAqIGNvdW50aW5nIGRvd24NCiAJCQkgKi8N
Ci0JCQlpZiAoaXBwb3J0X3JhbmRvbWl6ZWQpDQorCQkJaWYgKGRvcmFuZG9t
KQ0KIAkJCQkqbGFzdHBvcnQgPSBmaXJzdCAtDQogCQkJCQkgICAgKGFyYzRy
YW5kb20oKSAlIChmaXJzdCAtIGxhc3QpKTsNCiAJCQljb3VudCA9IGZpcnN0
IC0gbGFzdDsNCkBAIC0zNDMsNyArMzY2LDcgQEANCiAJCQkvKg0KIAkJCSAq
IGNvdW50aW5nIHVwDQogCQkJICovDQotCQkJaWYgKGlwcG9ydF9yYW5kb21p
emVkKQ0KKwkJCWlmIChkb3JhbmRvbSkNCiAJCQkJKmxhc3Rwb3J0ID0gZmly
c3QgKw0KIAkJCQkJICAgIChhcmM0cmFuZG9tKCkgJSAobGFzdCAtIGZpcnN0
KSk7DQogCQkJY291bnQgPSBsYXN0IC0gZmlyc3Q7DQpAQCAtMTA0Niw0ICsx
MDY5LDMwIEBADQogCWlmIChudG9obChpbnAtPmlucF9sYWRkci5zX2FkZHIp
ID09IHAtPnBfcHJpc29uLT5wcl9pcCkNCiAJCXJldHVybiAoMCk7DQogCXJl
dHVybiAoMSk7DQorfQ0KKw0KKy8qDQorICogaXBwb3J0X3RpY2sgcnVucyBv
bmNlIHBlciBzZWNvbmQsIGRldGVybWluaW5nIGlmIHJhbmRvbSBwb3J0DQor
ICogYWxsb2NhdGlvbiBzaG91bGQgYmUgY29udGludWVkLiAgSWYgbW9yZSB0
aGFuIGlwcG9ydF9yYW5kb21jcHMNCisgKiBwb3J0cyBoYXZlIGJlZW4gYWxs
b2NhdGVkIGluIHRoZSBsYXN0IHNlY29uZCwgdGhlbiB3ZSByZXR1cm4gdG8N
CisgKiBzZXF1ZW50aWFsIHBvcnQgYWxsb2NhdGlvbi4gV2UgcmV0dXJuIHRv
IHJhbmRvbSBhbGxvY2F0aW9uIG9ubHkNCisgKiBvbmNlIHdlIGRyb3AgYmVs
b3cgaXBwb3J0X3JhbmRvbWNwcyBmb3IgYXQgbGVhc3QgNSBzZWNvbmRzLg0K
KyAqLw0KKw0KK3ZvaWQNCitpcHBvcnRfdGljayh4dHApDQorCXZvaWQgKnh0
cDsNCit7DQorCWlmIChpcHBvcnRfdGNwYWxsb2NzID4gaXBwb3J0X3RjcGxh
c3Rjb3VudCArIGlwcG9ydF9yYW5kb21jcHMpIHsNCisJCWlmIChpcHBvcnRf
c3RvcHJhbmRvbSA9PSAwKQ0KKwkJCXByaW50ZigiU3RvcHBpbmcgcmFuZG9t
IGFsbG9jYXRpb25cbiIpOw0KKwkJaXBwb3J0X3N0b3ByYW5kb20gPSA1Ow0K
Kwl9IGVsc2Ugew0KKwkJaWYgKGlwcG9ydF9zdG9wcmFuZG9tID09IDEpDQor
CQkJcHJpbnRmKCJHb2luZyBiYWNrIHRvIHJhbmRvbSBhbGxvY2F0aW9uXG4i
KTsNCisJCWlmIChpcHBvcnRfc3RvcHJhbmRvbSA+IDApDQorCQkJaXBwb3J0
X3N0b3ByYW5kb20tLTsNCisJfQ0KKwlpcHBvcnRfdGNwbGFzdGNvdW50ID0g
aXBwb3J0X3RjcGFsbG9jczsNCisJY2FsbG91dF9yZXNldCgmaXBwb3J0X3Rp
Y2tfY2FsbG91dCwgaHosIGlwcG9ydF90aWNrLCBOVUxMKTsNCiB9DQpkaWZm
IC11IC1yIC91c3Ivc3JjL3N5cy5vbGQvbmV0aW5ldC9pbl9wY2IuaCAvdXNy
L3NyYy9zeXMvbmV0aW5ldC9pbl9wY2IuaA0KLS0tIC91c3Ivc3JjL3N5cy5v
bGQvbmV0aW5ldC9pbl9wY2IuaAlUaHUgRGVjIDE2IDAzOjI2OjExIDIwMDQN
CisrKyAvdXNyL3NyYy9zeXMvbmV0aW5ldC9pbl9wY2IuaAlTYXQgRGVjIDI1
IDE3OjA5OjAxIDIwMDQNCkBAIC0zMTAsNiArMzEwLDcgQEANCiBleHRlcm4g
aW50CWlwcG9ydF9sYXN0YXV0bzsNCiBleHRlcm4gaW50CWlwcG9ydF9oaWZp
cnN0YXV0bzsNCiBleHRlcm4gaW50CWlwcG9ydF9oaWxhc3RhdXRvOw0KK2V4
dGVybiBzdHJ1Y3QgY2FsbG91dCBpcHBvcnRfdGlja19jYWxsb3V0Ow0KIA0K
IHZvaWQJaW5fcGNicHVyZ2VpZjAgX19QKChzdHJ1Y3QgaW5wY2IgKiwgc3Ry
dWN0IGlmbmV0ICopKTsNCiB2b2lkCWluX2xvc2luZyBfX1AoKHN0cnVjdCBp
bnBjYiAqKSk7DQpAQCAtMzM1LDYgKzMzNiw3IEBADQogaW50CWluX3NldHBl
ZXJhZGRyIF9fUCgoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2NrYWRk
ciAqKm5hbSkpOw0KIGludAlpbl9zZXRzb2NrYWRkciBfX1AoKHN0cnVjdCBz
b2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja2FkZHIgKipuYW0pKTsNCiB2b2lkCWlu
X3BjYnJlbWxpc3RzIF9fUCgoc3RydWN0IGlucGNiICppbnApKTsNCit2b2lk
CWlwcG9ydF90aWNrKHZvaWQgKnh0cCk7DQogaW50CXByaXNvbl94aW5wY2Ig
X19QKChzdHJ1Y3QgcHJvYyAqcCwgc3RydWN0IGlucGNiICppbnApKTsNCiAj
ZW5kaWYgLyogX0tFUk5FTCAqLw0KIA0KZGlmZiAtdSAtciAvdXNyL3NyYy9z
eXMub2xkL25ldGluZXQvaXBfaW5wdXQuYyAvdXNyL3NyYy9zeXMvbmV0aW5l
dC9pcF9pbnB1dC5jDQotLS0gL3Vzci9zcmMvc3lzLm9sZC9uZXRpbmV0L2lw
X2lucHV0LmMJVGh1IERlYyAxNiAwMzoyNjoxMiAyMDA0DQorKysgL3Vzci9z
cmMvc3lzL25ldGluZXQvaXBfaW5wdXQuYwlTYXQgRGVjIDI1IDE3OjE2OjA4
IDIwMDQNCkBAIC00Nyw2ICs0Nyw4IEBADQogDQogI2luY2x1ZGUgPHN5cy9w
YXJhbS5oPg0KICNpbmNsdWRlIDxzeXMvc3lzdG0uaD4NCisjaW5jbHVkZSA8
c3lzL2NhbGxvdXQuaD4NCisjaW5jbHVkZSA8c3lzL2V2ZW50aGFuZGxlci5o
Pg0KICNpbmNsdWRlIDxzeXMvbWJ1Zi5oPg0KICNpbmNsdWRlIDxzeXMvbWFs
bG9jLmg+DQogI2luY2x1ZGUgPHN5cy9kb21haW4uaD4NCkBAIC0xODMsNiAr
MTg1LDcgQEANCiAJKCgoKCh4KSAmIDB4RikgfCAoKCgoeCkgPj4gOCkgJiAw
eEYpIDw8IDQpKSBeICh5KSkgJiBJUFJFQVNTX0hNQVNLKQ0KIA0KIHN0YXRp
YyBzdHJ1Y3QgaXBxIGlwcVtJUFJFQVNTX05IQVNIXTsNCitzdHJ1Y3QgY2Fs
bG91dCBpcHBvcnRfdGlja19jYWxsb3V0Ow0KIGNvbnN0ICBpbnQgICAgaXBp
bnRycV9wcmVzZW50ID0gMTsNCiANCiAjaWZkZWYgSVBDVExfREVGTVRVDQpA
QCAtMjY3LDYgKzI3MCwxMiBAQA0KIAltYXhuaXBxID0gbm1iY2x1c3RlcnMg
LyAzMjsNCiAJbWF4ZnJhZ3NwZXJwYWNrZXQgPSAxNjsNCiANCisJLyogU3Rh
cnQgaXBwb3J0X3RpY2suICovDQorCWNhbGxvdXRfaW5pdCgmaXBwb3J0X3Rp
Y2tfY2FsbG91dCk7DQorCWlwcG9ydF90aWNrKE5VTEwpOw0KKwlFVkVOVEhB
TkRMRVJfUkVHSVNURVIoc2h1dGRvd25fcHJlX3N5bmMsIGlwX2ZpbmksIE5V
TEwsDQorCQlTSFVURE9XTl9QUklfREVGQVVMVCk7DQorDQogI2lmbmRlZiBS
QU5ET01fSVBfSUQNCiAJaXBfaWQgPSB0aW1lX3NlY29uZCAmIDB4ZmZmZjsN
CiAjZW5kaWYNCkBAIC0yNzQsNiArMjgzLDEzIEBADQogDQogCXJlZ2lzdGVy
X25ldGlzcihORVRJU1JfSVAsIGlwaW50cik7DQogfQ0KKw0KK3ZvaWQgaXBf
ZmluaSh4dHApDQorCXZvaWQgKnh0cDsNCit7DQorCWNhbGxvdXRfc3RvcCgm
aXBwb3J0X3RpY2tfY2FsbG91dCk7DQorfQ0KKw0KIA0KIC8qDQogICogWFhY
IHdhdGNoIG91dCB0aGlzIG9uZS4gSXQgaXMgcGVyaGFwcyB1c2VkIGFzIGEg
Y2FjaGUgZm9yDQpkaWZmIC11IC1yIC91c3Ivc3JjL3N5cy5vbGQvbmV0aW5l
dC9pcF92YXIuaCAvdXNyL3NyYy9zeXMvbmV0aW5ldC9pcF92YXIuaA0KLS0t
IC91c3Ivc3JjL3N5cy5vbGQvbmV0aW5ldC9pcF92YXIuaAlUaHUgRGVjIDE2
IDAzOjI2OjEyIDIwMDQNCisrKyAvdXNyL3NyYy9zeXMvbmV0aW5ldC9pcF92
YXIuaAlTYXQgRGVjIDI1IDE3OjEyOjEyIDIwMDQNCkBAIC0xNjAsNiArMTYw
LDcgQEANCiANCiBpbnQJIGlwX2N0bG91dHB1dChzdHJ1Y3Qgc29ja2V0ICos
IHN0cnVjdCBzb2Nrb3B0ICpzb3B0KTsNCiB2b2lkCSBpcF9kcmFpbih2b2lk
KTsNCit2b2lkCSBpcF9maW5pKHZvaWQgKnh0cCk7DQogaW50CSBpcF9mcmFn
bWVudChzdHJ1Y3QgaXAgKmlwLCBzdHJ1Y3QgbWJ1ZiAqKm1fZnJhZywgaW50
IG10dSwNCiAJICAgIHVfbG9uZyBpZl9od2Fzc2lzdF9mbGFncywgaW50IHN3
X2NzdW0pOw0KIHZvaWQJIGlwX2ZyZWVtb3B0aW9ucyhzdHJ1Y3QgaXBfbW9w
dGlvbnMgKik7DQo=

--0-1414219215-1104310690=:26249
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME="portrandom-gen4.patch"
Content-Transfer-Encoding: BASE64
Content-ID: <20041229025810.S26249@odysseus.silby.com>
Content-Description: 
Content-Disposition: ATTACHMENT; FILENAME="portrandom-gen4.patch"

ZGlmZiAtdSAtciAvdXNyL3NyYy9zeXMub2xkL25ldGluZXQvaW5fcGNiLmMg
L3Vzci9zcmMvc3lzL25ldGluZXQvaW5fcGNiLmMNCi0tLSAvdXNyL3NyYy9z
eXMub2xkL25ldGluZXQvaW5fcGNiLmMJRnJpIERlYyAyNCAxOTo0NToxNSAy
MDA0DQorKysgL3Vzci9zcmMvc3lzL25ldGluZXQvaW5fcGNiLmMJU2F0IERl
YyAyNSAxMzo1MToyNCAyMDA0DQpAQCAtNTksNiArNTksOCBAQA0KICNpbmNs
dWRlIDxuZXRpbmV0L2luX3Zhci5oPg0KICNpbmNsdWRlIDxuZXRpbmV0L2lw
X3Zhci5oPg0KICNpbmNsdWRlIDxuZXRpbmV0L3RjcF92YXIuaD4NCisjaW5j
bHVkZSA8bmV0aW5ldC91ZHAuaD4NCisjaW5jbHVkZSA8bmV0aW5ldC91ZHBf
dmFyLmg+DQogI2lmZGVmIElORVQ2DQogI2luY2x1ZGUgPG5ldGluZXQvaXA2
Lmg+DQogI2luY2x1ZGUgPG5ldGluZXQ2L2lwNl92YXIuaD4NCkBAIC05Nyw4
ICs5OSwxMiBAQA0KIGludAlpcHBvcnRfcmVzZXJ2ZWRoaWdoID0gSVBQT1JU
X1JFU0VSVkVEIC0gMTsJLyogMTAyMyAqLw0KIGludAlpcHBvcnRfcmVzZXJ2
ZWRsb3cgPSAwOw0KIA0KLS8qIFNoYWxsIHdlIGFsbG9jYXRlIGVwaGVtZXJh
bCBwb3J0cyBpbiByYW5kb20gb3JkZXI/ICovDQotaW50CWlwcG9ydF9yYW5k
b21pemVkID0gMTsNCisvKiBWYXJpYWJsZXMgZGVhbGluZyB3aXRoIHJhbmRv
bSBlcGhlbWVyYWwgcG9ydCBhbGxvY2F0aW9uLiAqLw0KK2ludAlpcHBvcnRf
cmFuZG9taXplZCA9IDE7CS8qIHVzZXIgY29udHJvbGxlZCB2aWEgc3lzY3Rs
ICovDQoraW50CWlwcG9ydF9yYW5kb21jcHMgPSAyMDsJLyogdXNlciBjb250
cm9sbGVkIHZpYSBzeXNjdGwgKi8NCitpbnQJaXBwb3J0X3N0b3ByYW5kb20g
PSAwOwkvKiB0b2dnbGVkIGJ5IGlwcG9ydF90aWNrICovDQoraW50CWlwcG9y
dF90Y3BhbGxvY3M7DQoraW50CWlwcG9ydF90Y3BsYXN0Y291bnQ7DQogDQog
I2RlZmluZSBSQU5HRUNISyh2YXIsIG1pbiwgbWF4KSBcDQogCWlmICgodmFy
KSA8IChtaW4pKSB7ICh2YXIpID0gKG1pbik7IH0gXA0KQEAgLTE0Myw2ICsx
NDksOCBAQA0KIAkgICBDVExGTEFHX1JXfENUTEZMQUdfU0VDVVJFLCAmaXBw
b3J0X3Jlc2VydmVkbG93LCAwLCAiIik7DQogU1lTQ1RMX0lOVChfbmV0X2lu
ZXRfaXBfcG9ydHJhbmdlLCBPSURfQVVUTywgcmFuZG9taXplZCwNCiAJICAg
Q1RMRkxBR19SVywgJmlwcG9ydF9yYW5kb21pemVkLCAwLCAiIik7DQorU1lT
Q1RMX0lOVChfbmV0X2luZXRfaXBfcG9ydHJhbmdlLCBPSURfQVVUTywgcmFu
ZG9tY3BzLA0KKwkgICBDVExGTEFHX1JXLCAmaXBwb3J0X3JhbmRvbWNwcywg
MCwgIiIpOw0KIA0KIC8qDQogICogaW5fcGNiLmM6IG1hbmFnZSB0aGUgUHJv
dG9jb2wgQ29udHJvbCBCbG9ja3MuDQpAQCAtMjY2LDYgKzI3NCw3IEBADQog
CXVfc2hvcnQgbHBvcnQgPSAwOw0KIAlpbnQgd2lsZCA9IDAsIHJldXNlcG9y
dCA9IChzby0+c29fb3B0aW9ucyAmIFNPX1JFVVNFUE9SVCk7DQogCWludCBl
cnJvciwgcHJpc29uID0gMDsNCisJaW50IGRvcmFuZG9tOw0KIA0KIAlJTlBf
SU5GT19XTE9DS19BU1NFUlQocGNiaW5mbyk7DQogCUlOUF9MT0NLX0FTU0VS
VChpbnApOw0KQEAgLTM5NCw2ICs0MDMsMjAgQEANCiAJCQlsYXN0cG9ydCA9
ICZwY2JpbmZvLT5sYXN0cG9ydDsNCiAJCX0NCiAJCS8qDQorCQkgKiBGb3Ig
VURQLCB1c2UgcmFuZG9tIHBvcnQgYWxsb2NhdGlvbiBhcyBsb25nIGFzIHRo
ZSB1c2VyDQorCQkgKiBhbGxvd3MgaXQuICBGb3IgVENQIChhbmQgYXMgb2Yg
eWV0IHVua25vd24pIGNvbm5lY3Rpb25zLA0KKwkJICogdXNlIHJhbmRvbSBw
b3J0IGFsbG9jYXRpb24gb25seSBpZiB0aGUgdXNlciBhbGxvd3MgaXQgQU5E
DQorCQkgKiBpcHBvcnRfdGljayBhbGxvd3MgaXQuDQorCQkgKi8NCisJCWlm
IChpcHBvcnRfcmFuZG9taXplZCAmJg0KKwkJCSghaXBwb3J0X3N0b3ByYW5k
b20gfHwgcGNiaW5mbyA9PSAmdWRiaW5mbykpDQorCQkJZG9yYW5kb20gPSAx
Ow0KKwkJZWxzZQ0KKwkJCWRvcmFuZG9tID0gMDsNCisJCS8qIE1ha2Ugc3Vy
ZSB0byBub3QgaW5jbHVkZSBVRFAgcGFja2V0cyBpbiB0aGUgY291bnQuICov
DQorCQlpZiAocGNiaW5mbyAhPSAmdWRiaW5mbykNCisJCQlpcHBvcnRfdGNw
YWxsb2NzKys7DQorCQkvKg0KIAkJICogU2ltcGxlIGNoZWNrIHRvIGVuc3Vy
ZSBhbGwgcG9ydHMgYXJlIG5vdCB1c2VkIHVwIGNhdXNpbmcNCiAJCSAqIGEg
ZGVhZGxvY2sgaGVyZS4NCiAJCSAqDQpAQCAtNDA0LDcgKzQyNyw3IEBADQog
CQkJLyoNCiAJCQkgKiBjb3VudGluZyBkb3duDQogCQkJICovDQotCQkJaWYg
KGlwcG9ydF9yYW5kb21pemVkKQ0KKwkJCWlmIChkb3JhbmRvbSkNCiAJCQkJ
Kmxhc3Rwb3J0ID0gZmlyc3QgLQ0KIAkJCQkJICAgIChhcmM0cmFuZG9tKCkg
JSAoZmlyc3QgLSBsYXN0KSk7DQogCQkJY291bnQgPSBmaXJzdCAtIGxhc3Q7
DQpAQCAtNDIyLDcgKzQ0NSw3IEBADQogCQkJLyoNCiAJCQkgKiBjb3VudGlu
ZyB1cA0KIAkJCSAqLw0KLQkJCWlmIChpcHBvcnRfcmFuZG9taXplZCkNCisJ
CQlpZiAoZG9yYW5kb20pDQogCQkJCSpsYXN0cG9ydCA9IGZpcnN0ICsNCiAJ
CQkJCSAgICAoYXJjNHJhbmRvbSgpICUgKGxhc3QgLSBmaXJzdCkpOw0KIAkJ
CWNvdW50ID0gbGFzdCAtIGZpcnN0Ow0KQEAgLTExODAsNCArMTIwMywzMCBA
QA0KIAlTT0NLX1VOTE9DSyhzbyk7DQogCUlOUF9VTkxPQ0soaW5wKTsNCiAj
ZW5kaWYNCit9DQorDQorLyoNCisgKiBpcHBvcnRfdGljayBydW5zIG9uY2Ug
cGVyIHNlY29uZCwgZGV0ZXJtaW5pbmcgaWYgcmFuZG9tIHBvcnQNCisgKiBh
bGxvY2F0aW9uIHNob3VsZCBiZSBjb250aW51ZWQuICBJZiBtb3JlIHRoYW4g
aXBwb3J0X3JhbmRvbWNwcw0KKyAqIHBvcnRzIGhhdmUgYmVlbiBhbGxvY2F0
ZWQgaW4gdGhlIGxhc3Qgc2Vjb25kLCB0aGVuIHdlIHJldHVybiB0bw0KKyAq
IHNlcXVlbnRpYWwgcG9ydCBhbGxvY2F0aW9uLiBXZSByZXR1cm4gdG8gcmFu
ZG9tIGFsbG9jYXRpb24gb25seQ0KKyAqIG9uY2Ugd2UgZHJvcCBiZWxvdyBp
cHBvcnRfcmFuZG9tY3BzIGZvciBhdCBsZWFzdCA1IHNlY29uZHMuDQorICov
DQorDQordm9pZA0KK2lwcG9ydF90aWNrKHh0cCkNCisJdm9pZCAqeHRwOw0K
K3sNCisJaWYgKGlwcG9ydF90Y3BhbGxvY3MgPiBpcHBvcnRfdGNwbGFzdGNv
dW50ICsgaXBwb3J0X3JhbmRvbWNwcykgew0KKwkJaWYgKGlwcG9ydF9zdG9w
cmFuZG9tID09IDApDQorCQkJcHJpbnRmKCJTdG9wcGluZyByYW5kb20gYWxs
b2NhdGlvblxuIik7DQorCQlpcHBvcnRfc3RvcHJhbmRvbSA9IDU7DQorCX0g
ZWxzZSB7DQorCQlpZiAoaXBwb3J0X3N0b3ByYW5kb20gPT0gMSkNCisJCQlw
cmludGYoIkdvaW5nIGJhY2sgdG8gcmFuZG9tIGFsbG9jYXRpb25cbiIpOw0K
KwkJaWYgKGlwcG9ydF9zdG9wcmFuZG9tID4gMCkNCisJCQlpcHBvcnRfc3Rv
cHJhbmRvbS0tOw0KKwl9DQorCWlwcG9ydF90Y3BsYXN0Y291bnQgPSBpcHBv
cnRfdGNwYWxsb2NzOw0KKwljYWxsb3V0X3Jlc2V0KCZpcHBvcnRfdGlja19j
YWxsb3V0LCBoeiwgaXBwb3J0X3RpY2ssIE5VTEwpOw0KIH0NCmRpZmYgLXUg
LXIgL3Vzci9zcmMvc3lzLm9sZC9uZXRpbmV0L2luX3BjYi5oIC91c3Ivc3Jj
L3N5cy9uZXRpbmV0L2luX3BjYi5oDQotLS0gL3Vzci9zcmMvc3lzLm9sZC9u
ZXRpbmV0L2luX3BjYi5oCUZyaSBEZWMgMjQgMTk6NDU6MTUgMjAwNA0KKysr
IC91c3Ivc3JjL3N5cy9uZXRpbmV0L2luX3BjYi5oCUZyaSBEZWMgMjQgMjA6
MDI6MTQgMjAwNA0KQEAgLTMzMyw2ICszMzMsNyBAQA0KIGV4dGVybiBpbnQJ
aXBwb3J0X2xhc3RhdXRvOw0KIGV4dGVybiBpbnQJaXBwb3J0X2hpZmlyc3Rh
dXRvOw0KIGV4dGVybiBpbnQJaXBwb3J0X2hpbGFzdGF1dG87DQorZXh0ZXJu
IHN0cnVjdCBjYWxsb3V0IGlwcG9ydF90aWNrX2NhbGxvdXQ7DQogDQogdm9p
ZAlpbl9wY2JwdXJnZWlmMChzdHJ1Y3QgaW5wY2JpbmZvICosIHN0cnVjdCBp
Zm5ldCAqKTsNCiBpbnQJaW5fcGNiYWxsb2Moc3RydWN0IHNvY2tldCAqLCBz
dHJ1Y3QgaW5wY2JpbmZvICosIGNvbnN0IGNoYXIgKik7DQpAQCAtMzYyLDYg
KzM2Myw3IEBADQogCWluX3NvY2thZGRyKGluX3BvcnRfdCBwb3J0LCBzdHJ1
Y3QgaW5fYWRkciAqYWRkcik7DQogdm9pZAlpbl9wY2Jzb3NldGxhYmVsKHN0
cnVjdCBzb2NrZXQgKnNvKTsNCiB2b2lkCWluX3BjYnJlbWxpc3RzKHN0cnVj
dCBpbnBjYiAqaW5wKTsNCit2b2lkCWlwcG9ydF90aWNrKHZvaWQgKnh0cCk7
DQogI2VuZGlmIC8qIF9LRVJORUwgKi8NCiANCiAjZW5kaWYgLyogIV9ORVRJ
TkVUX0lOX1BDQl9IXyAqLw0KZGlmZiAtdSAtciAvdXNyL3NyYy9zeXMub2xk
L25ldGluZXQvaXBfaW5wdXQuYyAvdXNyL3NyYy9zeXMvbmV0aW5ldC9pcF9p
bnB1dC5jDQotLS0gL3Vzci9zcmMvc3lzLm9sZC9uZXRpbmV0L2lwX2lucHV0
LmMJRnJpIERlYyAyNCAxOTo0NToxNSAyMDA0DQorKysgL3Vzci9zcmMvc3lz
L25ldGluZXQvaXBfaW5wdXQuYwlTYXQgRGVjIDI1IDEzOjM3OjUxIDIwMDQN
CkBAIC0zOCw2ICszOCw3IEBADQogDQogI2luY2x1ZGUgPHN5cy9wYXJhbS5o
Pg0KICNpbmNsdWRlIDxzeXMvc3lzdG0uaD4NCisjaW5jbHVkZSA8c3lzL2Nh
bGxvdXQuaD4NCiAjaW5jbHVkZSA8c3lzL21hYy5oPg0KICNpbmNsdWRlIDxz
eXMvbWJ1Zi5oPg0KICNpbmNsdWRlIDxzeXMvbWFsbG9jLmg+DQpAQCAtMTg2
LDYgKzE4Nyw3IEBADQogDQogc3RhdGljIFRBSUxRX0hFQUQoaXBxaGVhZCwg
aXBxKSBpcHFbSVBSRUFTU19OSEFTSF07DQogc3RydWN0IG10eCBpcHFsb2Nr
Ow0KK3N0cnVjdCBjYWxsb3V0IGlwcG9ydF90aWNrX2NhbGxvdXQ7DQogDQog
I2RlZmluZQlJUFFfTE9DSygpCW10eF9sb2NrKCZpcHFsb2NrKQ0KICNkZWZp
bmUJSVBRX1VOTE9DSygpCW10eF91bmxvY2soJmlwcWxvY2spDQpAQCAtMjc5
LDExICsyODEsMjMgQEANCiAJbWF4bmlwcSA9IG5tYmNsdXN0ZXJzIC8gMzI7
DQogCW1heGZyYWdzcGVycGFja2V0ID0gMTY7DQogDQorCS8qIFN0YXJ0IGlw
cG9ydF90aWNrLiAqLw0KKwljYWxsb3V0X2luaXQoJmlwcG9ydF90aWNrX2Nh
bGxvdXQsIENBTExPVVRfTVBTQUZFKTsNCisJaXBwb3J0X3RpY2soTlVMTCk7
DQorCUVWRU5USEFORExFUl9SRUdJU1RFUihzaHV0ZG93bl9wcmVfc3luYywg
aXBfZmluaSwgTlVMTCwNCisJCVNIVVRET1dOX1BSSV9ERUZBVUxUKTsNCisN
CiAJLyogSW5pdGlhbGl6ZSB2YXJpb3VzIG90aGVyIHJlbWFpbmluZyB0aGlu
Z3MuICovDQogCWlwX2lkID0gdGltZV9zZWNvbmQgJiAweGZmZmY7DQogCWlw
aW50cnEuaWZxX21heGxlbiA9IGlwcW1heGxlbjsNCiAJbXR4X2luaXQoJmlw
aW50cnEuaWZxX210eCwgImlwX2lucSIsIE5VTEwsIE1UWF9ERUYpOw0KIAlu
ZXRpc3JfcmVnaXN0ZXIoTkVUSVNSX0lQLCBpcF9pbnB1dCwgJmlwaW50cnEs
IE5FVElTUl9NUFNBRkUpOw0KK30NCisNCit2b2lkIGlwX2ZpbmkoeHRwKQ0K
Kwl2b2lkICp4dHA7DQorew0KKwljYWxsb3V0X3N0b3AoJmlwcG9ydF90aWNr
X2NhbGxvdXQpOw0KIH0NCiANCiAvKg0KT25seSBpbiAvdXNyL3NyYy9zeXMv
bmV0aW5ldDogaXBfaW5wdXQuYy5vcmlnDQpkaWZmIC11IC1yIC91c3Ivc3Jj
L3N5cy5vbGQvbmV0aW5ldC9pcF92YXIuaCAvdXNyL3NyYy9zeXMvbmV0aW5l
dC9pcF92YXIuaA0KLS0tIC91c3Ivc3JjL3N5cy5vbGQvbmV0aW5ldC9pcF92
YXIuaAlGcmkgRGVjIDI0IDE5OjQ1OjE1IDIwMDQNCisrKyAvdXNyL3NyYy9z
eXMvbmV0aW5ldC9pcF92YXIuaAlTYXQgRGVjIDI1IDEzOjI5OjU0IDIwMDQN
CkBAIC0xNTksNiArMTU5LDcgQEANCiANCiBpbnQJIGlwX2N0bG91dHB1dChz
dHJ1Y3Qgc29ja2V0ICosIHN0cnVjdCBzb2Nrb3B0ICpzb3B0KTsNCiB2b2lk
CSBpcF9kcmFpbih2b2lkKTsNCit2b2lkCSBpcF9maW5pKHZvaWQgKnh0cCk7
DQogaW50CSBpcF9mcmFnbWVudChzdHJ1Y3QgaXAgKmlwLCBzdHJ1Y3QgbWJ1
ZiAqKm1fZnJhZywgaW50IG10dSwNCiAJICAgIHVfbG9uZyBpZl9od2Fzc2lz
dF9mbGFncywgaW50IHN3X2NzdW0pOw0KIHZvaWQJIGlwX2ZyZWVtb3B0aW9u
cyhzdHJ1Y3QgaXBfbW9wdGlvbnMgKik7DQo=

--0-1414219215-1104310690=:26249--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20041229025718.U26249>