From owner-freebsd-net Mon Jun 3 20:58:34 2002 Delivered-To: freebsd-net@freebsd.org Received: from gateway.posi.net (12-236-90-177.client.attbi.com [12.236.90.177]) by hub.freebsd.org (Postfix) with ESMTP id AECFA37B400 for ; Mon, 3 Jun 2002 20:58:15 -0700 (PDT) Received: from localhost (localhost [127.0.0.1]) by gateway.posi.net (8.12.3/8.12.3) with ESMTP id g543w8M7033236 for ; Mon, 3 Jun 2002 20:58:14 -0700 (PDT) (envelope-from kbyanc@posi.net) Date: Mon, 3 Jun 2002 20:58:08 -0700 (PDT) From: Kelly Yancey To: freebsd-net@FreeBSD.ORG Subject: Request for review: patch to make netstat -rW behave as described in netstat(1) Message-ID: <20020603205104.T33228-200000@gateway.posi.net> MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="0-1401783618-1023163088=:33228" Sender: owner-freebsd-net@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.org 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-1401783618-1023163088=:33228 Content-Type: TEXT/PLAIN; charset=US-ASCII I would appreciate it if someone could review the attached patch which makes netstat calculate column widths for the routing table when the -W flag is specified rather than just picking larger arbitrary values as it does now. Other than making -W more useful, it syncs reality to the documentation; from netstat(1): -W In certain displays, avoid truncating addresses even if this causes some fields to overflow. Basically, all the patch does is add a preliminary pass to calculate the necessary column widths when -W is specified. It is pretty straightforward, but nonetheless, I'de appreciate feedback before I commit it. Thanks, Kelly kbyanc@{posi.net,FreeBSD.org} * Wow, netstat is so far from WARNS-clean, it's scary. --0-1401783618-1023163088=:33228 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="netstat.diff" Content-Transfer-Encoding: BASE64 Content-ID: <20020603205808.V33228@gateway.posi.net> Content-Description: Content-Disposition: attachment; filename="netstat.diff" SW5kZXg6IHVzci5iaW4vbmV0c3RhdC9yb3V0ZS5jDQo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09DQpSQ1MgZmlsZTogL2hvbWUvbmN2cy9zcmMvdXNyLmJpbi9u ZXRzdGF0L3JvdXRlLmMsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjY1DQpk aWZmIC11IC11IC1yMS42NSByb3V0ZS5jDQotLS0gdXNyLmJpbi9uZXRzdGF0 L3JvdXRlLmMJMzEgTWF5IDIwMDIgMDQ6MzY6NTUgLTAwMDAJMS42NQ0KKysr IHVzci5iaW4vbmV0c3RhdC9yb3V0ZS5jCTQgSnVuIDIwMDIgMDM6NDc6NTcg LTAwMDANCkBAIC0xMjYsMTIgKzEyNiwxOCBAQA0KIGludAlOZXdUcmVlID0g MDsNCiANCiBzdGF0aWMgc3RydWN0IHNvY2thZGRyICprZ2V0c2EgKHN0cnVj dCBzb2NrYWRkciAqKTsNCitzdGF0aWMgdm9pZCBzaXplX2NvbHMgKGludCBl Ziwgc3RydWN0IHJhZGl4X25vZGUgKnJuKTsNCitzdGF0aWMgdm9pZCBzaXpl X2NvbHNfdHJlZSAoc3RydWN0IHJhZGl4X25vZGUgKnJuKTsNCitzdGF0aWMg dm9pZCBzaXplX2NvbHNfcnRlbnRyeSAoc3RydWN0IHJ0ZW50cnkgKnJ0KTsN CiBzdGF0aWMgdm9pZCBwX3RyZWUgKHN0cnVjdCByYWRpeF9ub2RlICopOw0K IHN0YXRpYyB2b2lkIHBfcnRub2RlICh2b2lkKTsNCiBzdGF0aWMgdm9pZCBu dHJlZXN0dWZmICh2b2lkKTsNCiBzdGF0aWMgdm9pZCBucF9ydGVudHJ5IChz dHJ1Y3QgcnRfbXNnaGRyICopOw0KIHN0YXRpYyB2b2lkIHBfc29ja2FkZHIg KHN0cnVjdCBzb2NrYWRkciAqLCBzdHJ1Y3Qgc29ja2FkZHIgKiwgaW50LCBp bnQpOw0KK3N0YXRpYyBjb25zdCBjaGFyICpmbXRfc29ja2FkZHIgKHN0cnVj dCBzb2NrYWRkciAqc2EsIHN0cnVjdCBzb2NrYWRkciAqbWFzaywNCisJCQkJ IGludCBmbGFncyk7DQogc3RhdGljIHZvaWQgcF9mbGFncyAoaW50LCBjaGFy ICopOw0KK3N0YXRpYyBjb25zdCBjaGFyICpmbXRfZmxhZ3MoaW50IGYpOw0K IHN0YXRpYyB2b2lkIHBfcnRlbnRyeSAoc3RydWN0IHJ0ZW50cnkgKik7DQog c3RhdGljIHVfbG9uZyBmb3JnZW1hc2sgKHVfbG9uZyk7DQogc3RhdGljIHZv aWQgZG9tYXNrIChjaGFyICosIHVfbG9uZywgdV9sb25nKTsNCkBAIC0xNjYs NiArMTcyLDcgQEANCiAJCQkJCXBfdHJlZShoZWFkLnJuaF90cmVldG9wKTsN CiAJCQkJfQ0KIAkJCX0gZWxzZSBpZiAoYWYgPT0gQUZfVU5TUEVDIHx8IGFm ID09IGkpIHsNCisJCQkJc2l6ZV9jb2xzKGksIGhlYWQucm5oX3RyZWV0b3Ap Ow0KIAkJCQlwcl9mYW1pbHkoaSk7DQogCQkJCWRvX3J0ZW50ID0gMTsNCiAJ CQkJcHJfcnRoZHIoaSk7DQpAQCAtMjI0LDE3ICsyMzEsMTM0IEBADQogDQog LyogY29sdW1uIHdpZHRoczsgZWFjaCBmb2xsb3dlZCBieSBvbmUgc3BhY2Ug Ki8NCiAjaWZuZGVmIElORVQ2DQotI2RlZmluZQlXSURfRFNUKGFmKSAJMTgJ Lyogd2lkdGggb2YgZGVzdGluYXRpb24gY29sdW1uICovDQotI2RlZmluZQlX SURfR1coYWYpCTE4CS8qIHdpZHRoIG9mIGdhdGV3YXkgY29sdW1uICovDQot I2RlZmluZQlXSURfSUYoYWYpCTYJLyogd2lkdGggb2YgbmV0aWYgY29sdW1u ICovDQorI2RlZmluZQlXSURfRFNUX0RFRkFVTFQoYWYpIAkxOAkvKiB3aWR0 aCBvZiBkZXN0aW5hdGlvbiBjb2x1bW4gKi8NCisjZGVmaW5lCVdJRF9HV19E RUZBVUxUKGFmKQkxOAkvKiB3aWR0aCBvZiBnYXRld2F5IGNvbHVtbiAqLw0K KyNkZWZpbmUJV0lEX0lGX0RFRkFVTFQoYWYpCTYJLyogd2lkdGggb2YgbmV0 aWYgY29sdW1uICovDQogI2Vsc2UNCi0jZGVmaW5lCVdJRF9EU1QoYWYpIFwN Ci0JKChhZikgPT0gQUZfSU5FVDYgPyAoV2ZsYWcgPyAzOSA6IChudW1lcmlj X2FkZHIgPyAzMzogMTgpKSA6IDE4KQ0KLSNkZWZpbmUJV0lEX0dXKGFmKSBc DQotCSgoYWYpID09IEFGX0lORVQ2ID8gKFdmbGFnID8gMzEgOiAobnVtZXJp Y19hZGRyID8gMjkgOiAxOCkpIDogMTgpDQotI2RlZmluZQlXSURfSUYoYWYp CSgoYWYpID09IEFGX0lORVQ2ID8gOCA6IDYpDQorI2RlZmluZQlXSURfRFNU X0RFRkFVTFQoYWYpIFwNCisJKChhZikgPT0gQUZfSU5FVDYgPyAobnVtZXJp Y19hZGRyID8gMzM6IDE4KSA6IDE4KQ0KKyNkZWZpbmUJV0lEX0dXX0RFRkFV TFQoYWYpIFwNCisJKChhZikgPT0gQUZfSU5FVDYgPyAobnVtZXJpY19hZGRy ID8gMjkgOiAxOCkgOiAxOCkNCisjZGVmaW5lCVdJRF9JRl9ERUZBVUxUKGFm KQkoKGFmKSA9PSBBRl9JTkVUNiA/IDggOiA2KQ0KICNlbmRpZiAvKklORVQ2 Ki8NCiANCitzdGF0aWMgaW50IHdpZF9kc3Q7DQorc3RhdGljIGludCB3aWRf Z3c7DQorc3RhdGljIGludCB3aWRfZmxhZ3M7DQorc3RhdGljIGludCB3aWRf cmVmczsNCitzdGF0aWMgaW50IHdpZF91c2U7DQorc3RhdGljIGludCB3aWRf bXR1Ow0KK3N0YXRpYyBpbnQgd2lkX2lmOw0KK3N0YXRpYyBpbnQgd2lkX2V4 cGlyZTsNCisNCitzdGF0aWMgdm9pZA0KK3NpemVfY29scyhpbnQgZWYsIHN0 cnVjdCByYWRpeF9ub2RlICpybikNCit7DQorCXdpZF9kc3QgPSBXSURfRFNU X0RFRkFVTFQoZWYpOw0KKwl3aWRfZ3cgPSBXSURfR1dfREVGQVVMVChlZik7 DQorCXdpZF9mbGFncyA9IDY7DQorCXdpZF9yZWZzID0gNjsNCisJd2lkX3Vz ZSA9IDg7DQorCXdpZF9tdHUgPSA2Ow0KKwl3aWRfaWYgPSBXSURfSUZfREVG QVVMVChlZik7DQorCXdpZF9leHBpcmUgPSA2Ow0KKw0KKwlpZiAoV2ZsYWcp DQorCQlzaXplX2NvbHNfdHJlZShybik7DQorfQ0KKw0KK3N0YXRpYyB2b2lk DQorc2l6ZV9jb2xzX3RyZWUoc3RydWN0IHJhZGl4X25vZGUgKnJuKQ0KK3sN CithZ2FpbjoNCisJa2dldChybiwgcm5vZGUpOw0KKwlpZiAocm5vZGUucm5f Yml0IDwgMCkgew0KKwkJaWYgKChybm9kZS5ybl9mbGFncyAmIFJORl9ST09U KSA9PSAwKSB7DQorCQkJa2dldChybiwgcnRlbnRyeSk7DQorCQkJc2l6ZV9j b2xzX3J0ZW50cnkoJnJ0ZW50cnkpOw0KKwkJfQ0KKwkJaWYgKChybiA9IHJu b2RlLnJuX2R1cGVka2V5KSkNCisJCQlnb3RvIGFnYWluOw0KKwl9IGVsc2Ug ew0KKwkJcm4gPSBybm9kZS5ybl9yaWdodDsNCisJCXNpemVfY29sc190cmVl KHJub2RlLnJuX2xlZnQpOw0KKwkJc2l6ZV9jb2xzX3RyZWUocm4pOw0KKwl9 DQorfQ0KKw0KK3N0YXRpYyB2b2lkDQorc2l6ZV9jb2xzX3J0ZW50cnkoc3Ry dWN0IHJ0ZW50cnkgKnJ0KQ0KK3sNCisJc3RhdGljIHN0cnVjdCBpZm5ldCBp Zm5ldCwgKmxhc3RpZjsNCisJc3RydWN0IHJ0ZW50cnkgcGFyZW50Ow0KKwlz dGF0aWMgY2hhciBidWZmZXJbMTAwXTsNCisJY29uc3QgY2hhciAqYnA7DQor CXN0cnVjdCBzb2NrYWRkciAqc2E7DQorCXNhX3UgYWRkciwgbWFzazsNCisJ aW50IGxlbjsNCisNCisJLyoNCisJICogRG9uJ3QgcHJpbnQgcHJvdG9jb2wt Y2xvbmVkIHJvdXRlcyB1bmxlc3MgLWEuDQorCSAqLw0KKwlpZiAocnQtPnJ0 X2ZsYWdzICYgUlRGX1dBU0NMT05FRCAmJiAhYWZsYWcpIHsNCisJCWtnZXQo cnQtPnJ0X3BhcmVudCwgcGFyZW50KTsNCisJCWlmIChwYXJlbnQucnRfZmxh Z3MgJiBSVEZfUFJDTE9OSU5HKQ0KKwkJCXJldHVybjsNCisJfQ0KKw0KKwli emVybygmYWRkciwgc2l6ZW9mKGFkZHIpKTsNCisJaWYgKChzYSA9IGtnZXRz YShydF9rZXkocnQpKSkpDQorCQliY29weShzYSwgJmFkZHIsIHNhLT5zYV9s ZW4pOw0KKwliemVybygmbWFzaywgc2l6ZW9mKG1hc2spKTsNCisJaWYgKHJ0 X21hc2socnQpICYmIChzYSA9IGtnZXRzYShydF9tYXNrKHJ0KSkpKQ0KKwkJ YmNvcHkoc2EsICZtYXNrLCBzYS0+c2FfbGVuKTsNCisJYnAgPSBmbXRfc29j a2FkZHIoJmFkZHIudV9zYSwgJm1hc2sudV9zYSwgcnQtPnJ0X2ZsYWdzKTsN CisJbGVuID0gc3RybGVuKGJwKTsNCisJd2lkX2RzdCA9IE1BWChsZW4sIHdp ZF9kc3QpOw0KKw0KKwlicCA9IGZtdF9zb2NrYWRkcihrZ2V0c2EocnQtPnJ0 X2dhdGV3YXkpLCBOVUxMLCBSVEZfSE9TVCk7DQorCWxlbiA9IHN0cmxlbihi cCk7DQorCXdpZF9ndyA9IE1BWChsZW4sIHdpZF9ndyk7DQorDQorCWJwID0g Zm10X2ZsYWdzKHJ0LT5ydF9mbGFncyk7DQorCWxlbiA9IHN0cmxlbihicCk7 DQorCXdpZF9mbGFncyA9IE1BWChsZW4sIHdpZF9mbGFncyk7DQorDQorCWlm IChhZGRyLnVfc2Euc2FfZmFtaWx5ID09IEFGX0lORVQgfHwgV2ZsYWcpIHsN CisJCWxlbiA9IHNucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksICIl bGQiLCBydC0+cnRfcmVmY250KTsNCisJCXdpZF9yZWZzID0gTUFYKGxlbiwg d2lkX3JlZnMpOw0KKwkJbGVuID0gc25wcmludGYoYnVmZmVyLCBzaXplb2Yo YnVmZmVyKSwgIiVsdSIsIHJ0LT5ydF91c2UpOw0KKwkJd2lkX3VzZSA9IE1B WChsZW4sIHdpZF91c2UpOw0KKwkJaWYgKFdmbGFnICYmIHJ0LT5ydF9ybXgu cm14X210dSAhPSAwKSB7DQorCQkJbGVuID0gc25wcmludGYoYnVmZmVyLCBz aXplb2YoYnVmZmVyKSwNCisJCQkJICAgICAgICIlbHUiLCBydC0+cnRfcm14 LnJteF9tdHUpOw0KKwkJCXdpZF9tdHUgPSBNQVgobGVuLCB3aWRfbXR1KTsN CisJCX0NCisJfQ0KKwlpZiAocnQtPnJ0X2lmcCkgew0KKwkJaWYgKHJ0LT5y dF9pZnAgIT0gbGFzdGlmKSB7DQorCQkJbGVuID0gc25wcmludGYoYnVmZmVy LCBzaXplb2YoYnVmZmVyKSwgIiVkIiwNCisJCQkJICAgICAgIGlmbmV0Lmlm X3VuaXQpOw0KKwkJCWtnZXQocnQtPnJ0X2lmcCwgaWZuZXQpOw0KKwkJCWty ZWFkKCh1X2xvbmcpaWZuZXQuaWZfbmFtZSwgYnVmZmVyLCBzaXplb2YoYnVm ZmVyKSk7DQorCQkJbGFzdGlmID0gcnQtPnJ0X2lmcDsNCisJCQlsZW4gKz0g c3RybGVuKGJ1ZmZlcik7DQorCQkJd2lkX2lmID0gTUFYKGxlbiwgd2lkX2lm KTsNCisJCX0NCisJCWlmIChydC0+cnRfcm14LnJteF9leHBpcmUpIHsNCisJ CQl0aW1lX3QgZXhwaXJlX3RpbWU7DQorDQorCQkJaWYgKChleHBpcmVfdGlt ZSA9DQorCQkJICAgIHJ0LT5ydF9ybXgucm14X2V4cGlyZSAtIHRpbWUoTlVM TCkpID4gMCkgew0KKwkJCQlzbnByaW50ZihidWZmZXIsIHNpemVvZihidWZm ZXIpLCAiJWQiLA0KKwkJCQkJIChpbnQpZXhwaXJlX3RpbWUpOw0KKwkJCQl3 aWRfZXhwaXJlID0gTUFYKGxlbiwgd2lkX2V4cGlyZSk7DQorCQkJfQ0KKwkJ fQ0KKwl9DQorfQ0KKw0KKw0KIC8qDQogICogUHJpbnQgaGVhZGVyIGZvciBy b3V0aW5nIHRhYmxlIGNvbHVtbnMuDQogICovDQpAQCAtMjQ0LDI0ICszNjgs MzUgQEANCiANCiAJaWYgKEFmbGFnKQ0KIAkJcHJpbnRmKCIlLTguOHMgIiwi QWRkcmVzcyIpOw0KLQlpZiAoYWYgPT0gQUZfSU5FVCB8fCBXZmxhZykNCi0J CWlmIChXZmxhZykNCi0JCQlwcmludGYoIiUtKi4qcyAlLSouKnMgJS02LjZz ICU2LjZzICU4LjhzICU2LjZzICUqLipzICU2c1xuIiwNCi0JCQkJV0lEX0RT VChhZiksIFdJRF9EU1QoYWYpLCAiRGVzdGluYXRpb24iLA0KLQkJCQlXSURf R1coYWYpLCBXSURfR1coYWYpLCAiR2F0ZXdheSIsDQotCQkJCSJGbGFncyIs ICJSZWZzIiwgIlVzZSIsICJNdHUiLA0KLQkJCQlXSURfSUYoYWYpLCBXSURf SUYoYWYpLCAiTmV0aWYiLCAiRXhwaXJlIik7DQotCQllbHNlDQotCQkJcHJp bnRmKCIlLSouKnMgJS0qLipzICUtNi42cyAlNi42cyAlOC44cyAlKi4qcyAl NnNcbiIsDQotCQkJCVdJRF9EU1QoYWYpLCBXSURfRFNUKGFmKSwgIkRlc3Rp bmF0aW9uIiwNCi0JCQkJV0lEX0dXKGFmKSwgV0lEX0dXKGFmKSwgIkdhdGV3 YXkiLA0KLQkJCQkiRmxhZ3MiLCAiUmVmcyIsICJVc2UiLA0KLQkJCQlXSURf SUYoYWYpLCBXSURfSUYoYWYpLCAiTmV0aWYiLCAiRXhwaXJlIik7DQotCWVs c2UNCi0JCXByaW50ZigiJS0qLipzICUtKi4qcyAlLTYuNnMgICU4LjhzICU2 c1xuIiwNCi0JCQlXSURfRFNUKGFmKSwgV0lEX0RTVChhZiksICJEZXN0aW5h dGlvbiIsDQotCQkJV0lEX0dXKGFmKSwgV0lEX0dXKGFmKSwgIkdhdGV3YXki LA0KLQkJCSJGbGFncyIsICJOZXRpZiIsICJFeHBpcmUiKTsNCisJaWYgKGFm ID09IEFGX0lORVQgfHwgV2ZsYWcpIHsNCisJCWlmIChXZmxhZykgew0KKwkJ CXByaW50ZigiJS0qLipzICUtKi4qcyAlLSouKnMgJSouKnMgJSouKnMgJSou KnMgJSouKnMgJSpzXG4iLA0KKwkJCQl3aWRfZHN0LAl3aWRfZHN0LAkiRGVz dGluYXRpb24iLA0KKwkJCQl3aWRfZ3csCQl3aWRfZ3csCQkiR2F0ZXdheSIs DQorCQkJCXdpZF9mbGFncywJd2lkX2ZsYWdzLAkiRmxhZ3MiLA0KKwkJCQl3 aWRfcmVmcywJd2lkX3JlZnMsCSJSZWZzIiwNCisJCQkJd2lkX3VzZSwJd2lk X3VzZSwJIlVzZSIsDQorCQkJCXdpZF9tdHUsCXdpZF9tdHUsCSJNdHUiLA0K KwkJCQl3aWRfaWYsCQl3aWRfaWYsCQkiTmV0aWYiLA0KKwkJCQl3aWRfZXhw aXJlLAkJCSJFeHBpcmUiKTsNCisJCX0gZWxzZSB7DQorCQkJcHJpbnRmKCIl LSouKnMgJS0qLipzICUtKi4qcyAlKi4qcyAlKi4qcyAlKi4qcyAlKnNcbiIs DQorCQkJCXdpZF9kc3QsCXdpZF9kc3QsCSJEZXN0aW5hdGlvbiIsDQorCQkJ CXdpZF9ndywJCXdpZF9ndywJCSJHYXRld2F5IiwNCisJCQkJd2lkX2ZsYWdz LAl3aWRfZmxhZ3MsCSJGbGFncyIsDQorCQkJCXdpZF9yZWZzLAl3aWRfcmVm cywJIlJlZnMiLA0KKwkJCQl3aWRfdXNlLAl3aWRfdXNlLAkiVXNlIiwNCisJ CQkJd2lkX2lmLAkJd2lkX2lmLAkJIk5ldGlmIiwNCisJCQkJd2lkX2V4cGly ZSwJCQkiRXhwaXJlIik7DQorCQl9DQorCX0gZWxzZSB7DQorCQlwcmludGYo IiUtKi4qcyAlLSouKnMgJS0qLipzICAlKi4qcyAlKnNcbiIsDQorCQkJd2lk X2RzdCwJd2lkX2RzdCwJIkRlc3RpbmF0aW9uIiwNCisJCQl3aWRfZ3csCQl3 aWRfZ3csCQkiR2F0ZXdheSIsDQorCQkJd2lkX2ZsYWdzLAl3aWRfZmxhZ3Ms CSJGbGFncyIsDQorCQkJd2lkX2lmLAkJd2lkX2lmLAkJIk5ldGlmIiwNCisJ CQl3aWRfZXhwaXJlLAkJCSJFeHBpcmUiKTsNCisJfQ0KIH0NCiANCiBzdGF0 aWMgc3RydWN0IHNvY2thZGRyICoNCkBAIC00MjIsOCArNTU3LDI2IEBADQog c3RhdGljIHZvaWQNCiBwX3NvY2thZGRyKHN0cnVjdCBzb2NrYWRkciAqc2Es IHN0cnVjdCBzb2NrYWRkciAqbWFzaywgaW50IGZsYWdzLCBpbnQgd2lkdGgp DQogew0KLQljaGFyIHdvcmtidWZbMTI4XSwgKmNwbGltOw0KLQlyZWdpc3Rl ciBjaGFyICpjcCA9IHdvcmtidWY7DQorCWNvbnN0IGNoYXIgKmNwOw0KKw0K KwljcCA9IGZtdF9zb2NrYWRkcihzYSwgbWFzaywgZmxhZ3MpOw0KKw0KKwlp ZiAod2lkdGggPCAwICkNCisJCXByaW50ZigiJXMgIiwgY3ApOw0KKwllbHNl IHsNCisJCWlmIChudW1lcmljX2FkZHIpDQorCQkJcHJpbnRmKCIlLSpzICIs IHdpZHRoLCBjcCk7DQorCQllbHNlDQorCQkJcHJpbnRmKCIlLSouKnMgIiwg d2lkdGgsIHdpZHRoLCBjcCk7DQorCX0NCit9DQorDQorc3RhdGljIGNvbnN0 IGNoYXIgKg0KK2ZtdF9zb2NrYWRkcihzdHJ1Y3Qgc29ja2FkZHIgKnNhLCBz dHJ1Y3Qgc29ja2FkZHIgKm1hc2ssIGludCBmbGFncykNCit7DQorCXN0YXRp YyBjaGFyIHdvcmtidWZbMTI4XTsNCisJY2hhciAqY3BsaW07DQorCWNoYXIg KmNwID0gd29ya2J1ZjsNCiANCiAJc3dpdGNoKHNhLT5zYV9mYW1pbHkpIHsN CiAJY2FzZSBBRl9JTkVUOg0KQEAgLTU0MiwyNyArNjk1LDI4IEBADQogCQlj cCA9IHdvcmtidWY7DQogCSAgICB9DQogCX0NCi0JaWYgKHdpZHRoIDwgMCAp DQotCQlwcmludGYoIiVzICIsIGNwKTsNCi0JZWxzZSB7DQotCQlpZiAobnVt ZXJpY19hZGRyKQ0KLQkJCXByaW50ZigiJS0qcyAiLCB3aWR0aCwgY3ApOw0K LQkJZWxzZQ0KLQkJCXByaW50ZigiJS0qLipzICIsIHdpZHRoLCB3aWR0aCwg Y3ApOw0KLQl9DQorDQorCXJldHVybiAoY3ApOw0KIH0NCiANCiBzdGF0aWMg dm9pZA0KIHBfZmxhZ3MoaW50IGYsIGNoYXIgKmZvcm1hdCkNCiB7DQotCWNo YXIgbmFtZVszM10sICpmbGFnczsNCi0JcmVnaXN0ZXIgc3RydWN0IGJpdHMg KnAgPSBiaXRzOw0KKwlwcmludGYoZm9ybWF0LCBmbXRfZmxhZ3MoZikpOw0K K30NCisNCitzdGF0aWMgY29uc3QgY2hhciAqDQorZm10X2ZsYWdzKGludCBm KQ0KK3sNCisJc3RhdGljIGNoYXIgbmFtZVszM107DQorCWNoYXIgKmZsYWdz Ow0KKwlzdHJ1Y3QgYml0cyAqcCA9IGJpdHM7DQogDQogCWZvciAoZmxhZ3Mg PSBuYW1lOyBwLT5iX21hc2s7IHArKykNCiAJCWlmIChwLT5iX21hc2sgJiBm KQ0KIAkJCSpmbGFncysrID0gcC0+Yl92YWw7DQogCSpmbGFncyA9ICdcMCc7 DQotCXByaW50Zihmb3JtYXQsIG5hbWUpOw0KKwlyZXR1cm4gKG5hbWUpOw0K IH0NCiANCiBzdGF0aWMgdm9pZA0KQEAgLTU3MCw4ICs3MjQsOCBAQA0KIHsN CiAJc3RhdGljIHN0cnVjdCBpZm5ldCBpZm5ldCwgKmxhc3RpZjsNCiAJc3Ry dWN0IHJ0ZW50cnkgcGFyZW50Ow0KLQlzdGF0aWMgY2hhciBuYW1lWzE2XTsN Ci0Jc3RhdGljIGNoYXIgcHJldHR5bmFtZVs5XTsNCisJc3RhdGljIGNoYXIg YnVmZmVyWzEyOF07DQorCXN0YXRpYyBjaGFyIHByZXR0eW5hbWVbMTI4XTsN CiAJc3RydWN0IHNvY2thZGRyICpzYTsNCiAJc2FfdSBhZGRyLCBtYXNrOw0K IA0KQEAgLTU5MCwzNiArNzQ0LDM1IEBADQogCWJ6ZXJvKCZtYXNrLCBzaXpl b2YobWFzaykpOw0KIAlpZiAocnRfbWFzayhydCkgJiYgKHNhID0ga2dldHNh KHJ0X21hc2socnQpKSkpDQogCQliY29weShzYSwgJm1hc2ssIHNhLT5zYV9s ZW4pOw0KLQlwX3NvY2thZGRyKCZhZGRyLnVfc2EsICZtYXNrLnVfc2EsIHJ0 LT5ydF9mbGFncywNCi0JICAgIFdJRF9EU1QoYWRkci51X3NhLnNhX2ZhbWls eSkpOw0KLQlwX3NvY2thZGRyKGtnZXRzYShydC0+cnRfZ2F0ZXdheSksIE5V TEwsIFJURl9IT1NULA0KLQkgICAgV0lEX0dXKGFkZHIudV9zYS5zYV9mYW1p bHkpKTsNCi0JcF9mbGFncyhydC0+cnRfZmxhZ3MsICIlLTYuNnMgIik7DQor CXBfc29ja2FkZHIoJmFkZHIudV9zYSwgJm1hc2sudV9zYSwgcnQtPnJ0X2Zs YWdzLCB3aWRfZHN0KTsNCisJcF9zb2NrYWRkcihrZ2V0c2EocnQtPnJ0X2dh dGV3YXkpLCBOVUxMLCBSVEZfSE9TVCwgd2lkX2d3KTsNCisJc25wcmludGYo YnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgIiUlLSVkLiVkcyAiLCB3aWRfZmxh Z3MsIHdpZF9mbGFncyk7DQorCXBfZmxhZ3MocnQtPnJ0X2ZsYWdzLCBidWZm ZXIpOw0KIAlpZiAoYWRkci51X3NhLnNhX2ZhbWlseSA9PSBBRl9JTkVUIHx8 IFdmbGFnKSB7DQotCQlwcmludGYoIiU2bGQgJThsdSAiLCBydC0+cnRfcmVm Y250LCBydC0+cnRfdXNlKTsNCisJCXByaW50ZigiJSpsZCAlKmx1ICIsIHdp ZF9yZWZzLCBydC0+cnRfcmVmY250LA0KKwkJCQkgICAgIHdpZF91c2UsIHJ0 LT5ydF91c2UpOw0KIAkJaWYgKFdmbGFnKSB7DQogCQkJaWYgKHJ0LT5ydF9y bXgucm14X210dSAhPSAwKQ0KLQkJCQlwcmludGYoIiU2bHUgIiwgcnQtPnJ0 X3JteC5ybXhfbXR1KTsNCisJCQkJcHJpbnRmKCIlKmx1ICIsIHdpZF9tdHUs IHJ0LT5ydF9ybXgucm14X210dSk7DQogCQkJZWxzZQ0KLQkJCQlwcmludGYo IiU2cyAiLCAiIik7DQorCQkJCXByaW50ZigiJSpzICIsIHdpZF9tdHUsICIi KTsNCiAJCX0NCiAJfQ0KIAlpZiAocnQtPnJ0X2lmcCkgew0KIAkJaWYgKHJ0 LT5ydF9pZnAgIT0gbGFzdGlmKSB7DQogCQkJa2dldChydC0+cnRfaWZwLCBp Zm5ldCk7DQotCQkJa3JlYWQoKHVfbG9uZylpZm5ldC5pZl9uYW1lLCBuYW1l LCAxNik7DQorCQkJa3JlYWQoKHVfbG9uZylpZm5ldC5pZl9uYW1lLCBidWZm ZXIsIHNpemVvZihidWZmZXIpKTsNCiAJCQlsYXN0aWYgPSBydC0+cnRfaWZw Ow0KLQkJCXNucHJpbnRmKHByZXR0eW5hbWUsIHNpemVvZiBwcmV0dHluYW1l LA0KLQkJCQkgIiVzJWQiLCBuYW1lLCBpZm5ldC5pZl91bml0KTsNCisJCQlz bnByaW50ZihwcmV0dHluYW1lLCBzaXplb2YocHJldHR5bmFtZSksDQorCQkJ CSAiJXMlZCIsIGJ1ZmZlciwgaWZuZXQuaWZfdW5pdCk7DQogCQl9DQotCQlw cmludGYoIiUqLipzIiwgV0lEX0lGKGFkZHIudV9zYS5zYV9mYW1pbHkpLA0K LQkJICAgIFdJRF9JRihhZGRyLnVfc2Euc2FfZmFtaWx5KSwgcHJldHR5bmFt ZSk7DQorCQlwcmludGYoIiUqLipzIiwgd2lkX2lmLCB3aWRfaWYsIHByZXR0 eW5hbWUpOw0KIAkJaWYgKHJ0LT5ydF9ybXgucm14X2V4cGlyZSkgew0KIAkJ CXRpbWVfdCBleHBpcmVfdGltZTsNCiANCiAJCQlpZiAoKGV4cGlyZV90aW1l ID0NCiAJCQkgICAgcnQtPnJ0X3JteC5ybXhfZXhwaXJlIC0gdGltZSgodGlt ZV90ICopMCkpID4gMCkNCi0JCQkJcHJpbnRmKCIgJTZkIiwgKGludClleHBp cmVfdGltZSk7DQorCQkJCXByaW50ZigiICUqZCIsIHdpZF9leHBpcmUsIChp bnQpZXhwaXJlX3RpbWUpOw0KIAkJfQ0KIAkJaWYgKHJ0LT5ydF9ub2Rlc1sw XS5ybl9kdXBlZGtleSkNCiAJCQlwcmludGYoIiA9PiIpOw0K --0-1401783618-1023163088=:33228-- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-net" in the body of the message