Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 09 Sep 2004 19:09:09 +0900
From:      "George V. Neville-Neil" <gnn@neville-neil.com>
To:        snap-users@kame.net
Cc:        Bosko Milekic <bmilekic@technokratis.com>
Subject:   Patch for NetPIPE to support IPv6
Message-ID:  <m2llfj69fe.wl@minion.local.neville-neil.com>

next in thread | raw e-mail | index | archive | help
--Multipart_Thu_Sep__9_19:09:09_2004-1
Content-Type: text/plain; charset=US-ASCII

Hi,

	I have created a patch for NetPIPE version 3.6.2 that makes it
	work with IPv6.  If you're unfamiliar with NetPIPE then jump
	to here:  http://www.scl.ameslab.gov/netpipe/

	In short NetPIPE is a cool tool for generating packets and
	stressing/testing networks.  I suggest reading the papers they
	have on their web site.

	I've submitted this patch to the nice folks at ameslab as
	well, and will be using it in my own work on locking down the
	IPv6 code in FreeBSD.

	Apply the patch like this:

	cd NetPIPE-3.2.2
	patch -p0 < ~/netpipe.patch
	make tcp6

	This will generate the program NPtcp6 which must be run as a
	client/server pair.  

	server> ./NPtcp6

	client> ./NPtcp6 -h <client IPv6/name>

	You can specify IPv6 style addresses such as ::1 etc. for 
	the -h argument.  I have not tested the gethostbyname2() call
	yet as I'm trapped behind a NAT at the moment.  It ought to
	work though.

	Bugs with the IPv6 version of this code should be sent to me,
	and not to the nice folks at ameslab who wrote the original.

Later,
George


--Multipart_Thu_Sep__9_19:09:09_2004-1
Content-Type: application/octet-stream; type=patch
Content-Disposition: attachment; filename="netpipe.patch"
Content-Transfer-Encoding: base64

SW5kZXg6IG1ha2VmaWxlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvZ25uL1BlcnNvbmFsL0Nv
ZGUvTmV0d29ya2luZy9OZXRQSVBFL21ha2VmaWxlLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEu
MS4xCnJldHJpZXZpbmcgcmV2aXNpb24gMS4yCmRpZmYgLXUgLXIxLjEuMS4xIC1yMS4yCi0tLSBt
YWtlZmlsZQk5IFNlcCAyMDA0IDA4OjI5OjIyIC0wMDAwCTEuMS4xLjEKKysrIG1ha2VmaWxlCTkg
U2VwIDIwMDQgMDg6MzU6MDcgLTAwMDAJMS4yCkBAIC04MSw3ICs4MSwxMSBAQAogCiAKIHRjcDog
JChTUkMpL3RjcC5jICQoU1JDKS9uZXRwaXBlLmMgJChTUkMpL25ldHBpcGUuaCAKLQkkKENDKSAk
KENGTEFHUykgJChTUkMpL25ldHBpcGUuYyAkKFNSQykvdGNwLmMgLURUQ1AgIC1vIE5QdGNwIC1J
JChTUkMpCisJJChDQykgJChDRkxBR1MpICQoU1JDKS9uZXRwaXBlLmMgJChTUkMpL3RjcC5jIC1E
VENQIC1vIE5QdGNwIC1JJChTUkMpCisKK3RjcDY6ICQoU1JDKS90Y3AuYyAkKFNSQykvbmV0cGlw
ZS5jICQoU1JDKS9uZXRwaXBlLmggCisJJChDQykgJChDRkxBR1MpICQoU1JDKS9uZXRwaXBlLmMg
JChTUkMpL3RjcDYuYyAtRFRDUDYgXAorCQktbyBOUHRjcDYgLUkkKFNSQykKIAogbWVtY3B5OiAk
KFNSQykvbWVtY3B5LmMgJChTUkMpL25ldHBpcGUuYyAkKFNSQykvbmV0cGlwZS5oCiAJJChDQykg
JChDRkxBR1MpICQoU1JDKS9uZXRwaXBlLmMgJChTUkMpL21lbWNweS5jIFwKSW5kZXg6IGRveC9S
RUFETUUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9nbm4vUGVyc29uYWwvQ29kZS9OZXR3b3Jr
aW5nL05ldFBJUEUvZG94L1JFQURNRSx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xLjEuMQpkaWZm
IC11IC1yMS4xLjEuMSBSRUFETUUKLS0tIGRveC9SRUFETUUJOSBTZXAgMjAwNCAwODoyOTozNSAt
MDAwMAkxLjEuMS4xCisrKyBkb3gvUkVBRE1FCTkgU2VwIDIwMDQgMDk6NTY6NTUgLTAwMDAKQEAg
LTg1LDYgKzg1LDcgQEAKICAgbWFrZSBzaG1lbSAgICAgICgxLXNpZGVkIGxpYnJhcnkgZm9yIENy
YXkgYW5kIFNHSSBzeXN0ZW1zKQogCiAgIG1ha2UgdGNwCisgIG1ha2UgdGNwNiAgICAgICAoZm9y
IElQdjYgZW5hYmxlZCBzeXN0ZW1zKQogICBtYWtlIGdtICAgICAgICAgKGZvciBNeXJpbmV0IGNh
cmRzLCB5b3Ugd2lsbCBuZWVkIHRvIHNldCBzb21lIHBhdGhzKQogICBtYWtlIHNobWVtICAgICAg
KDEtc2lkZWQgbGlicmFyeSBmb3IgQ3JheSBhbmQgU0dJIHN5c3RlbXMpCiAgIG1ha2UgZ3BzaG1l
bSAgICAoU0hNRU0gaW50ZXJmYWNlIGZvciBvdGhlciBtYWNoaW5lcykKQEAgLTE0NSw3ICsxNDYs
NyBAQAogICAgICAgICAtMjogQmktZGlyZWN0aW9uYWwgY29tbXVuaWNhdGlvbnMuICBUcmFuc21p
dCBpbiBib3RoIGRpcmVjdGlvbnMKICAgICAgICAgICAgIHNpbXVsdGFuZW91c2x5LgogCi0gICBU
Q1AKKyAgIFRDUCBhbmQgVENQNgogICAgLS0tCiAKICAgICAgIENvbXBpbGUgTmV0UElQRSB1c2lu
ZyAnbWFrZSB0Y3AnCkluZGV4OiBzcmMvbmV0cGlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9j
dnMvZ25uL1BlcnNvbmFsL0NvZGUvTmV0d29ya2luZy9OZXRQSVBFL3NyYy9uZXRwaXBlLmgsdgpy
ZXRyaWV2aW5nIHJldmlzaW9uIDEuMS4xLjEKcmV0cmlldmluZyByZXZpc2lvbiAxLjIKZGlmZiAt
dSAtcjEuMS4xLjEgLXIxLjIKLS0tIHNyYy9uZXRwaXBlLmgJOSBTZXAgMjAwNCAwODoyOTozOCAt
MDAwMAkxLjEuMS4xCisrKyBzcmMvbmV0cGlwZS5oCTkgU2VwIDIwMDQgMDg6MzU6MDcgLTAwMDAJ
MS4yCkBAIC0yMyw2ICsyMywxMSBAQAogI2luY2x1ZGUgPHN0ZGxpYi5oPiAgICAgICAgIC8qIG1h
bGxvYygzKSAqLwogI2luY2x1ZGUgPHVuaXN0ZC5oPiAgICAgICAgIC8qIGdldG9wdCwgcmVhZCwg
d3JpdGUsIC4uLiAqLwogCisvKiBIYW5kbGUgdGhlIGNhc2Ugb2YgYnVpbGRpbmcgb24gTWFjT1Mg
WCAqLworI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2luY2x1ZGUgPHN0ZGludC5oPgorI2VuZGlm
IAorCiAjaWZkZWYgSU5GSU5JQkFORAogI2luY2x1ZGUgPGliX2RlZnMuaD4gLyogaWJfbXR1X3Qg
Ki8KICNlbmRpZgpAQCAtODksNiArOTQsMjQgQEAKIH07CiAjZW5kaWYKIAorI2VsaWYgZGVmaW5l
ZChUQ1A2KQorICAjaW5jbHVkZSA8bmV0ZGIuaD4KKyAgI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4K
KyAgI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyAgI2luY2x1ZGUgPG5ldGluZXQvdGNwLmg+Cisg
ICNpbmNsdWRlIDxhcnBhL2luZXQuaD4KKyAgCisgIHR5cGVkZWYgc3RydWN0IHByb3RvY29sc3Ry
dWN0IFByb3RvY29sU3RydWN0OworICBzdHJ1Y3QgcHJvdG9jb2xzdHJ1Y3QKKyAgeworICAgICAg
c3RydWN0IHNvY2thZGRyX2luNiAgICAgc2luMTsgICAvKiBzb2NrZXQgc3RydWN0dXJlICMxICAg
ICAgICAgICAgICAqLworICAgICAgc3RydWN0IHNvY2thZGRyX2luNiAgICAgc2luMjsgICAvKiBz
b2NrZXQgc3RydWN0dXJlICMyICAgICAgICAgICAgICAqLworICAgICAgaW50ICAgICAgICAgICAg
ICAgICAgICAgbm9kZWxheTsgIC8qIEZsYWcgZm9yIFRDUCBub2RlbGF5ICAgICAgICAgICAqLwor
ICAgICAgc3RydWN0IGhvc3RlbnQgICAgICAgICAgKmFkZHI7ICAgIC8qIEFkZHJlc3Mgb2YgaG9z
dCAgICAgICAgICAgICAgICAqLworICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgc25kYnVm
c3o7IC8qIFNpemUgb2YgVENQIHNlbmQgYnVmZmVyICAgICAgICAqLworICAgICAgaW50ICAgICAg
ICAgICAgICAgICAgICAgcmN2YnVmc3o7IC8qIFNpemUgb2YgVENQIHJlY2VpdmUgYnVmZmVyICAg
ICAqLworICB9OworCiAjZWxpZiBkZWZpbmVkKE1QSSkKICAgdHlwZWRlZiBzdHJ1Y3QgcHJvdG9j
b2xzdHJ1Y3QgUHJvdG9jb2xTdHJ1Y3Q7CiAgIHN0cnVjdCBwcm90b2NvbHN0cnVjdCAKQEAgLTE5
Nyw3ICsyMjAsNyBAQAogICB9OwogCiAjZWxzZQotICAjZXJyb3IgIk9uZSBvZiBUQ1AsIE1QSSwg
UFZNLCBUQ0dNU0csIExBUEksIFNITUVNLCBBVE9MTCwgTUVNQ1BZLCBESVNLIG11c3QgYmUgZGVm
aW5lZCBkdXJpbmcgY29tcGlsYXRpb24iCisgICNlcnJvciAiT25lIG9mIFRDUCwgVENQNiwgTVBJ
LCBQVk0sIFRDR01TRywgTEFQSSwgU0hNRU0sIEFUT0xMLCBNRU1DUFksIERJU0sgbXVzdCBiZSBk
ZWZpbmVkIGR1cmluZyBjb21waWxhdGlvbiIKIAogI2VuZGlmCiAKSW5kZXg6IHNyYy90Y3A2LmMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQpSQ1MgZmlsZTogc3JjL3RjcDYuYwpkaWZmIC1OIHNyYy90Y3A2LmMKLS0tIC9k
ZXYvbnVsbAkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwCisrKyBzcmMvdGNwNi5jCTkgU2VwIDIw
MDQgMDg6MzU6MDcgLTAwMDAJMS4xCkBAIC0wLDAgKzEsNDQ0IEBACisvKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKiovCisvKiAiTmV0UElQRSIgLS0gTmV0d29yayBQcm90b2NvbCBJbmRlcGVuZGVudCBQZXJm
b3JtYW5jZSBFdmFsdWF0b3IuICAgICAgICAgICovCisvKiBDb3B5cmlnaHQgMTk5NywgMTk5OCBJ
b3dhIFN0YXRlIFVuaXZlcnNpdHkgUmVzZWFyY2ggRm91bmRhdGlvbiwgSW5jLiAgICAgICovCisv
KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICovCisvKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSAgICAgICovCisvKiBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSAgICAgICovCisvKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLiAgWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgICAgICovCisvKiBHTlUgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUg
ICovCisvKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDY3NSBNYXNzIEF2ZSwgQ2Ft
YnJpZGdlLCBNQSAwMjEzOSwgVVNBLiAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiBU
Q1A2IGV4dGVuc2lvbiBDb3B5cmlnaHQgMjAwNCBHZW9yZ2UgVi4gTmV2aWxsZS1OZWlsIGFuZCBO
ZXZpbGxlLU5laWwgICAgICovCisvKiBDb25zdWx0aW5nICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICovCisvKiAgICAgKiB0Y3A2LmMgICAgICAgICAtLS0tIFRDUCBvdmVyIElQdjYgY2Fs
bHMgc291cmNlICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgKiB0Y3AuaCAgICAgICAg
ICAtLS0tIEluY2x1ZGUgZmlsZSBmb3IgVENQNiBjYWxscyBhbmQgZGF0YSBzdHJ1Y3RzICAgICov
CisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKiovCisjaW5jbHVkZSAgICAibmV0cGlwZS5oIgorCisjaWYg
ZGVmaW5lZCAoTVBMSVRFKQorI2luY2x1ZGUgIm1wbGl0ZS5oIgorI2VuZGlmCisKKworaW50IGRv
aW5nX3Jlc2V0ID0gMDsKKwordm9pZCBJbml0KEFyZ1N0cnVjdCAqcCwgaW50KiBwYXJnYywgY2hh
cioqKiBwYXJndikKK3sKKyAgICBwLT5yZXNldF9jb25uID0gMDsgLyogRGVmYXVsdCB0byBub3Qg
cmVzZXR0aW5nIGNvbm5lY3Rpb24gKi8KKyAgICBwLT5wcm90LnNuZGJ1ZnN6ID0gcC0+cHJvdC5y
Y3ZidWZzeiA9IDA7CisgICAgLyogVGhlIHRyYW5zbWl0dGVyIHdpbGwgYmUgc2V0IHVzaW5nIHRo
ZSAtaCBob3N0IGZsYWcuICovCisgICAgcC0+dHIgPSAwOworICAgIHAtPnJjdiA9IDE7Cit9CisK
K3ZvaWQgU2V0dXAoQXJnU3RydWN0ICpwKQoreworICAgIGludCBvbmUgPSAxOworICAgIGludCBz
b2NrZmQgPSAtMTsKKyAgICAvKiBwdHIgdG8gc29ja2FkZHJfaW4gaW4gQXJnU3RydWN0ICovCisg
ICAgc3RydWN0IHNvY2thZGRyX2luNiAqbHNpbjEsICpsc2luMjsgICAgICAKKyAgICAKKyAgICBj
aGFyICpob3N0OworICAgIHN0cnVjdCBob3N0ZW50ICpocDsKKyAgICBzdHJ1Y3QgcHJvdG9lbnQg
KnByb3RvOworICAgIGludCBzZW5kX3NpemUsIHJlY3Zfc2l6ZSwgc2l6ZW9maW50ID0gc2l6ZW9m
KGludCk7CisJCisgICAgaG9zdCA9IHAtPmhvc3Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogY29weSBwdHIgdG8gaG9zdG5hbWUgKi8gCisJCisgICAgbHNpbjEgPSAmKHAtPnByb3Quc2lu
MSk7CisgICAgbHNpbjIgPSAmKHAtPnByb3Quc2luMik7CisJCisgICAgYnplcm8oKGNoYXIgKikg
bHNpbjEsIHNpemVvZigqbHNpbjEpKTsKKyAgICBiemVybygoY2hhciAqKSBsc2luMiwgc2l6ZW9m
KCpsc2luMikpOworCisgICAgaWYgKChzb2NrZmQgPSBzb2NrZXQoQUZfSU5FVDYsIFNPQ0tfU1RS
RUFNLCAwKSkgPCAwKXsKKwlwcmludGYoIk5ldFBJUEU6IGNhbid0IG9wZW4gc3RyZWFtIHNvY2tl
dCEgZXJybm89JWRcbiIsIGVycm5vKTsKKwlleGl0KC00KTsKKyAgICB9CisKKyAgICBpZighKHBy
b3RvID0gZ2V0cHJvdG9ieW5hbWUoInRjcCIpKSl7CisJcHJpbnRmKCJOZXRQSVBFOiBwcm90b2Nv
bCAndGNwJyB1bmtub3duIVxuIik7CisJZXhpdCg1NTUpOworICAgIH0KKworICAgIC8qIEF0dGVt
cHQgdG8gc2V0IFRDUF9OT0RFTEFZICovCisKKyAgICBpZihzZXRzb2Nrb3B0KHNvY2tmZCwgcHJv
dG8tPnBfcHJvdG8sIFRDUF9OT0RFTEFZLCAmb25lLCBzaXplb2Yob25lKSkgPCAwKQorICAgIHsK
KwlwcmludGYoIk5ldFBJUEU6IHNldHNvY2tvcHQ6IFRDUF9OT0RFTEFZIGZhaWxlZCEgZXJybm89
JWRcbiIsIGVycm5vKTsKKwlleGl0KDU1Nik7CisgICAgfQorCisgICAgLyogSWYgcmVxdWVzdGVk
LCBzZXQgdGhlIHNlbmQgYW5kIHJlY2VpdmUgYnVmZmVyIHNpemVzICovCisKKyAgICBpZihwLT5w
cm90LnNuZGJ1ZnN6ID4gMCkKKyAgICB7CisJaWYoc2V0c29ja29wdChzb2NrZmQsIFNPTF9TT0NL
RVQsIFNPX1NOREJVRiwgJihwLT5wcm90LnNuZGJ1ZnN6KSwgCisJCSAgICAgIHNpemVvZihwLT5w
cm90LnNuZGJ1ZnN6KSkgPCAwKQorCXsKKwkgICAgcHJpbnRmKCJOZXRQSVBFOiBzZXRzb2Nrb3B0
OiBTT19TTkRCVUYgZmFpbGVkISBlcnJubz0lZFxuIiwgZXJybm8pOworCSAgICBwcmludGYoIllv
dSBtYXkgaGF2ZSBhc2tlZCBmb3IgYSBidWZmZXIgbGFyZ2VyIHRoYW4gdGhlIHN5c3RlbSBjYW4g
aGFuZGxlXG4iKTsKKwkgICAgZXhpdCg1NTYpOworCX0KKwlpZihzZXRzb2Nrb3B0KHNvY2tmZCwg
U09MX1NPQ0tFVCwgU09fUkNWQlVGLCAmKHAtPnByb3QucmN2YnVmc3opLCAKKwkJICAgICAgc2l6
ZW9mKHAtPnByb3QucmN2YnVmc3opKSA8IDApCisJeworCSAgICBwcmludGYoIk5ldFBJUEU6IHNl
dHNvY2tvcHQ6IFNPX1JDVkJVRiBmYWlsZWQhIGVycm5vPSVkXG4iLCBlcnJubyk7CisJICAgIHBy
aW50ZigiWW91IG1heSBoYXZlIGFza2VkIGZvciBhIGJ1ZmZlciBsYXJnZXIgdGhhbiB0aGUgc3lz
dGVtIGNhbiBoYW5kbGVcbiIpOworCSAgICBleGl0KDU1Nik7CisJfQorICAgIH0KKyAgICBnZXRz
b2Nrb3B0KHNvY2tmZCwgU09MX1NPQ0tFVCwgU09fU05EQlVGLAorCSAgICAgICAoY2hhciAqKSAm
c2VuZF9zaXplLCAodm9pZCAqKSAmc2l6ZW9maW50KTsKKyAgICBnZXRzb2Nrb3B0KHNvY2tmZCwg
U09MX1NPQ0tFVCwgU09fUkNWQlVGLAorCSAgICAgICAoY2hhciAqKSAmcmVjdl9zaXplLCAodm9p
ZCAqKSAmc2l6ZW9maW50KTsKKyAKKyAgICBpZighZG9pbmdfcmVzZXQpIHsKKwlmcHJpbnRmKHN0
ZGVyciwiU2VuZCBhbmQgcmVjZWl2ZSBidWZmZXJzIGFyZSAlZCBhbmQgJWQgYnl0ZXNcbiIsCisJ
CXNlbmRfc2l6ZSwgcmVjdl9zaXplKTsKKwlmcHJpbnRmKHN0ZGVyciwgIihBIGJ1ZyBpbiBMaW51
eCBkb3VibGVzIHRoZSByZXF1ZXN0ZWQgYnVmZmVyIHNpemVzKVxuIik7CisgICAgfQorCisgICAg
aWYoIHAtPnRyICkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUHJpbWFyeSB0cmFu
c21pdHRlciAqLworCisJbHNpbjEtPnNpbjZfZmFtaWx5ID0gQUZfSU5FVDY7CisKKwkvKiBGaXJz
dCBhdHRlbXB0IHRvIGNvbnZlcnQgdGhlIHN0cmluZyB0byBhbiBJUHY2ICovCisJLyogYWRkcmVz
cy4gKi8KKwkvKiBJZiB0aGUgdXNlciBzdXBwbGllZCBhIHJlYWwgaG9zdCBuYW1lIHRoaXMgd2ls
bCBmYWlsIGFuZCAqLworICAJLyogd2UnbGwgdGhlbiBkbyBhIG5hbWUgbG9va3VwLiAqLworCisJ
aWYgKGluZXRfcHRvbihBRl9JTkVUNiwgaG9zdCwgJmxzaW4xLT5zaW42X2FkZHIpID09IDApCisJ
eworCSAgICBpZiAoKGhwID0gZ2V0aG9zdGJ5bmFtZTIoaG9zdCwgQUZfSU5FVDYpKSA9PSBOVUxM
KQorCSAgICB7CisJCXByaW50ZigiTmV0UElQRTogaW52YWxpZCBob3N0bmFtZSAnJXMnXG4iLCBo
b3N0KTsKKwkJZXhpdCgtNSk7CisJICAgIH0KKworCSAgICBpZiAoaHAtPmhfYWRkcnR5cGUgIT0g
QUZfSU5FVDYpIAorCSAgICB7CisJCXByaW50ZigiTmV0UElQRTogaW52YWxpZCBob3N0bmFtZSAn
JXMnXG4iLCBob3N0KTsKKwkJZXhpdCgtNSk7CisJICAgIH0KKwkgICAgYmNvcHkoaHAtPmhfYWRk
ciwgKGNoYXIqKSAmKGxzaW4xLT5zaW42X2FkZHIpLCAKKwkJICBocC0+aF9sZW5ndGgpOworCX0K
KworCWxzaW4xLT5zaW42X3BvcnQgPSBodG9ucyhwLT5wb3J0KTsKKwkKKwlwLT5jb21tZmQgPSBz
b2NrZmQ7CisJCisgICAgfSBlbHNlIGlmKCBwLT5yY3YgKSB7ICAgICAgICAgICAgICAgICAgICAg
Lyogd2UgYXJlIHRoZSByZWNlaXZlciAqLworCWJ6ZXJvKChjaGFyICopIGxzaW4xLCBzaXplb2Yo
KmxzaW4xKSk7CisJbHNpbjEtPnNpbjZfZmFtaWx5ICA9IEFGX0lORVQ2OworCWxzaW4xLT5zaW42
X2xlbiAgICAgPSBzaXplb2YoKmxzaW4xKTsKKwlsc2luMS0+c2luNl9wb3J0ICAgID0gaHRvbnMo
cC0+cG9ydCk7CisJLyogU2V0dGluZyB0aGlzIHRvIGFsbCAwIGlzIHRoZSAiQU5ZIiBhZGRyZXNz
LiAqLworCWJ6ZXJvKCZsc2luMS0+c2luNl9hZGRyLCBzaXplb2YobHNpbjEtPnNpbjZfYWRkcikp
OworICAgCisJaWYgKGJpbmQoc29ja2ZkLCAoc3RydWN0IHNvY2thZGRyICopIGxzaW4xLCBzaXpl
b2YoKmxzaW4xKSkgPCAwKXsKKwkgICAgcHJpbnRmKCJOZXRQSVBFOiBzZXJ2ZXI6IGJpbmQgb24g
bG9jYWwgYWRkcmVzcyBmYWlsZWQhIGVycm5vPSVkIiwgZXJybm8pOworCSAgICBleGl0KC02KTsK
Kwl9CisKKwlwLT5zZXJ2aWNlZmQgPSBzb2NrZmQ7CisgICAgfQorICAgIHAtPnVwcGVyID0gc2Vu
ZF9zaXplICsgcmVjdl9zaXplOworCisgICAgZXN0YWJsaXNoKHApOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiBFc3RhYmxpc2ggY29ubmVjdGlvbnMgKi8KKworfSAgIAorCitzdGF0
aWMgaW50CityZWFkRnVsbHkoaW50IGZkLCB2b2lkICpvYnVmLCBpbnQgbGVuKQoreworICAgIGlu
dCBieXRlc0xlZnQgPSBsZW47CisgICAgY2hhciAqYnVmID0gKGNoYXIgKikgb2J1ZjsKKyAgICBp
bnQgYnl0ZXNSZWFkID0gMDsKKworICAgIHdoaWxlIChieXRlc0xlZnQgPiAwICYmCisJICAgKGJ5
dGVzUmVhZCA9IHJlYWQoZmQsICh2b2lkICopIGJ1ZiwgYnl0ZXNMZWZ0KSkgPiAwKQorICAgIHsK
KwlieXRlc0xlZnQgLT0gYnl0ZXNSZWFkOworCWJ1ZiArPSBieXRlc1JlYWQ7CisgICAgfQorICAg
IGlmIChieXRlc1JlYWQgPD0gMCkgcmV0dXJuIGJ5dGVzUmVhZDsKKyAgICByZXR1cm4gbGVuOwor
fQorCit2b2lkIFN5bmMoQXJnU3RydWN0ICpwKQoreworICAgIGNoYXIgc1tdID0gIlN5bmNNZSIs
IHJlc3BvbnNlW10gPSAiICAgICAgIjsKKworICAgIGlmICh3cml0ZShwLT5jb21tZmQsIHMsIHN0
cmxlbihzKSkgPCAwIHx8ICAgICAgICAgICAvKiBXcml0ZSB0byBuYm9yICovCisJcmVhZEZ1bGx5
KHAtPmNvbW1mZCwgcmVzcG9uc2UsIHN0cmxlbihzKSkgPCAwKSAgLyogUmVhZCBmcm9tIG5ib3Ig
Ki8KKyAgICB7CisJcGVycm9yKCJOZXRQSVBFOiBlcnJvciB3cml0aW5nIG9yIHJlYWRpbmcgc3lu
Y2hyb25pemF0aW9uIHN0cmluZyIpOworCWV4aXQoMyk7CisgICAgfQorICAgIGlmIChzdHJuY21w
KHMsIHJlc3BvbnNlLCBzdHJsZW4ocykpKQorICAgIHsKKwlmcHJpbnRmKHN0ZGVyciwgIk5ldFBJ
UEU6IFN5bmNocm9uaXphdGlvbiBzdHJpbmcgaW5jb3JyZWN0ISB8JXN8XG4iLCByZXNwb25zZSk7
CisJZXhpdCgzKTsKKyAgICB9Cit9CisKK3ZvaWQgUHJlcGFyZVRvUmVjZWl2ZShBcmdTdHJ1Y3Qg
KnApCit7CisgICAgLyoKKyAgICAgIFRoZSBCZXJrZWxleSBzb2NrZXRzIGludGVyZmFjZSBkb2Vz
bid0IGhhdmUgYSBtZXRob2QgdG8gcHJlLXBvc3QKKyAgICAgIGEgYnVmZmVyIGZvciByZWNlcHRp
b24gb2YgZGF0YS4KKyAgICAqLworfQorCit2b2lkIFNlbmREYXRhKEFyZ1N0cnVjdCAqcCkKK3sK
KyAgICBpbnQgYnl0ZXNXcml0dGVuLCBieXRlc0xlZnQ7CisgICAgY2hhciAqcTsKKworICAgIGJ5
dGVzTGVmdCA9IHAtPmJ1ZmZsZW47CisgICAgYnl0ZXNXcml0dGVuID0gMDsKKyAgICBxID0gcC0+
c19wdHI7CisgICAgd2hpbGUgKGJ5dGVzTGVmdCA+IDAgJiYKKwkgICAoYnl0ZXNXcml0dGVuID0g
d3JpdGUocC0+Y29tbWZkLCBxLCBieXRlc0xlZnQpKSA+IDApCisgICAgeworCWJ5dGVzTGVmdCAt
PSBieXRlc1dyaXR0ZW47CisJcSArPSBieXRlc1dyaXR0ZW47CisgICAgfQorICAgIGlmIChieXRl
c1dyaXR0ZW4gPT0gLTEpCisgICAgeworCXByaW50ZigiTmV0UElQRTogd3JpdGU6IGVycm9yIGVu
Y291bnRlcmVkLCBlcnJubz0lZFxuIiwgZXJybm8pOworCWV4aXQoNDAxKTsKKyAgICB9Cit9CisK
K3ZvaWQgUmVjdkRhdGEoQXJnU3RydWN0ICpwKQoreworICAgIGludCBieXRlc0xlZnQ7CisgICAg
aW50IGJ5dGVzUmVhZDsKKyAgICBjaGFyICpxOworCisgICAgYnl0ZXNMZWZ0ID0gcC0+YnVmZmxl
bjsKKyAgICBieXRlc1JlYWQgPSAwOworICAgIHEgPSBwLT5yX3B0cjsKKyAgICB3aGlsZSAoYnl0
ZXNMZWZ0ID4gMCAmJgorCSAgIChieXRlc1JlYWQgPSByZWFkKHAtPmNvbW1mZCwgcSwgYnl0ZXNM
ZWZ0KSkgPiAwKQorICAgIHsKKwlieXRlc0xlZnQgLT0gYnl0ZXNSZWFkOworCXEgKz0gYnl0ZXNS
ZWFkOworICAgIH0KKyAgICBpZiAoYnl0ZXNMZWZ0ID4gMCAmJiBieXRlc1JlYWQgPT0gMCkKKyAg
ICB7CisJcHJpbnRmKCJOZXRQSVBFOiBcImVuZCBvZiBmaWxlXCIgZW5jb3VudGVyZWQgb24gcmVh
ZGluZyBmcm9tIHNvY2tldFxuIik7CisgICAgfQorICAgIGVsc2UgaWYgKGJ5dGVzUmVhZCA9PSAt
MSkKKyAgICB7CisJcHJpbnRmKCJOZXRQSVBFOiByZWFkOiBlcnJvciBlbmNvdW50ZXJlZCwgZXJy
bm89JWRcbiIsIGVycm5vKTsKKwlleGl0KDQwMSk7CisgICAgfQorfQorCisvKiB1aW50MzJfdCBp
cyB1c2VkIHRvIGluc3VyZSB0aGF0IHRoZSBpbnRlZ2VyIHNpemUgaXMgdGhlIHNhbWUgZXZlbiBp
biB0ZXN0cyAKKyAqIGJldHdlZW4gNjQtYml0IGFuZCAzMi1iaXQgYXJjaGl0ZWN0dXJlcy4gKi8K
Kwordm9pZCBTZW5kVGltZShBcmdTdHJ1Y3QgKnAsIGRvdWJsZSAqdCkKK3sKKyAgICB1aW50MzJf
dCBsdGltZSwgbnRpbWU7CisKKyAgICAvKgorICAgICAgTXVsdGlwbHkgdGhlIG51bWJlciBvZiBz
ZWNvbmRzIGJ5IDFlOCB0byBnZXQgdGltZSBpbiAwLjAxIG1pY3Jvc2Vjb25kcworICAgICAgYW5k
IGNvbnZlcnQgdmFsdWUgdG8gYW4gdW5zaWduZWQgMzItYml0IGludGVnZXIuCisgICAgKi8KKyAg
ICBsdGltZSA9ICh1aW50MzJfdCkoKnQgKiAxLmU4KTsKKworICAgIC8qIFNlbmQgdGltZSBpbiBu
ZXR3b3JrIG9yZGVyICovCisgICAgbnRpbWUgPSBodG9ubChsdGltZSk7CisgICAgaWYgKHdyaXRl
KHAtPmNvbW1mZCwgKGNoYXIgKikmbnRpbWUsIHNpemVvZih1aW50MzJfdCkpIDwgMCkKKyAgICB7
CisJcHJpbnRmKCJOZXRQSVBFOiB3cml0ZSBmYWlsZWQgaW4gU2VuZFRpbWU6IGVycm5vPSVkXG4i
LCBlcnJubyk7CisJZXhpdCgzMDEpOworICAgIH0KK30KKwordm9pZCBSZWN2VGltZShBcmdTdHJ1
Y3QgKnAsIGRvdWJsZSAqdCkKK3sKKyAgICB1aW50MzJfdCBsdGltZSwgbnRpbWU7CisgICAgaW50
IGJ5dGVzUmVhZDsKKworICAgIGJ5dGVzUmVhZCA9IHJlYWRGdWxseShwLT5jb21tZmQsICh2b2lk
ICopJm50aW1lLCBzaXplb2YodWludDMyX3QpKTsKKyAgICBpZiAoYnl0ZXNSZWFkIDwgMCkKKyAg
ICB7CisJcHJpbnRmKCJOZXRQSVBFOiByZWFkIGZhaWxlZCBpbiBSZWN2VGltZTogZXJybm89JWRc
biIsIGVycm5vKTsKKwlleGl0KDMwMik7CisgICAgfQorICAgIGVsc2UgaWYgKGJ5dGVzUmVhZCAh
PSBzaXplb2YodWludDMyX3QpKQorICAgIHsKKwlmcHJpbnRmKHN0ZGVyciwgIk5ldFBJUEU6IHBh
cnRpYWwgcmVhZCBpbiBSZWN2VGltZSBvZiAlZCBieXRlc1xuIiwKKwkJYnl0ZXNSZWFkKTsKKwll
eGl0KDMwMyk7CisgICAgfQorICAgIGx0aW1lID0gbnRvaGwobnRpbWUpOworCisgICAgLyogUmVz
dWx0IGlzIGx0aW1lIChpbiBtaWNyb3NlY29uZHMpIGRpdmlkZWQgYnkgMS4wZTggdG8gZ2V0IHNl
Y29uZHMgKi8KKworICAgICp0ID0gKGRvdWJsZSlsdGltZSAvIDEuMGU4OworfQorCit2b2lkIFNl
bmRSZXBlYXQoQXJnU3RydWN0ICpwLCBpbnQgcnB0KQoreworICAgIHVpbnQzMl90IGxycHQsIG5y
cHQ7CisKKyAgICBscnB0ID0gcnB0OworICAgIC8qIFNlbmQgcmVwZWF0IGNvdW50IGFzIGEgbG9u
ZyBpbiBuZXR3b3JrIG9yZGVyICovCisgICAgbnJwdCA9IGh0b25sKGxycHQpOworICAgIGlmICh3
cml0ZShwLT5jb21tZmQsICh2b2lkICopICZucnB0LCBzaXplb2YodWludDMyX3QpKSA8IDApCisg
ICAgeworCXByaW50ZigiTmV0UElQRTogd3JpdGUgZmFpbGVkIGluIFNlbmRSZXBlYXQ6IGVycm5v
PSVkXG4iLCBlcnJubyk7CisJZXhpdCgzMDQpOworICAgIH0KK30KKwordm9pZCBSZWN2UmVwZWF0
KEFyZ1N0cnVjdCAqcCwgaW50ICpycHQpCit7CisgICAgdWludDMyX3QgbHJwdCwgbnJwdDsKKyAg
ICBpbnQgYnl0ZXNSZWFkOworCisgICAgYnl0ZXNSZWFkID0gcmVhZEZ1bGx5KHAtPmNvbW1mZCwg
KHZvaWQgKikmbnJwdCwgc2l6ZW9mKHVpbnQzMl90KSk7CisgICAgaWYgKGJ5dGVzUmVhZCA8IDAp
CisgICAgeworCXByaW50ZigiTmV0UElQRTogcmVhZCBmYWlsZWQgaW4gUmVjdlJlcGVhdDogZXJy
bm89JWRcbiIsIGVycm5vKTsKKwlleGl0KDMwNSk7CisgICAgfQorICAgIGVsc2UgaWYgKGJ5dGVz
UmVhZCAhPSBzaXplb2YodWludDMyX3QpKQorICAgIHsKKwlmcHJpbnRmKHN0ZGVyciwgIk5ldFBJ
UEU6IHBhcnRpYWwgcmVhZCBpbiBSZWN2UmVwZWF0IG9mICVkIGJ5dGVzXG4iLAorCQlieXRlc1Jl
YWQpOworCWV4aXQoMzA2KTsKKyAgICB9CisgICAgbHJwdCA9IG50b2hsKG5ycHQpOworCisgICAg
KnJwdCA9IGxycHQ7Cit9CisKK3ZvaWQgZXN0YWJsaXNoKEFyZ1N0cnVjdCAqcCkKK3sKKyAgICBp
bnQgb25lID0gMTsKKyAgICBzb2NrbGVuX3QgY2xlbjsKKyAgICBzdHJ1Y3QgcHJvdG9lbnQgKnBy
b3RvOworCisgICAgY2xlbiA9IChzb2NrbGVuX3QpIHNpemVvZihwLT5wcm90LnNpbjIpOworCisg
ICAgaWYoIHAtPnRyICl7CisKKwl3aGlsZSggY29ubmVjdChwLT5jb21tZmQsIChzdHJ1Y3Qgc29j
a2FkZHIgKikgJihwLT5wcm90LnNpbjEpLAorCQkgICAgICAgc2l6ZW9mKHAtPnByb3Quc2luMSkp
IDwgMCApIHsKKworCSAgICAvKiBJZiB3ZSBhcmUgZG9pbmcgYSByZXNldCBhbmQgd2UgZ2V0IGEg
Y29ubmVjdGlvbiByZWZ1c2VkIGZyb20KKwkgICAgICogdGhlIGNvbm5lY3QoKSBjYWxsLCBhc3N1
bWUgdGhhdCB0aGUgb3RoZXIgbm9kZSBoYXMgbm90IHlldAorCSAgICAgKiBnb3R0ZW4gdG8gaXRz
IGNvcnJlc3BvbmRpbmcgYWNjZXB0KCkgY2FsbCBhbmQga2VlcCB0cnlpbmcgdW50aWwKKwkgICAg
ICogd2UgaGF2ZSBzdWNjZXNzLgorCSAgICAgKi8KKwkgICAgaWYoIWRvaW5nX3Jlc2V0IHx8IGVy
cm5vICE9IEVDT05OUkVGVVNFRCkgeworCQlwcmludGYoIkNsaWVudDogQ2Fubm90IENvbm5lY3Qh
IGVycm5vPSVkXG4iLGVycm5vKTsKKwkJZXhpdCgtMTApOworCSAgICB9IAorICAgICAgICAKKwl9
CisKKyAgICB9IGVsc2UgaWYoIHAtPnJjdiApIHsKKworCS8qIFNFUlZFUiAqLworCWxpc3Rlbihw
LT5zZXJ2aWNlZmQsIDUpOworCXAtPmNvbW1mZCA9IGFjY2VwdChwLT5zZXJ2aWNlZmQsIChzdHJ1
Y3Qgc29ja2FkZHIgKikgJihwLT5wcm90LnNpbjIpLCAmY2xlbik7CisKKwlpZihwLT5jb21tZmQg
PCAwKXsKKwkgICAgcHJpbnRmKCJTZXJ2ZXI6IEFjY2VwdCBGYWlsZWQhIGVycm5vPSVkXG4iLGVy
cm5vKTsKKwkgICAgZXhpdCgtMTIpOworCX0KKworCS8qCisJICBBdHRlbXB0IHRvIHNldCBUQ1Bf
Tk9ERUxBWS4gVENQX05PREVMQVkgbWF5IG9yIG1heSBub3QgYmUgcHJvcGFnYXRlZAorCSAgdG8g
YWNjZXB0ZWQgc29ja2V0cy4KKwkqLworCWlmKCEocHJvdG8gPSBnZXRwcm90b2J5bmFtZSgidGNw
IikpKXsKKwkgICAgcHJpbnRmKCJ1bmtub3duIHByb3RvY29sIVxuIik7CisJICAgIGV4aXQoNTU1
KTsKKwl9CisKKwlpZihzZXRzb2Nrb3B0KHAtPmNvbW1mZCwgcHJvdG8tPnBfcHJvdG8sIFRDUF9O
T0RFTEFZLAorCQkgICAgICAmb25lLCBzaXplb2Yob25lKSkgPCAwKQorCXsKKwkgICAgcHJpbnRm
KCJzZXRzb2Nrb3B0OiBUQ1BfTk9ERUxBWSBmYWlsZWQhIGVycm5vPSVkXG4iLCBlcnJubyk7CisJ
ICAgIGV4aXQoNTU2KTsKKwl9CisKKwkvKiBJZiByZXF1ZXN0ZWQsIHNldCB0aGUgc2VuZCBhbmQg
cmVjZWl2ZSBidWZmZXIgc2l6ZXMgKi8KKwlpZihwLT5wcm90LnNuZGJ1ZnN6ID4gMCkKKwl7Cisv
KiAgICAgIHByaW50ZigiU2VuZCBhbmQgUmVjZWl2ZSBCdWZmZXJzIG9uIGFjY2VwdGVkIHNvY2tl
dCBzZXQgdG8gJWQgYnl0ZXNcbiIsKi8KKy8qICAgICAgICAgICBwLT5wcm90LnNuZGJ1ZnN6KTsq
LworCSAgICBpZihzZXRzb2Nrb3B0KHAtPmNvbW1mZCwgU09MX1NPQ0tFVCwgU09fU05EQlVGLCAm
KHAtPnByb3Quc25kYnVmc3opLCAKKwkJCSAgc2l6ZW9mKHAtPnByb3Quc25kYnVmc3opKSA8IDAp
CisJICAgIHsKKwkJcHJpbnRmKCJzZXRzb2Nrb3B0OiBTT19TTkRCVUYgZmFpbGVkISBlcnJubz0l
ZFxuIiwgZXJybm8pOworCQlleGl0KDU1Nik7CisJICAgIH0KKwkgICAgaWYoc2V0c29ja29wdChw
LT5jb21tZmQsIFNPTF9TT0NLRVQsIFNPX1JDVkJVRiwgJihwLT5wcm90LnJjdmJ1ZnN6KSwgCisJ
CQkgIHNpemVvZihwLT5wcm90LnJjdmJ1ZnN6KSkgPCAwKQorCSAgICB7CisJCXByaW50Zigic2V0
c29ja29wdDogU09fUkNWQlVGIGZhaWxlZCEgZXJybm89JWRcbiIsIGVycm5vKTsKKwkJZXhpdCg1
NTYpOworCSAgICB9CisJfQorICAgIH0KK30KKwordm9pZCBDbGVhblVwKEFyZ1N0cnVjdCAqcCkK
K3sKKyAgICBjaGFyICpxdWl0PSJRVUlUIjsKKworICAgIGlmIChwLT50cikgeworCisJd3JpdGUo
cC0+Y29tbWZkLHF1aXQsIDUpOworCXJlYWQocC0+Y29tbWZkLCBxdWl0LCA1KTsKKwljbG9zZShw
LT5jb21tZmQpOworCisgICAgfSBlbHNlIGlmKCBwLT5yY3YgKSB7CisKKwlyZWFkKHAtPmNvbW1m
ZCxxdWl0LCA1KTsKKwl3cml0ZShwLT5jb21tZmQscXVpdCw1KTsKKwljbG9zZShwLT5jb21tZmQp
OworCWNsb3NlKHAtPnNlcnZpY2VmZCk7CisKKyAgICB9Cit9CisKKwordm9pZCBSZXNldChBcmdT
dHJ1Y3QgKnApCit7CisgIAorICAgIC8qIFJlc2V0IHNvY2tldHMgKi8KKworICAgIGlmKHAtPnJl
c2V0X2Nvbm4pIHsKKworCWRvaW5nX3Jlc2V0ID0gMTsKKworCS8qIENsb3NlIHRoZSBzb2NrZXRz
ICovCisKKwlDbGVhblVwKHApOworCisJLyogTm93IG9wZW4gYW5kIGNvbm5lY3QgbmV3IHNvY2tl
dHMgKi8KKworCVNldHVwKHApOworCisgICAgfQorCit9CisKK3ZvaWQgQWZ0ZXJBbGlnbm1lbnRJ
bml0KEFyZ1N0cnVjdCAqcCkKK3sKKworfQorCg==

--Multipart_Thu_Sep__9_19:09:09_2004-1--



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