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>