Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 28 Apr 2008 06:01:26 -0500
From:      "David Todd" <mobilepolice@gmail.com>
To:        freebsd-net@freebsd.org
Cc:        seki@fexx.org
Subject:   custom modifications to libalias for detailed translation information (patch included)
Message-ID:  <b91012310804280401g3a71e577k908546972a96e2c4@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
------=_Part_4439_20253452.1209380486436
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

Gentlemen,

I've expanded upon the work of Masahiro Sekiguchi <seki@fexx.org>'s
patch for libalias located at:
http://www.fexx.org/ybb/alias_db.c.diff.txt

This alias_db.c diff modified libalias in a way to replace the
original /var/log/alias.log file with one that reported running
statistics in a format like such:

+ udp 219.63.255.49:1024 211.5.1.219:53 219.63.255.49:1024 *:* (0x8060100)
+ udp 219.63.255.49:1024 165.76.0.98:53 219.63.255.49:1024 *:* (0x8060180)
+ udp 219.63.255.49:1024 165.76.4.2:53 219.63.255.49:1024 *:* (0x8060200)
+ udp 219.63.255.49:1024 211.5.1.217:53 219.63.255.49:1024 *:* (0x8060280)
+ tcp 192.168.1.188:1346 210.142.46.154:80 219.63.255.49:1346 *:* (0x8060300)
+ udp 219.63.255.49:1024 210.141.108.194:53 219.63.255.49:1024 *:* (0x8060400)
+ udp 219.63.255.49:1024 210.239.166.194:53 219.63.255.49:1024 *:* (0x8060480)

Obviously this patch was built for a much older version of libalias;
circa 2003. I recently attempted to convert his work, modify it
(relatively heavily) for my own uses
and what I think makes a bit better sense; after a few weeks of
testing and repeated modifications I'm ready to give it to whomever
thinks they could make use of it.

The highlights of my changes:
* alias.log becomes 'alias' under /var/log; it is no longer a massive
running list of connection #'s per protocol, but a one-line file
updated every 20 seconds showing current protocol #'s.
* alias.details is a new log under /var/log which provides interesting
information on all of the active translated connections in a format
that looks like this:

total: 485
time: 1209374774
last_chg   exp_t T-     protocol        source addr:port         dest
addr:port        alias addr:port        proxy addr:port
1209374770 00060 -00056 udp             192.0.21.10:8080
78.109.177.139:61878                *:8080                 *:*
1209374733 00010  00000 tcp DIS:DIS     192.0.21.10:3276
209.85.133.18:80       68.52.101.103:3276                 *:*
1209374635 00060  00000 icmp          68.52.101.103:1
67.15.240.42:256      68.52.101.103:1                    *:*
1209374566 00300 -00092 tcp EST:DWN   68.52.101.103:11225
69.60.111.193:39357    68.52.101.103:11225                *:*
1209374747 00010  00000 tcp DIS:DIS     192.0.21.10:3261
209.85.133.19:80       68.52.101.103:3261                 *:*
1209374078 00300  00000 tcp PERMLNK     192.0.21.10:5580
  *:*                    *:5580                 *:*

(if your email client supports tabbed text properly the format of the
log looks much cleaner)

* modified TCP_EXPIRE_CONNECTED from 24 hours to 1 hour (did this for
debugging purposes, it can be set to whatever standard there is) I ran
into this bug:
BUG: when a TCP connection is dropped locally (behind the nat) or
remotely, sometimes libalias/natd does not mark the translated TCP
connection as down/disconnected/dead. The connection will remain
in the translation tables until libalias/natd is reloaded. This could
be just a problem with natd but I do not have the proper tools or
environment to figure out exactly where the problem is coming from,
leading to this:
* modification: when idelta > lnk->expire_time and LINK_TCP in
IncrementalCleanup(), SetStateIn/Out ALIAS_TCP_NOT_CONNECTED, reset
lnk->timestamp to current la->timeStamp and set lnk->expire_time to
TCP_EXPIRE_SINGLEDEAD; on the pass after next of the
IncrementalCleanup() function we'll come across the same translation
entry, if it hasn't changed we'll expire it.

The issue here is that after a period of time I had 1500+ TCP
connections in my translation tables all showing a "time to expire" of
0 seconds (out of 86400); and no activity on the network to warrant
such connections.

In normal TCP connections when a packet is processed for a translation
entry lnk->timestamp is updated, so idelta will never exceed
lnk->expire_time as long as the link is actually communicating
packets; I feel like this was a safe compromise and it has not
negatively affected my computing habits yet - but granted, I am
neither a power user nor everyone else, so this
solution/hack/crapshoot is open for interpritation. It's my experience
with most commercial firewalls will drop inactive links after 15
min-1hr, etc.


I've abused calls to AliasLog with this patch. I'm still a relative
novice to C programming and memory management, so the last thing I
wanted to deal with was mallocing crap and working with string
buffers/etc and create all kinds of havoc. I'm not sure what sort of
impact this has on the performance of the program; from my experience
I've had 6000+ established UDP and TCP connections going at once (with
about 800KB/s load) and my 1Ghz Celeron machine has seen about 30%
load; it's important to note that libalias was rewriting the
alias.details log every 75 state changes, instead of every 20 seconds
like it does now; so it's likely the load will be significantly lower.

I know there's been some recent changes to alias_db.c in the CVS which
I did not have at the time I started making these changes, so I tried
to keep what I've changed to a minimum in order to insure an easy
patching process if any of you decide to implement this.

Thanks to Masahiro Sekiguchi for his original work as an inspiration
for me to do this; I don't know if anyone else uses ipfw/natd anymore
(I know I do!) but if they do, they might find this useful.

Any comments are appreciated.

Regards,
David Todd

------=_Part_4439_20253452.1209380486436
Content-Type: application/octet-stream; name=libalias.patch
Content-Transfer-Encoding: base64
X-Attachment-Id: f_ffkxl9o80
Content-Disposition: attachment; filename=libalias.patch

LS0tIGFsaWFzX2RiLmMub3JpZwkyMDA4LTA0LTA4IDE4OjMxOjE1LjAwMDAwMDAwMCAtMDUwMAor
KysgYWxpYXNfZGIuYwkyMDA4LTA0LTI4IDA0OjE0OjAzLjAwMDAwMDAwMCAtMDUwMApAQCAtMTU5
LDYgKzE1OSw3IEBACiAKICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CiAjaW5jbHVkZSA8bmV0aW5l
dC90Y3AuaD4KKyNpbmNsdWRlIDxhcnBhL2luZXQuaD4KIAogI2lmZGVmIF9LRVJORUwgIAogI2lu
Y2x1ZGUgPG5ldGluZXQvbGliYWxpYXMvYWxpYXMuaD4KQEAgLTIxMCw3ICsyMTEsNyBAQAogCiAv
KiBXaGVuIHRoZSBsaW5rIGlzIHVwICovCiAjaWZuZGVmIFRDUF9FWFBJUkVfQ09OTkVDVEVECi0j
ZGVmaW5lIFRDUF9FWFBJUkVfQ09OTkVDVEVEICAgODY0MDAKKyNkZWZpbmUgVENQX0VYUElSRV9D
T05ORUNURUQgICAzNjAwCQkvLyBvbGQ6IDg2NDAwICgyNCBob3VycykgPyEKICNlbmRpZgogCiAK
QEAgLTMwNiw3ICszMDcsNyBAQAogI2RlZmluZSBMSU5LX0FERFIgICAgICAgICAgICAgICAgICAg
ICAoSVBQUk9UT19NQVggKyAzKQogI2RlZmluZSBMSU5LX1BQVFAgICAgICAgICAgICAgICAgICAg
ICAoSVBQUk9UT19NQVggKyA0KQogCi0JaW50CQlmbGFnczsJLyogaW5kaWNhdGVzIHNwZWNpYWwg
Y2hhcmFjdGVyaXN0aWNzICAgKi8KKwlpbnQJCWZsYWdzOwkvKiBpbmRpY2F0ZXMgc3BlY2lhbCBy
ZWNoYXJhY3RlcmlzdGljcyAgICovCiAJaW50CQlwZmxhZ3M7CS8qIHByb3RvY29sLXNwZWNpZmlj
IGZsYWdzICovCiAKIC8qIGZsYWcgYml0cyAqLwpAQCAtNDA0LDYgKzQwNSwxMCBAQAogI2VuZGlm
CiAKIC8qIExvZyBmaWxlIGNvbnRyb2wgKi8KK3N0YXRpYyB2b2lkCVNob3dMaW5rVHlwZShzdHJ1
Y3QgYWxpYXNfbGluayAqLCBzdHJ1Y3QgbGliYWxpYXMgKik7CitzdGF0aWMgdm9pZAlTaG93QWRk
ckFuZFBvcnQoc3RydWN0IGluX2FkZHIsIHVfc2hvcnQsIHN0cnVjdCBsaWJhbGlhcyAqKTsKK3N0
YXRpYyB2b2lkCVNob3dBbGlhc0RldGFpbHMoc3RydWN0IGxpYmFsaWFzICopOworCiBzdGF0aWMg
dm9pZAlTaG93QWxpYXNTdGF0cyhzdHJ1Y3QgbGliYWxpYXMgKik7CiBzdGF0aWMgaW50CUluaXRQ
YWNrZXRBbGlhc0xvZyhzdHJ1Y3QgbGliYWxpYXMgKik7CiBzdGF0aWMgdm9pZAlVbmluaXRQYWNr
ZXRBbGlhc0xvZyhzdHJ1Y3QgbGliYWxpYXMgKik7CkBAIC00NjAsNyArNDY1LDcgQEAKIEFsaWFz
TG9nKGNoYXIgKnN0ciwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCiB7CQkKIAl2YV9saXN0IGFw
OwotCQorCiAJdmFfc3RhcnQoYXAsIGZvcm1hdCk7CiAJdnNucHJpbnRmKHN0ciwgTElCQUxJQVNf
QlVGX1NJWkUsIGZvcm1hdCwgYXApOwogCXZhX2VuZChhcCk7CkBAIC00NzAsNyArNDc1LDcgQEAK
IEFsaWFzTG9nKEZJTEUgKnN0cmVhbSwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCiB7CiAJdmFf
bGlzdCBhcDsKLQkKKwogCXZhX3N0YXJ0KGFwLCBmb3JtYXQpOwogCXZmcHJpbnRmKHN0cmVhbSwg
Zm9ybWF0LCBhcCk7CiAJdmFfZW5kKGFwKTsKQEAgLTQ3OCwxMyArNDgzLDE0OCBAQAogfQogI2Vu
ZGlmCiAKKworLyoKKyAqIEZ1bmN0aW9uOiBTaG93TGlua1R5cGUoKQorICogUmV0dXJuICA6IG5v
dGhpbmcKKyAqIFNpZGUgRWZmOiBjYWxsIEFsaWFzTG9nIHdpdGggcmVzdWx0cyBvZiB0aGUgbGlu
ayB0eXBlLCBpZiBsaW5rX3R5cGUgPSBMSU5LX1RDUAorICogIGNhbGwgR2V0U3RhdGVJbi9PdXQo
bG5rKSB0byBwcm92aWRlIG1vcmUgZGV0YWlscyBhYm91dCB0aGUgY3VycmVudCBUQ1Agc3RhdGUu
CisgKiBDYWxscyAgIDogQWxpYXNMb2csIEdldFN0YXRlSW4sIEdldFN0YXRlT3V0CisqLworc3Rh
dGljIHZvaWQKK1Nob3dMaW5rVHlwZShzdHJ1Y3QgYWxpYXNfbGluayAqbG5rLCBzdHJ1Y3QgbGli
YWxpYXMgKmxhKQoreworI2lmbmRlZiBfS0VSTkVMCisKKwlzd2l0Y2ggKGxuay0+bGlua190eXBl
KSB7CisJCWNhc2UgTElOS19JQ01QOiAgICAgICAgIEFsaWFzTG9nKGxhLT5sb2dEZXRhaWxzLCAi
JS0xMXMgIiwgImljbXAiKTsgICAgICAgYnJlYWs7CisJCWNhc2UgTElOS19UQ1A6CisJCQlBbGlh
c0xvZyhsYS0+bG9nRGV0YWlscywgInRjcCAiKTsKKwkJCWlmIChsbmstPmZsYWdzICYgTElOS19Q
RVJNQU5FTlQpIHsKKwkJCQlBbGlhc0xvZyhsYS0+bG9nRGV0YWlscywgIlBFUk1MTksgIik7CisJ
CQl9IGVsc2UgeworCQkJCXN3aXRjaCAoR2V0U3RhdGVJbihsbmspKSB7CisJCQkJCWNhc2UgQUxJ
QVNfVENQX1NUQVRFX0NPTk5FQ1RFRDoJCUFsaWFzTG9nKGxhLT5sb2dEZXRhaWxzLCAiRVNUOiIp
OyBicmVhazsKKwkJCQkJY2FzZSBBTElBU19UQ1BfU1RBVEVfRElTQ09OTkVDVEVEOglBbGlhc0xv
ZyhsYS0+bG9nRGV0YWlscywgIkRJUzoiKTsgYnJlYWs7CisJCQkJCWNhc2UgQUxJQVNfVENQX1NU
QVRFX05PVF9DT05ORUNURUQ6CUFsaWFzTG9nKGxhLT5sb2dEZXRhaWxzLCAiRFdOOiIpOyBicmVh
azsKKwkJCQkJZGVmYXVsdDoJCQkJQWxpYXNMb2cobGEtPmxvZ0RldGFpbHMsICJVTks6Iik7IGJy
ZWFrOworCQkJCX0KKwkJCQlzd2l0Y2ggKEdldFN0YXRlT3V0KGxuaykpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEFMSUFTX1RDUF9TVEFURV9DT05ORUNU
RUQ6ICAgICAgICAgQWxpYXNMb2cobGEtPmxvZ0RldGFpbHMsICJFU1QgIik7IGJyZWFrOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgQUxJQVNfVENQX1NUQVRF
X0RJU0NPTk5FQ1RFRDogICAgICBBbGlhc0xvZyhsYS0+bG9nRGV0YWlscywgIkRJUyAiKTsgYnJl
YWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBBTElBU19U
Q1BfU1RBVEVfTk9UX0NPTk5FQ1RFRDogICAgIEFsaWFzTG9nKGxhLT5sb2dEZXRhaWxzLCAiRFdO
ICIpOyBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZh
dWx0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxpYXNMb2cobGEtPmxvZ0RldGFp
bHMsICJVTksgIik7IGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisJ
CQl9CisJCQlicmVhazsKKwkJY2FzZSBMSU5LX1VEUDogICAgICAgICAgQWxpYXNMb2cobGEtPmxv
Z0RldGFpbHMsICIlLTExcyAiLCAidWRwIik7ICAgICAgICBicmVhazsKKwkJY2FzZSBMSU5LX0ZS
QUdNRU5UX0lEOiAgQWxpYXNMb2cobGEtPmxvZ0RldGFpbHMsICIlLTExcyAiLCAiW2ZyYWdfaWRd
Iik7ICBicmVhazsKKwkJY2FzZSBMSU5LX0ZSQUdNRU5UX1BUUjogQWxpYXNMb2cobGEtPmxvZ0Rl
dGFpbHMsICIlLTExcyAiLCAiW2ZyYWdfcHRyXSIpOyBicmVhazsKKwkJY2FzZSBMSU5LX0FERFI6
ICAgICAgICAgQWxpYXNMb2cobGEtPmxvZ0RldGFpbHMsICIlLTExcyAiLCAiW2FkZHJdIik7ICAg
ICBicmVhazsKKwkJY2FzZSBMSU5LX1BQVFA6ICAgICAgICAgQWxpYXNMb2cobGEtPmxvZ0RldGFp
bHMsICIlLTExcyAiLCAiW3BwdHBdIik7ICAgICBicmVhazsKKwkJZGVmYXVsdDogICAgICAgICAg
ICAgICAgQWxpYXNMb2cobGEtPmxvZ0RldGFpbHMsICJbJS05ZF0gIiwgbG5rLT5saW5rX3R5cGUp
OyAgICAgICBicmVhazsKKwl9CisjZW5kaWYKK30KKworLyoKKyAqIEZ1bmN0aW9uOiBTaG93QWRk
ckFuZFBvcnQoKQorICogUmV0dXJuICA6IG5vdGhpbmcKKyAqIFNpZGUgRWZmOiBzaW1wbGUgZXhw
cmVzc2lvbiBmb3Igb3V0cHV0IG9mIElQIGFkZHJlc3MgYW5kIHBvcnQgb3IgIio6KiIKKyAqICB0
byBsb2dEZXRhaWxzIGxvZyBmaWxlLiBJbXBsZW1lbnRlZCB0byBwcmV2ZW50IGNvZGUgcmVwZWl0
aW9uLgorICogQ2FsbHMgICA6IEFsaWFzTG9nCisqLworc3RhdGljIHZvaWQKK1Nob3dBZGRyQW5k
UG9ydChzdHJ1Y3QgaW5fYWRkciBhZGRyLCB1X3Nob3J0IHBvcnQsIHN0cnVjdCBsaWJhbGlhcyAq
bGEpCit7CisjaWZuZGVmIF9LRVJORUwKKwlpZiAobGEtPmxvZ0RldGFpbHMpIHsKKwkJQWxpYXNM
b2cobGEtPmxvZ0RldGFpbHMsCisJCQlwb3J0ID09IDAgPyAiJTE1czoqICAgICAgIiA6ICIlMTVz
OiUtNnUgIiwKKwkJCWFkZHIuc19hZGRyID09IElOQUREUl9BTlkgPyAiKiIgOiBpbmV0X250b2Eo
YWRkciksCisJCQludG9ocyhwb3J0KSk7CisJfQorI2VuZGlmCit9CisKKworLyoKKyAqIEZ1bmN0
aW9uOiBTaG93QWxpYXNEZXRhaWxzKHN0cnVjdCBsaWJhbGlhcyAqKQorICogUmV0dXJuICA6IG5v
dGhpbmcKKyAqIFNpZGUgRWZmOiBXYWxrIG91ciBsaXN0IG9mIGxpbmtzIGV2ZXJ5IDIwIHNlY29u
ZHMsIGFidXNpdmVseSBjYWxsIEFsaWFzTG9nCisgKiAgdG8gb3V0cHV0IGRldGFpbHMgb2YgYWxs
IG9mIG91ciBsaW5rcyB0byAvdmFyL2xvZy9hbGlhcy5kZXRhaWxzOyB0aGlzIGZ1bmN0aW9uCisg
KiAgd2lsbCBub3Qgd3JpdGUgdG8gdGhlIG91dHB1dCBmaWxlIGluIGtsZC1tb2RlLgorICogQ2Fs
bHMgICA6IEFsaWFzTG9nIChhYnVzaXZlbHkpLCBTaG93QWRkckFuZFBvcnQsIFNob3dMaW5rVHlw
ZSwgCisqLworc3RhdGljIHZvaWQKK1Nob3dBbGlhc0RldGFpbHMoc3RydWN0IGxpYmFsaWFzICps
YSkKK3sKKworCWlmICgobGEtPmxhc3REZXRhaWxzVGltZSArIDIwKSA8PSBsYS0+dGltZVN0YW1w
KSB7CQkvLyB1cGRhdGUgZXZlcnkgMjAgc2Vjb25kcy4KKwkJbGEtPmxhc3REZXRhaWxzVGltZSA9
IGxhLT50aW1lU3RhbXA7CisJfSBlbHNlIHsKKwkJcmV0dXJuOworCX0KKworCVNob3dBbGlhc1N0
YXRzKGxhKTsKKworI2lmbmRlZiBfS0VSTkVMCisJaWYgKGxhLT5sb2dEZXRhaWxzKSB7CisKKwkJ
c3RydWN0IGFsaWFzX2xpbmsgKmxrOworCQlpbnQgaTsKKworCQlmcmVvcGVuKE5VTEwsICJ3Iiwg
bGEtPmxvZ0RldGFpbHMpOwkJLy8gemVybyBvdXIgc3RyZWFtIGFuZCByZW9wZW4uCisKKwkJTElC
QUxJQVNfTE9DS19BU1NFUlQobGEpOworCisJCUFsaWFzTG9nKGxhLT5sb2dEZXRhaWxzLAkJCS8v
IHdyaXRlIGhlYWRlciB0byBzdHJlYW0KKwkJInRvdGFsOiAlZFxuIiBcCisJCSJ0aW1lOiAlZFxu
IiBcCisJCSJsYXN0X2NoZyAgIGV4cF90IFQtICAgICBwcm90b2NvbCAgICAgICAgc291cmNlIGFk
ZHI6cG9ydCAgICAgICAgIGRlc3QgYWRkcjpwb3J0ICAgICAgICBhbGlhcyBhZGRyOnBvcnQgICAg
ICAgIHByb3h5IGFkZHI6cG9ydFxuIiwKKwkJbGEtPmljbXBMaW5rQ291bnQgKyBsYS0+dWRwTGlu
a0NvdW50ICsgbGEtPnRjcExpbmtDb3VudCArIGxhLT5wcHRwTGlua0NvdW50ICsKKwkJbGEtPnBy
b3RvTGlua0NvdW50ICsgbGEtPmZyYWdtZW50SWRMaW5rQ291bnQgKyBsYS0+ZnJhZ21lbnRQdHJM
aW5rQ291bnQsCisJCWxhLT50aW1lU3RhbXApOworCisJCWZvciAoaSA9IDA7IGkgPCBMSU5LX1RB
QkxFX09VVF9TSVpFOyBpKyspIHsJCS8vIHByb2JhYmx5IHNob3VsZCB0aW1lIHRoaXMgZnVuY3Rp
b24gdG8gbWVhc3VyZSBpbXBhY3QuCisJCQlsayA9IExJU1RfRklSU1QoJmxhLT5saW5rVGFibGVP
dXRbaV0pOworCQkJd2hpbGUgKGxrICE9IE5VTEwpIHsKKwkJCQlzdHJ1Y3QgYWxpYXNfbGluayAq
bGtfbmV4dDsKKwkJCQlsa19uZXh0ID0gTElTVF9ORVhUKGxrLCBsaXN0X291dCk7CisKKwkJCQlB
bGlhc0xvZyhsYS0+bG9nRGV0YWlscywgIiUxMGQgJTUuNWQgJTYuNWQgIiwKKwkJCQkJbGstPnRp
bWVzdGFtcCwJCQkvLyB0aW1lIG9mIGxhc3QgcGFja2V0IHRocm91Z2ggY29ubmVjdGlvbgorCQkJ
CQlsay0+ZXhwaXJlX3RpbWUsCQkvLyB0aW1lb3V0IHBlcmlvZCBhZnRlciBsYXN0IHBhY2tldAor
CQkJCQkobGEtPnRpbWVTdGFtcCAtIGxrLT5leHBpcmVfdGltZSkgPiBsay0+dGltZXN0YW1wID8g
MCA6IGxhLT50aW1lU3RhbXAgLSAobGstPnRpbWVzdGFtcCArIGxrLT5leHBpcmVfdGltZSkpOwor
CQkJCQkvLyBkb24ndCBuZWVkIHRvIHNlZSBwb3NpdGl2ZSB2YWx1ZXMsIGVhc2llciB0byBsb29r
IHRocm91Z2ggdGhlIGxvZyBmb3IgIjAwMDAwIgorCisJCQkJU2hvd0xpbmtUeXBlKGxrLCBsYSk7
CisJCQkJU2hvd0FkZHJBbmRQb3J0KGxrLT5zcmNfYWRkciwgbGstPnNyY19wb3J0LCBsYSk7CS8v
IHNvdXJjZSAoaW50ZXJuYWwgYWRkcmVzcykKKwkJCQlTaG93QWRkckFuZFBvcnQobGstPmRzdF9h
ZGRyLCBsay0+ZHN0X3BvcnQsIGxhKTsJLy8gZGVzdCAoZXh0ZXJuYWwgYWRkcmVzcykKKwkJCQlT
aG93QWRkckFuZFBvcnQobGstPmFsaWFzX2FkZHIsIGxrLT5hbGlhc19wb3J0LCBsYSk7CS8vIGFs
aWFzIChvdXIgcHVibGljIGFkZHJlc3MpCisJCQkJU2hvd0FkZHJBbmRQb3J0KGxrLT5wcm94eV9h
ZGRyLCBsay0+cHJveHlfcG9ydCwgbGEpOwkvLyBwcm94eSA/CisJCQkJQWxpYXNMb2cobGEtPmxv
Z0RldGFpbHMsICJcbiIpOworCisJCQkJbGsgPSBsa19uZXh0OworCQkJfQorCQl9CisJfQorI2Vu
ZGlmCit9CisKKwogc3RhdGljIHZvaWQKIFNob3dBbGlhc1N0YXRzKHN0cnVjdCBsaWJhbGlhcyAq
bGEpCiB7CiAKIAlMSUJBTElBU19MT0NLX0FTU0VSVChsYSk7Ci0vKiBVc2VkIGZvciBkZWJ1Z2dp
bmcgKi8KKwogCWlmIChsYS0+bG9nRGVzYykgeworCisjaWZuZGVmIF9LRVJORUwKKwkJZnJlb3Bl
bihOVUxMLCAidyIsIGxhLT5sb2dEZXNjKTsJCS8vIHplcm8gb3VyIHN0cmVhbSBhbmQgc3RhcnQg
ZnJvbSB0aGUgdG9wCisjZW5kaWYKKwogCQlpbnQgdG90ICA9IGxhLT5pY21wTGlua0NvdW50ICsg
bGEtPnVkcExpbmtDb3VudCArIAogCQkJbGEtPnRjcExpbmtDb3VudCArIGxhLT5wcHRwTGlua0Nv
dW50ICsKIAkJCWxhLT5wcm90b0xpbmtDb3VudCArIGxhLT5mcmFnbWVudElkTGlua0NvdW50ICsK
QEAgLTgxNCwxNyArOTU0LDE1IEBACiBDbGVhbnVwQWxpYXNEYXRhKHN0cnVjdCBsaWJhbGlhcyAq
bGEpCiB7CiAJc3RydWN0IGFsaWFzX2xpbmsgKmxuazsKLQlpbnQgaSwgaWNvdW50OworCWludCBp
OwogCiAJTElCQUxJQVNfTE9DS19BU1NFUlQobGEpOwotCWljb3VudCA9IDA7CiAJZm9yIChpID0g
MDsgaSA8IExJTktfVEFCTEVfT1VUX1NJWkU7IGkrKykgewogCQlsbmsgPSBMSVNUX0ZJUlNUKCZs
YS0+bGlua1RhYmxlT3V0W2ldKTsKIAkJd2hpbGUgKGxuayAhPSBOVUxMKSB7CiAJCQlzdHJ1Y3Qg
YWxpYXNfbGluayAqbGlua19uZXh0OwogCiAJCQlsaW5rX25leHQgPSBMSVNUX05FWFQobG5rLCBs
aXN0X291dCk7Ci0JCQlpY291bnQrKzsKIAkJCURlbGV0ZUxpbmsobG5rKTsKIAkJCWxuayA9IGxp
bmtfbmV4dDsKIAkJfQpAQCAtODM3LDExICs5NzUsOSBAQAogc3RhdGljIHZvaWQKIEluY3JlbWVu
dGFsQ2xlYW51cChzdHJ1Y3QgbGliYWxpYXMgKmxhKQogewotCWludCBpY291bnQ7CiAJc3RydWN0
IGFsaWFzX2xpbmsgKmxuazsKIAogCUxJQkFMSUFTX0xPQ0tfQVNTRVJUKGxhKTsKLQlpY291bnQg
PSAwOwogCWxuayA9IExJU1RfRklSU1QoJmxhLT5saW5rVGFibGVPdXRbbGEtPmNsZWFudXBJbmRl
eCsrXSk7CiAJd2hpbGUgKGxuayAhPSBOVUxMKSB7CiAJCWludCBpZGVsdGE7CkBAIC04NTIsMjEg
Kzk4OCwyMyBAQAogCQlzd2l0Y2ggKGxuay0+bGlua190eXBlKSB7CiAJCWNhc2UgTElOS19UQ1A6
CiAJCQlpZiAoaWRlbHRhID4gbG5rLT5leHBpcmVfdGltZSkgewotCQkJCXN0cnVjdCB0Y3BfZGF0
ICp0Y3BfYXV4OwotCi0JCQkJdGNwX2F1eCA9IGxuay0+ZGF0YS50Y3A7Ci0JCQkJaWYgKHRjcF9h
dXgtPnN0YXRlLmluICE9IEFMSUFTX1RDUF9TVEFURV9DT05ORUNURUQKLQkJCQkgICAgfHwgdGNw
X2F1eC0+c3RhdGUub3V0ICE9IEFMSUFTX1RDUF9TVEFURV9DT05ORUNURUQpIHsKKwkJCQlpZiAo
R2V0U3RhdGVJbihsbmspICE9IEFMSUFTX1RDUF9TVEFURV9DT05ORUNURUQKKwkJCQkgICAgfHwg
R2V0U3RhdGVPdXQobG5rKSAhPSBBTElBU19UQ1BfU1RBVEVfQ09OTkVDVEVEKSB7CiAJCQkJCURl
bGV0ZUxpbmsobG5rKTsKLQkJCQkJaWNvdW50Kys7CisJCQkJfSBlbHNlIHsKKwkJCQkJLyogZXhw
aXJlX3RpbWUgaXMgdXAsIHNldCB0aGUgbGluayBhcyBkaXNjb25uZWN0ZWQsIG9uIHRoZSBwYXNz
CisJCQkJCSAqIDEyMHMgZnJvbSBub3cgaWYgaXQncyBzdGlsbCBkaXNjb25uZWN0ZWQgdGhlbiB3
ZSdsbCBkdW1wIHRoZSBsaW5rLgorCQkJCQkgKi8KKwkJCQkJU2V0U3RhdGVJbihsbmssIEFMSUFT
X1RDUF9TVEFURV9OT1RfQ09OTkVDVEVEKTsKKwkJCQkJU2V0U3RhdGVPdXQobG5rLCBBTElBU19U
Q1BfU1RBVEVfTk9UX0NPTk5FQ1RFRCk7CisJCQkJCWxuay0+ZXhwaXJlX3RpbWUgPSBUQ1BfRVhQ
SVJFX1NJTkdMRURFQUQ7CisJCQkJCWxuay0+dGltZXN0YW1wID0gbGEtPnRpbWVTdGFtcDsKIAkJ
CQl9CiAJCQl9CiAJCQlicmVhazsKIAkJZGVmYXVsdDoKLQkJCWlmIChpZGVsdGEgPiBsbmstPmV4
cGlyZV90aW1lKSB7CisJCQlpZiAoaWRlbHRhID4gbG5rLT5leHBpcmVfdGltZSkKIAkJCQlEZWxl
dGVMaW5rKGxuayk7Ci0JCQkJaWNvdW50Kys7Ci0JCQl9CiAJCQlicmVhazsKIAkJfQogCQlsbmsg
PSBsaW5rX25leHQ7CkBAIC05NDMsMTMgKzEwODEsMTUgQEAKIAkJYnJlYWs7CiAJfQogCi0vKiBG
cmVlIG1lbW9yeSAqLwotCWZyZWUobG5rKTsKIAogLyogV3JpdGUgc3RhdGlzdGljcywgaWYgbG9n
Z2luZyBlbmFibGVkICovCiAJaWYgKGxhLT5wYWNrZXRBbGlhc01vZGUgJiBQS1RfQUxJQVNfTE9H
KSB7Ci0JCVNob3dBbGlhc1N0YXRzKGxhKTsKKwkJU2hvd0FsaWFzRGV0YWlscyhsYSk7CiAJfQor
CisvKiBGcmVlIG1lbW9yeSAqLworICAgICAgICBmcmVlKGxuayk7CisKIH0KIAogCkBAIC0xMDg5
LDcgKzEyMjksNyBAQAogI2VuZGlmCiAJfQogCWlmIChsYS0+cGFja2V0QWxpYXNNb2RlICYgUEtU
X0FMSUFTX0xPRykgewotCQlTaG93QWxpYXNTdGF0cyhsYSk7CisJCVNob3dBbGlhc0RldGFpbHMo
bGEpOwogCX0KIAlyZXR1cm4gKGxuayk7CiB9CkBAIC0yMjYyLDggKzI0MDIsMTUgQEAKIAkJaWYg
KChsYS0+bG9nRGVzYyA9IG1hbGxvYyhMSUJBTElBU19CVUZfU0laRSkpKQogCQkJOwogI2Vsc2Ug
CQkKLQkJaWYgKChsYS0+bG9nRGVzYyA9IGZvcGVuKCIvdmFyL2xvZy9hbGlhcy5sb2ciLCAidyIp
KSkKKwkJaWYgKChsYS0+bG9nRGVzYyA9IGZvcGVuKCIvdmFyL2xvZy9hbGlhcyIsICJ3IikpKQog
CQkJZnByaW50ZihsYS0+bG9nRGVzYywgIlBhY2tldEFsaWFzL0luaXRQYWNrZXRBbGlhc0xvZzog
UGFja2V0IGFsaWFzIGxvZ2dpbmcgZW5hYmxlZC5cbiIpOwkgICAgICAgCisJCWVsc2UKKwkJCXJl
dHVybiAoRU5PTUVNKTsKKworCQlpZiAoKGxhLT5sb2dEZXRhaWxzID0gZm9wZW4oIi92YXIvbG9n
L2FsaWFzLmRldGFpbHMiLCAidyIpKSkgeworCQkJZnByaW50ZihsYS0+bG9nRGV0YWlscywgIlBh
Y2tldEFsaWFzL0luaXRQYWNrZXRBbGlhc0xvZzogUGFja2V0IGFsaWFzIGxvZ2dpbmcgZW5hYmxl
ZC5cbiIpOworCQkJbGEtPmxhc3REZXRhaWxzVGltZSA9IGxhLT50aW1lU3RhbXA7CisJCX0KICNl
bmRpZgogCQllbHNlIAogCQkJcmV0dXJuIChFTk9NRU0pOyAvKiBsb2cgaW5pdGlhbGl6YXRpb24g
ZmFpbGVkICovCkBAIC0yMjg0LDYgKzI0MzEsMTAgQEAKIAkJZnJlZShsYS0+bG9nRGVzYyk7CiAj
ZWxzZQogCQlmY2xvc2UobGEtPmxvZ0Rlc2MpOworCQlpZiAobGEtPmxvZ0RldGFpbHMpIHsKKwkJ
CWZjbG9zZShsYS0+bG9nRGV0YWlscyk7CisJCQlsYS0+bG9nRGV0YWlscyA9IE5VTEw7CisJCX0K
ICNlbmRpZgogCQlsYS0+bG9nRGVzYyA9IE5VTEw7CiAJfQotLS0gYWxpYXNfbG9jYWwuaC5vcmln
CTIwMDgtMDQtMDkgMTc6NDY6MjUuMDAwMDAwMDAwIC0wNTAwCisrKyBhbGlhc19sb2NhbC5oCTIw
MDgtMDQtMjggMDI6NTM6MjYuMDAwMDAwMDAwIC0wNTAwCkBAIC0xMDAsNiArMTAwLDggQEAKIAlp
bnQJCWZyYWdtZW50UHRyTGlua0NvdW50OwogCWludAkJc29ja0NvdW50OwogCisJaW50CQlsYXN0
RGV0YWlsc1RpbWU7CisKIAlpbnQJCWNsZWFudXBJbmRleDsJLyogSW5kZXggdG8gY2hhaW4gb2Yg
bGluayB0YWJsZSAgICAqLwogCS8qIGJlaW5nIGluc3BlY3RlZCBmb3Igb2xkIGxpbmtzICAgKi8K
IApAQCAtMTIwLDYgKzEyMiw3IEBACiAJY2hhciAgICAgICAgICAgKmxvZ0Rlc2M7ICAgICAgICAK
ICNlbHNlIAogCUZJTEUgICAgICAgICAgICpsb2dEZXNjOwkKKwlGSUxFICAgICAgICAgICAqbG9n
RGV0YWlsczsKICNlbmRpZgogCS8qIHN0YXRpc3RpY3MgbW9uaXRvcmluZyAqLwogCg==
------=_Part_4439_20253452.1209380486436--



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