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>