From mboxrd@z Thu Jan 1 00:00:00 1970 From: linuxpark Subject: Re: [tproxy] [HELP] Tproxy server Can't receive any client packet Date: Wed, 02 Dec 2009 14:45:35 +0900 Message-ID: <4B15FEFF.7090706@gmail.com> References: <1259137840.9191.7.camel@nienna.balabit> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------010106040702030802020000" Cc: tproxy@lists.balabit.hu, netfilter-announce@lists.netfilter.org, netfilter@lists.netfilter.org, netdev@vger.kernel.org, rnd@elim.net, dylee@elim.net To: KOVACS Krisztian Return-path: Received: from mail-px0-f188.google.com ([209.85.216.188]:36722 "EHLO mail-px0-f188.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750906AbZLBFwm (ORCPT ); Wed, 2 Dec 2009 00:52:42 -0500 Received: by pxi26 with SMTP id 26so4491501pxi.21 for ; Tue, 01 Dec 2009 21:52:48 -0800 (PST) In-Reply-To: <1259137840.9191.7.camel@nienna.balabit> Sender: netdev-owner@vger.kernel.org List-ID: This is a multi-part message in MIME format. --------------010106040702030802020000 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hi i have one more problem and question :-( i tested tproxy4 in debian linux and succeed in transparent proxying function of the apache proxy server (a tproxy patched) but when i tested the same apache version in Cento OS (5.4) , the apache proxy did not operate correctly. listen () function did not return when a client tried to connect a web server. then the apache did not do any action. no response but the usage count of filter in the mangle table was increased. and then.. i found something strange like below. there are two listening daemon with same port but the daemons are same process root@waf:~/tproxy4-20091127/httpd-2.2.9-tproxy-v1# netstat -ap | grep http tcp 0 0 *:squid *:* LISTEN 7397/httpd tcp 0 0 *:squid *:* LISTEN 7397/httpd i don't know why the apache proxy which succeed in doing tproxy in the debian linux did not operate correctly in CentOS (5.4) but squid proxy succeed in tproxy in both the debian and the CentOS box do you have any idea ? previously thanks ~ Cheers, JeHo Park [Environment] - bridged network Client <---> [eth2 apache tproxy eth1] <---> WebServer +-------- br0 ---------+ - CPU: AMD Phenom(tm) II X4 955 Processor - OS: CentOS release 5.4 (Final) - Kernel: vannilla 2.6.31 - Kernel config: kconfig-2.6.31 [attached] - apache server: apache 2.2.9 + http-2.2.9-tproxy4.patch [attached] - iptables: 1.4.3 - gcc 4.1.2 *- iptables & ebroute & ip rules* ${IPTABLES} -t mangle -F ${IPTABLES} -t mangle -X DIVERT ${IPTABLES} -t nat -F #ip rule del fwmark 0x1/0x1 lookup 100 ip rule del fwmark 1 lookup 100 ip route del local 0.0.0.0/0 dev lo table 100 ebtables -t broute -F ${IPTABLES} -t mangle -N DIVERT ${IPTABLES} -t mangle -A PREROUTING -p tcp -m socket -j DIVERT ${IPTABLES} -t mangle -A DIVERT -j MARK --set-mark 1 ${IPTABLES} -t mangle -A DIVERT -j ACCEPT ${IPTABLES} -t mangle -A PREROUTING -p tcp --dport 80 -j TPROXY --tproxy-mark 0x1/0x1 --on-port ${PORT} ip rule add fwmark 1 lookup 100 ip route add local 0.0.0.0/0 dev lo table 100 ebtables -t broute -A BROUTING -i $CLIENT_IFACE -p ipv4 --ip-proto tcp --ip-dport 80 -j redirect --redirect-target ACCEPT ebtables -t broute -A BROUTING -i $INET_IFACE -p ipv4 --ip-proto tcp --ip-sport 80 -j redirect --redirect-target ACCEPT cd /proc/sys/net/bridge/ for i in * do echo 0 > $i done unset i sysctl net.ipv4.ip_nonlocal_bind=1 sysctl net.ipv4.ip_forward=1 KOVACS Krisztian 쓴 글: > Hi, > > On Mon, 2009-11-23 at 15:51 +0900, 박제호 wrote: > >> i have a problem in my transparent proxy test, >> i recently made up the testbed as below to run the tproxy patched >> apache proxy [mod_proxy], >> and i applied all iptables and routing rules with referencing the >> readme file [http://www.balabit.com/downloads/files/tproxy/README.txt, >> http://www.mjmwired.net/kernel/Documentation/networking/tproxy.txt] >> the proxy server listening the port 3128 and i checked there were no problem. >> but when the client tried to connect the web server, >> the packets reached to the box and i found the usage counts of filter >> rules in the mangle table incresed >> but my tproxy server could not receive any corresponding packet from the socket >> >> I want to know why my proxy server can't receive any packet through the socket, >> Do i need some more DNAT rules ? >> > > Would you mind testing the setup with an unpatched upstream kernel, that > has tproxy built-in? (2.6.31, for example) > > Also, please download the latest iptables from netfilter.org and try > using that. (No need for patching, tproxy support is in upstream.) > > That would help a lot in identifying the source of the issue. Thanks in > advance. > > Cheers, > Krisztian > > > --------------010106040702030802020000 Content-Type: text/plain; name="http-2.2.9-tproxy4-patch" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="http-2.2.9-tproxy4-patch" ZGlmZiAtdU5yIGh0dHBkLTIuMi45L21vZHVsZXMvcHJveHkvbW9kX3Byb3h5LmMgaHR0cGQt Mi4yLjktdHByb3h5LXYxL21vZHVsZXMvcHJveHkvbW9kX3Byb3h5LmMKLS0tIGh0dHBkLTIu Mi45L21vZHVsZXMvcHJveHkvbW9kX3Byb3h5LmMJMjAwOC0wNS0yOSAwNjoxMToyNC4wMDAw MDAwMDAgKzA5MDAKKysrIGh0dHBkLTIuMi45LXRwcm94eS12MS9tb2R1bGVzL3Byb3h5L21v ZF9wcm94eS5jCTIwMDktMTItMDIgMTE6MjY6MjUuMDAwMDAwMDAwICswOTAwCkBAIC0xODcw LDYgKzE4NzAsMTggQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAorc3RhdGljIGNvbnN0IGNo YXIgKgorc2V0X3Rwcm94eShjbWRfcGFybXMgKnBhcm1zLCB2b2lkICpkdW1teSwgaW50IGZs YWcpCit7CisgICAgcHJveHlfc2VydmVyX2NvbmYgKnBzZiA9CisJYXBfZ2V0X21vZHVsZV9j b25maWcocGFybXMtPnNlcnZlci0+bW9kdWxlX2NvbmZpZywgJnByb3h5X21vZHVsZSk7CisK KyAgICBwc2YtPnRwcm94eSA9IGZsYWc7CisgICAgcHNmLT50cHJveHlfc2V0ID0gMTsKKwor ICAgIHJldHVybiBOVUxMOworfQorCiBzdGF0aWMgdm9pZCBhcF9hZGRfcGVyX3Byb3h5X2Nv bmYoc2VydmVyX3JlYyAqcywgYXBfY29uZl92ZWN0b3JfdCAqZGlyX2NvbmZpZykKIHsKICAg ICBwcm94eV9zZXJ2ZXJfY29uZiAqc2NvbmYgPSBhcF9nZXRfbW9kdWxlX2NvbmZpZyhzLT5t b2R1bGVfY29uZmlnLApAQCAtMjA4Miw2ICsyMDk0LDggQEAKICAgICAgIkEgYmFsYW5jZXIg b3Igd29ya2VyIG5hbWUgd2l0aCBsaXN0IG9mIHBhcmFtcyIpLAogICAgIEFQX0lOSVRfVEFL RTEoIlByb3h5RnRwRGlyQ2hhcnNldCIsIHNldF9mdHBfZGlyZWN0b3J5X2NoYXJzZXQsIE5V TEwsCiAgICAgIFJTUkNfQ09ORnxBQ0NFU1NfQ09ORiwgIkRlZmluZSB0aGUgY2hhcmFjdGVy IHNldCBmb3IgcHJveGllZCBGVFAgbGlzdGluZ3MiKSwKKyAgICBBUF9JTklUX0ZMQUcoIlBy b3h5VFByb3h5Iiwgc2V0X3Rwcm94eSwgTlVMTCwgUlNSQ19DT05GLAorICAgICAib24gaWYg dGhlIHByb3h5IHNob3VsZCB1c2UgY2xpZW50IElQIHRvIGNvbm5lY3QgdG8gdGhlIG9yaWdp biBzZXJ2ZXIiKSwKICAgICB7TlVMTH0KIH07CiAKZGlmZiAtdU5yIGh0dHBkLTIuMi45L21v ZHVsZXMvcHJveHkvbW9kX3Byb3h5LmggaHR0cGQtMi4yLjktdHByb3h5LXYxL21vZHVsZXMv cHJveHkvbW9kX3Byb3h5LmgKLS0tIGh0dHBkLTIuMi45L21vZHVsZXMvcHJveHkvbW9kX3By b3h5LmgJMjAwOC0wNS0yOSAwNjoyNDowNC4wMDAwMDAwMDAgKzA5MDAKKysrIGh0dHBkLTIu Mi45LXRwcm94eS12MS9tb2R1bGVzL3Byb3h5L21vZF9wcm94eS5oCTIwMDktMTItMDIgMTE6 MjY6MjUuMDAwMDAwMDAwICswOTAwCkBAIC0xOTMsNiArMTkzLDkgQEAKICAgICB9IHByb3h5 X3N0YXR1czsgICAgICAgICAgICAgLyogU3RhdHVzIGRpc3BsYXkgb3B0aW9ucyAqLwogICAg IGNoYXIgcHJveHlfc3RhdHVzX3NldDsKICAgICBhcHJfcG9vbF90ICpwb29sOyAgICAgICAg ICAgLyogUG9vbCB1c2VkIGZvciBhbGxvY2F0aW5nIHRoaXMgc3RydWN0ICovCisgICAgaW50 IHRwcm94eTsgICAgICAgICAgICAgICAgIC8qIHRydWUgaWYgdHByb3h5IGlzIGVuYWJsZWQg Ki8KKyAgICBjaGFyIHRwcm94eV9zZXQ7CisKIH0gcHJveHlfc2VydmVyX2NvbmY7CiAKIApA QCAtNzExLDYgKzcxNCw3IEBACiAgKiBAcGFyYW0gY29ubiAgICBhY3F1aXJlZCBjb25uZWN0 aW9uCiAgKiBAcGFyYW0gd29ya2VyICBjb25uZWN0aW9uIHdvcmtlcgogICogQHBhcmFtIHMg ICAgICAgY3VycmVudCBzZXJ2ZXIgcmVjb3JkCisgKiBAcGFyYW0gcmVtb3RlX2FkZHIgIGNs aWVudCBhZGRyCiAgKiBAcmV0dXJuICAgICAgICBPSyBvciBIVFRQX1hYWCBlcnJvcgogICog QG5vdGUgSW4gY2FzZSB0aGUgc29ja2V0IGFscmVhZHkgZXhpc3RzIGZvciBjb25uLCBqdXN0 IGNoZWNrIHRoZSBsaW5rCiAgKiBzdGF0dXMuCkBAIC03MTgsNyArNzIyLDggQEAKIFBST1hZ X0RFQ0xBUkUoaW50KSBhcF9wcm94eV9jb25uZWN0X2JhY2tlbmQoY29uc3QgY2hhciAqcHJv eHlfZnVuY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHByb3h5X2Nvbm5fcmVjICpjb25uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwcm94eV93b3JrZXIgKndvcmtlciwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX3JlYyAqcyk7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9yZWMgKnMsCisJ CQkJCSAgICBhcHJfc29ja2FkZHJfdCAqcmVtb3RlX2FkZHIpOwogLyoqCiAgKiBNYWtlIGEg Y29ubmVjdGlvbiByZWNvcmQgZm9yIGJhY2tlbmQgY29ubmVjdGlvbgogICogQHBhcmFtIHBy b3h5X2Z1bmN0aW9uIGNhbGxpbmcgcHJveHkgc2NoZW1lIChodHRwLCBhanAsIC4uLikKZGlm ZiAtdU5yIGh0dHBkLTIuMi45L21vZHVsZXMvcHJveHkvbW9kX3Byb3h5X2FqcC5jIGh0dHBk LTIuMi45LXRwcm94eS12MS9tb2R1bGVzL3Byb3h5L21vZF9wcm94eV9hanAuYwotLS0gaHR0 cGQtMi4yLjkvbW9kdWxlcy9wcm94eS9tb2RfcHJveHlfYWpwLmMJMjAwOC0wNi0wNSAyMTo0 Njo0My4wMDAwMDAwMDAgKzA5MDAKKysrIGh0dHBkLTIuMi45LXRwcm94eS12MS9tb2R1bGVz L3Byb3h5L21vZF9wcm94eV9hanAuYwkyMDA5LTEyLTAyIDExOjI2OjI1LjAwMDAwMDAwMCAr MDkwMApAQCAtNjA1LDExICs2MDUsMTEgQEAKICAgICAgICAgZ290byBjbGVhbnVwOwogCiAg ICAgLyogU3RlcCBUd286IE1ha2UgdGhlIENvbm5lY3Rpb24gKi8KLSAgICBpZiAoYXBfcHJv eHlfY29ubmVjdF9iYWNrZW5kKHNjaGVtZSwgYmFja2VuZCwgd29ya2VyLCByLT5zZXJ2ZXIp KSB7Ci0gICAgICAgIGFwX2xvZ19lcnJvcihBUExPR19NQVJLLCBBUExPR19FUlIsIDAsIHIt PnNlcnZlciwKLSAgICAgICAgICAgICAgICAgICAgICJwcm94eTogQUpQOiBmYWlsZWQgdG8g bWFrZSBjb25uZWN0aW9uIHRvIGJhY2tlbmQ6ICVzIiwKLSAgICAgICAgICAgICAgICAgICAg IGJhY2tlbmQtPmhvc3RuYW1lKTsKLSAgICAgICAgc3RhdHVzID0gSFRUUF9TRVJWSUNFX1VO QVZBSUxBQkxFOworICAgIGlmIChhcF9wcm94eV9jb25uZWN0X2JhY2tlbmQoc2NoZW1lLCBi YWNrZW5kLCB3b3JrZXIsIHItPnNlcnZlciwgci0+Y29ubmVjdGlvbi0+cmVtb3RlX2FkZHIp KSB7CisJYXBfbG9nX2Vycm9yKEFQTE9HX01BUkssIEFQTE9HX0VSUiwgMCwgci0+c2VydmVy LAorCQkgICAgICJwcm94eTogQUpQOiBmYWlsZWQgdG8gbWFrZSBjb25uZWN0aW9uIHRvIGJh Y2tlbmQ6ICVzIiwKKwkJICAgICBiYWNrZW5kLT5ob3N0bmFtZSk7CisJc3RhdHVzID0gSFRU UF9TRVJWSUNFX1VOQVZBSUxBQkxFOwogICAgICAgICBnb3RvIGNsZWFudXA7CiAgICAgfQog CmRpZmYgLXVOciBodHRwZC0yLjIuOS9tb2R1bGVzL3Byb3h5L21vZF9wcm94eV9mdHAuYyBo dHRwZC0yLjIuOS10cHJveHktdjEvbW9kdWxlcy9wcm94eS9tb2RfcHJveHlfZnRwLmMKLS0t IGh0dHBkLTIuMi45L21vZHVsZXMvcHJveHkvbW9kX3Byb3h5X2Z0cC5jCTIwMDgtMDUtMTgg MDQ6NDI6MDMuMDAwMDAwMDAwICswOTAwCisrKyBodHRwZC0yLjIuOS10cHJveHktdjEvbW9k dWxlcy9wcm94eS9tb2RfcHJveHlfZnRwLmMJMjAwOS0xMi0wMiAxMToyNjoyNS4wMDAwMDAw MDAgKzA5MDAKQEAgLTk3MywxMSArOTczLDExIEBACiAgICAgICovCiAKIAotICAgIGlmIChh cF9wcm94eV9jb25uZWN0X2JhY2tlbmQoIkZUUCIsIGJhY2tlbmQsIHdvcmtlciwgci0+c2Vy dmVyKSkgewotICAgICAgICBhcF9sb2dfZXJyb3IoQVBMT0dfTUFSSywgQVBMT0dfREVCVUcs IDAsIHItPnNlcnZlciwKLSAgICAgICAgICAgICAgICAgICAgICJwcm94eTogRlRQOiBhbiBl cnJvciBvY2N1cnJlZCBjcmVhdGluZyBhIG5ldyBjb25uZWN0aW9uIHRvICVwSSAoJXMpIiwK LSAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3RfYWRkciwgY29ubmVjdG5hbWUpOwotICAg ICAgICBwcm94eV9mdHBfY2xlYW51cChyLCBiYWNrZW5kKTsKKyAgICBpZiAoYXBfcHJveHlf Y29ubmVjdF9iYWNrZW5kKCJGVFAiLCBiYWNrZW5kLCB3b3JrZXIsIHItPnNlcnZlciwgYy0+ cmVtb3RlX2FkZHIpKSB7CisJYXBfbG9nX2Vycm9yKEFQTE9HX01BUkssIEFQTE9HX0RFQlVH LCAwLCByLT5zZXJ2ZXIsCisJCSAgICAgInByb3h5OiBGVFA6IGFuIGVycm9yIG9jY3VycmVk IGNyZWF0aW5nIGEgbmV3IGNvbm5lY3Rpb24gdG8gJXBJICglcykiLAorCQkgICAgIGNvbm5l Y3RfYWRkciwgY29ubmVjdG5hbWUpOworCXByb3h5X2Z0cF9jbGVhbnVwKHIsIGJhY2tlbmQp OwogICAgICAgICByZXR1cm4gSFRUUF9TRVJWSUNFX1VOQVZBSUxBQkxFOwogICAgIH0KIApk aWZmIC11TnIgaHR0cGQtMi4yLjkvbW9kdWxlcy9wcm94eS9tb2RfcHJveHlfaHR0cC5jIGh0 dHBkLTIuMi45LXRwcm94eS12MS9tb2R1bGVzL3Byb3h5L21vZF9wcm94eV9odHRwLmMKLS0t IGh0dHBkLTIuMi45L21vZHVsZXMvcHJveHkvbW9kX3Byb3h5X2h0dHAuYwkyMDA4LTA2LTEx IDAzOjQ5OjE5LjAwMDAwMDAwMCArMDkwMAorKysgaHR0cGQtMi4yLjktdHByb3h5LXYxL21v ZHVsZXMvcHJveHkvbW9kX3Byb3h5X2h0dHAuYwkyMDA5LTEyLTAyIDExOjI2OjI1LjAwMDAw MDAwMCArMDkwMApAQCAtMTg3MSw2ICsxODcxLDEwIEBACiAgICAgICogY29ubmVjdGlvbiBJ RCBvZiB0aGUgY3VycmVudCB1cHN0cmVhbSBjb25uZWN0aW9uIGlzIHRoZSBzYW1lIGFzIHRo YXQKICAgICAgKiBvZiB0aGUgY29ubmVjdGlvbiB3aGVuIHRoZSBzb2NrZXQgd2FzIG9wZW5l ZC4KICAgICAgKi8KKyAgICAgICAgCisgICAgYXBfbG9nX2Vycm9yKEFQTE9HX01BUkssIEFQ TE9HX0RFQlVHLCAwLCByLT5zZXJ2ZXIsCisgICAgICAgICAgICAgICAgICAgICAiLS0+IGxp bnV4cGFyazogICVzLyVzLyVkICVzXG4iLCAKKwkJICAgICBfX0ZJTEVfXywgX19GVU5DVElP Tl9fLCBfX0xJTkVfXywgdXJsKTsKICAgICBhcHJfcG9vbF90ICpwID0gci0+Y29ubmVjdGlv bi0+cG9vbDsKICAgICBjb25uX3JlYyAqYyA9IHItPmNvbm5lY3Rpb247CiAgICAgYXByX3Vy aV90ICp1cmkgPSBhcHJfcGFsbG9jKHItPmNvbm5lY3Rpb24tPnBvb2wsIHNpemVvZigqdXJp KSk7CkBAIC0xOTI5LDcgKzE5MzMsNyBAQAogICAgICAgICBnb3RvIGNsZWFudXA7CiAKICAg ICAvKiBTdGVwIFR3bzogTWFrZSB0aGUgQ29ubmVjdGlvbiAqLwotICAgIGlmIChhcF9wcm94 eV9jb25uZWN0X2JhY2tlbmQocHJveHlfZnVuY3Rpb24sIGJhY2tlbmQsIHdvcmtlciwgci0+ c2VydmVyKSkgeworICAgICBpZiAoYXBfcHJveHlfY29ubmVjdF9iYWNrZW5kKHByb3h5X2Z1 bmN0aW9uLCBiYWNrZW5kLCB3b3JrZXIsIHItPnNlcnZlciwgYy0+cmVtb3RlX2FkZHIpKSB7 CiAgICAgICAgIGlmIChyLT5wcm94eXJlcSA9PSBQUk9YWVJFUV9QUk9YWSkKICAgICAgICAg ICAgIHN0YXR1cyA9IEhUVFBfTk9UX0ZPVU5EOwogICAgICAgICBlbHNlCmRpZmYgLXVOciBo dHRwZC0yLjIuOS9tb2R1bGVzL3Byb3h5L3Byb3h5X3V0aWwuYyBodHRwZC0yLjIuOS10cHJv eHktdjEvbW9kdWxlcy9wcm94eS9wcm94eV91dGlsLmMKLS0tIGh0dHBkLTIuMi45L21vZHVs ZXMvcHJveHkvcHJveHlfdXRpbC5jCTIwMDgtMDUtMjkgMDY6MTE6MjQuMDAwMDAwMDAwICsw OTAwCisrKyBodHRwZC0yLjIuOS10cHJveHktdjEvbW9kdWxlcy9wcm94eS9wcm94eV91dGls LmMJMjAwOS0xMi0wMiAxMToyNjoyNS4wMDAwMDAwMDAgKzA5MDAKQEAgLTE1OTYsOCArMTU5 Niw4IEBACiAgICAgICAgIH0KIAogICAgICAgICBhcF9sb2dfZXJyb3IoQVBMT0dfTUFSSywg QVBMT0dfREVCVUcsIDAsIHMsCi0gICAgICAgICAgICAgICAgICAgICAicHJveHk6ICVzOiBm YW0gJWQgc29ja2V0IGNyZWF0ZWQgdG8gY29ubmVjdCB0byAlcyIsCi0gICAgICAgICAgICAg ICAgICAgICBwcm94eV9mdW5jdGlvbiwgYmFja2VuZF9hZGRyLT5mYW1pbHksIGJhY2tlbmRf bmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAiJXMvJWQgcHJveHk6ICVzOiBmYW0gJWQg c29ja2V0IGNyZWF0ZWQgdG8gY29ubmVjdCB0byAlcyIsCisgICAgICAgICAgICAgICAgICAg ICBfX0ZVTkNUSU9OX18sIF9fTElORV9fLCBwcm94eV9mdW5jdGlvbiwgYmFja2VuZF9hZGRy LT5mYW1pbHksIGJhY2tlbmRfbmFtZSk7CiAKICAgICAgICAgLyogbWFrZSB0aGUgY29ubmVj dGlvbiBvdXQgb2YgdGhlIHNvY2tldCAqLwogICAgICAgICBydiA9IGFwcl9zb2NrZXRfY29u bmVjdCgqbmV3c29jaywgYmFja2VuZF9hZGRyKTsKQEAgLTIyNjksNyArMjI2OSw4IEBACiBQ Uk9YWV9ERUNMQVJFKGludCkgYXBfcHJveHlfY29ubmVjdF9iYWNrZW5kKGNvbnN0IGNoYXIg KnByb3h5X2Z1bmN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwcm94eV9jb25uX3JlYyAqY29ubiwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcHJveHlfd29ya2VyICp3b3JrZXIsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9yZWMgKnMpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9yZWMgKnMs CisJCQkJCSAgICBhcHJfc29ja2FkZHJfdCAqcmVtb3RlX2FkZHIpCiB7CiAgICAgYXByX3N0 YXR1c190IHJ2OwogICAgIGludCBjb25uZWN0ZWQgPSAwOwpAQCAtMjM0MiwxNCArMjM0Mywz MSBAQAogICAgICAgICAgICAgICAgIGFwX2xvZ19lcnJvcihBUExPR19NQVJLLCBBUExPR19F UlIsIHJ2LCBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXByX3NvY2tldF9v cHRfc2V0KFNPX0tFRVBBTElWRSk6IEZhaWxlZCB0byBzZXQiCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICIgS2VlcGFsaXZlIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K KwkgICAgfQorCX0KKworCS8qIFRQcm94eSBzdXBwb3J0ICovCisJaWYgKGNvbmYtPnRwcm94 eSkgeworI2lmIDEgCisJICAgIC8vaWYgKChydiA9IGFwcl9zb2NrZXRfb3B0X3NldChuZXdz b2NrLCBBUFJfSVBfVFJBTlNQQVJFTlQsIDEpKSAhPSBBUFJfU1VDQ0VTUykgeworCSAgICBp ZiAoKHJ2ID0gYXByX3NvY2tldF9vcHRfc2V0KG5ld3NvY2ssIDMyLCAxKSkgIT0gQVBSX1NV Q0NFU1MpIHsKKwkJYXBfbG9nX2Vycm9yKEFQTE9HX01BUkssIEFQTE9HX0VSUiwgcnYsIHMs CisJCQkgICAgICJhcHJfc29ja2V0X29wdF9zZXQoQVBSX0lQX1RSQU5TUEFSRU5UKTogRmFp bGVkIHRvIHNldCIpOworCSAgICB9CisjZW5kaWYKKwkgICAgaWYgKChydiA9IGFwcl9zb2Nr ZXRfYmluZChuZXdzb2NrLCByZW1vdGVfYWRkcikpICE9IEFQUl9TVUNDRVNTKSB7CisJCWFw X2xvZ19lcnJvcihBUExPR19NQVJLLCBBUExPR19FUlIsIHJ2LCBzLAorCQkJICAgICAicHJv eHk6IGVycm9yIGJpbmRpbmcgdG8gc29ja2V0ICVwSSIsIHJlbW90ZV9hZGRyKTsKKwkJcmV0 dXJuIEhUVFBfSU5URVJOQUxfU0VSVkVSX0VSUk9SOworCSAgICB9CisJfQorCiAgICAgICAg IGFwX2xvZ19lcnJvcihBUExPR19NQVJLLCBBUExPR19ERUJVRywgMCwgcywKLSAgICAgICAg ICAgICAgICAgICAgICJwcm94eTogJXM6IGZhbSAlZCBzb2NrZXQgY3JlYXRlZCB0byBjb25u ZWN0IHRvICVzIiwKLSAgICAgICAgICAgICAgICAgICAgIHByb3h5X2Z1bmN0aW9uLCBiYWNr ZW5kX2FkZHItPmZhbWlseSwgd29ya2VyLT5ob3N0bmFtZSk7CisgICAgICAgICAgICAgICAg ICAgICAiJXMvJWQgcHJveHk6ICVzOiBmYW0gJWQgc29ja2V0IGNyZWF0ZWQgdG8gY29ubmVj dCB0byAlcyIsCisgICAgICAgICAgICAgICAgICAgICBfX0ZVTkNUSU9OX18sIF9fTElORV9f LCBwcm94eV9mdW5jdGlvbiwgYmFja2VuZF9hZGRyLT5mYW1pbHksIHdvcmtlci0+aG9zdG5h bWUpOwogCi0gICAgICAgIC8qIG1ha2UgdGhlIGNvbm5lY3Rpb24gb3V0IG9mIHRoZSBzb2Nr ZXQgKi8KLSAgICAgICAgcnYgPSBhcHJfc29ja2V0X2Nvbm5lY3QobmV3c29jaywgYmFja2Vu ZF9hZGRyKTsKKwkvKiBtYWtlIHRoZSBjb25uZWN0aW9uIG91dCBvZiB0aGUgc29ja2V0ICov CisJcnYgPSBhcHJfc29ja2V0X2Nvbm5lY3QobmV3c29jaywgYmFja2VuZF9hZGRyKTsKIAog ICAgICAgICAvKiBpZiBhbiBlcnJvciBvY2N1cnJlZCwgbG9vcCByb3VuZCBhbmQgdHJ5IGFn YWluICovCiAgICAgICAgIGlmIChydiAhPSBBUFJfU1VDQ0VTUykgewpkaWZmIC11TnIgaHR0 cGQtMi4yLjkvb3MvdW5peC91bml4ZC5jIGh0dHBkLTIuMi45LXRwcm94eS12MS9vcy91bml4 L3VuaXhkLmMKLS0tIGh0dHBkLTIuMi45L29zL3VuaXgvdW5peGQuYwkyMDA2LTA3LTEyIDEy OjM4OjQ0LjAwMDAwMDAwMCArMDkwMAorKysgaHR0cGQtMi4yLjktdHByb3h5LXYxL29zL3Vu aXgvdW5peGQuYwkyMDA5LTEyLTAyIDExOjI2OjI2LjAwMDAwMDAwMCArMDkwMApAQCAtNDks OCArNDksMTAgQEAKICNlbmRpZgogI2lmZGVmIEhBVkVfU1lTX1BSQ1RMX0gKICNpbmNsdWRl IDxzeXMvcHJjdGwuaD4KKyNpbmNsdWRlIDxzeXMvY2FwYWJpbGl0eS5oPgogI2VuZGlmCiAK KwogdW5peGRfY29uZmlnX3JlYyB1bml4ZF9jb25maWc7CiAKIC8qIFNldCBncm91cCBwcml2 aWxlZ2VzLgpAQCAtNjAsNiArNjIsMzYgQEAKICAqIHdpdGggZGlmZmVyZW50IHNldHMgb2Yg Z3JvdXBzIGZvciBlYWNoLgogICovCiAKK3ZvaWQKK2tlZXBfY2FwYWJpbGl0aWVzKHZvaWQp Cit7CisgICAgaWYgKHByY3RsKFBSX1NFVF9LRUVQQ0FQUywgMSwgMCwgMCwgMCkgIT0gMCkg eworCWFwX2xvZ19lcnJvcihBUExPR19NQVJLLCBBUExPR19FUlIsIGVycm5vLCBOVUxMLCAi cHJjdGwgRmFpbGVkIik7CisgICAgfQorfQorCitzdGF0aWMgdm9pZAorc2V0X2NhcGFiaWxp dGllcyhpbnQgY2FwYWJpbGl0eSkKK3sKKyAgICBjYXBfdXNlcl9oZWFkZXJfdCBoZWFkID0g KGNhcF91c2VyX2hlYWRlcl90KSBjYWxsb2MoMSwgc2l6ZW9mKCpoZWFkKSk7CisgICAgY2Fw X3VzZXJfZGF0YV90IGNhcCA9IChjYXBfdXNlcl9kYXRhX3QpIGNhbGxvYygxLCBzaXplb2Yo KmNhcCkpOworCisgICAgaGVhZC0+dmVyc2lvbiA9IF9MSU5VWF9DQVBBQklMSVRZX1ZFUlNJ T047CisgICAgaGVhZC0+cGlkID0gMDsKKyAgICBjYXAtPmVmZmVjdGl2ZSA9ICgxIDw8IGNh cGFiaWxpdHkpOworICAgIGNhcC0+aW5oZXJpdGFibGUgPSBjYXAtPmVmZmVjdGl2ZTsKKyAg ICBjYXAtPnBlcm1pdHRlZCA9IGNhcC0+ZWZmZWN0aXZlOworCisgICAgaWYgKGNhcHNldCho ZWFkLCBjYXApICE9IDApIHsKKwlhcF9sb2dfZXJyb3IoQVBMT0dfTUFSSywgQVBMT0dfRVJS LCBlcnJubywgTlVMTCwgImNhcHNldCBGYWlsZWQiKTsKKyAgICB9CisKKyAgICBmcmVlKGhl YWQpOworICAgIGZyZWUoY2FwKTsKK30KKworCisKIHN0YXRpYyBpbnQgc2V0X2dyb3VwX3By aXZzKHZvaWQpCiB7CiAgICAgaWYgKCFnZXRldWlkKCkpIHsKQEAgLTExNyw2ICsxNDksNyBA QAogICAgIGlmIChzZXRfZ3JvdXBfcHJpdnMoKSkgewogICAgICAgICByZXR1cm4gLTE7CiAg ICAgfQorICAgIGtlZXBfY2FwYWJpbGl0aWVzKCk7CiAjaWZkZWYgTVBFCiAgICAgLyogT25s eSB0cnkgdG8gc3dpdGNoIGlmIHdlJ3JlIHJ1bm5pbmcgYXMgTUFOQUdFUi5TWVMgKi8KICAg ICBpZiAoZ2V0ZXVpZCgpID09IDEgJiYgdW5peGRfY29uZmlnLnVzZXJfaWQgPiAxKSB7CkBA IC0xNDIsNiArMTc1LDEwIEBACiAgICAgICAgICAgICAgICAgICAgIChsb25nKSB1bml4ZF9j b25maWcudXNlcl9pZCk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CisKKyAgICAvKiBO ZWVkZWQgZm9yIHRwcm94eSAqLworICAgIHNldF9jYXBhYmlsaXRpZXMoQ0FQX05FVF9BRE1J Tik7CisKICNpZiBkZWZpbmVkKEhBVkVfUFJDVEwpICYmIGRlZmluZWQoUFJfU0VUX0RVTVBB QkxFKQogICAgIC8qIHRoaXMgYXBwbGllcyB0byBMaW51eCAyLjQrICovCiAjaWZkZWYgQVBf TVBNX1dBTlRfU0VUX0NPUkVEVU1QRElSCkBAIC00NjEsNyArNDk4LDYgQEAKICNpZmRlZiBf T1NEX1BPU0lYCiAgICAgaW50IHNvY2tkZXM7CiAjZW5kaWYKLQogICAgICphY2NlcHRlZCA9 IE5VTEw7CiAgICAgc3RhdHVzID0gYXByX3NvY2tldF9hY2NlcHQoJmNzZCwgbHItPnNkLCBw dHJhbnMpOwogICAgIGlmIChzdGF0dXMgPT0gQVBSX1NVQ0NFU1MpIHsKZGlmZiAtdU5yIGh0 dHBkLTIuMi45L3NyY2xpYi9hcHIvaW5jbHVkZS9hcHJfbmV0d29ya19pby5oIGh0dHBkLTIu Mi45LXRwcm94eS12MS9zcmNsaWIvYXByL2luY2x1ZGUvYXByX25ldHdvcmtfaW8uaAotLS0g aHR0cGQtMi4yLjkvc3JjbGliL2Fwci9pbmNsdWRlL2Fwcl9uZXR3b3JrX2lvLmgJMjAwNy0x Mi0xNSAxMzoxMDozOC4wMDAwMDAwMDAgKzA5MDAKKysrIGh0dHBkLTIuMi45LXRwcm94eS12 MS9zcmNsaWIvYXByL2luY2x1ZGUvYXByX25ldHdvcmtfaW8uaAkyMDA5LTEyLTAyIDExOjI2 OjMwLjAwMDAwMDAwMCArMDkwMApAQCAtNjUsNiArNjUsNyBAQAogI2RlZmluZSBBUFJfU09f REVCVUcgICAgICAgICA0ICAgIC8qKjwgRGVidWcgKi8KICNkZWZpbmUgQVBSX1NPX05PTkJM T0NLICAgICAgOCAgICAvKio8IE5vbi1ibG9ja2luZyBJTyAqLwogI2RlZmluZSBBUFJfU09f UkVVU0VBRERSICAgICAxNiAgIC8qKjwgUmV1c2UgYWRkcmVzc2VzICovCisjZGVmaW5lIEFQ Ul9JUF9UUkFOU1BBUkVOVCAgIDMyICAgLyoqPCBUUHJveHkgc3VwcG9ydCAqLwogI2RlZmlu ZSBBUFJfU09fU05EQlVGICAgICAgICA2NCAgIC8qKjwgU2VuZCBidWZmZXIgKi8KICNkZWZp bmUgQVBSX1NPX1JDVkJVRiAgICAgICAgMTI4ICAvKio8IFJlY2VpdmUgYnVmZmVyICovCiAj ZGVmaW5lIEFQUl9TT19ESVNDT05ORUNURUQgIDI1NiAgLyoqPCBEaXNjb25uZWN0ZWQgKi8K ZGlmZiAtdU5yIGh0dHBkLTIuMi45L3NyY2xpYi9hcHIvbmV0d29ya19pby91bml4L3NvY2tl dHMuYyBodHRwZC0yLjIuOS10cHJveHktdjEvc3JjbGliL2Fwci9uZXR3b3JrX2lvL3VuaXgv c29ja2V0cy5jCi0tLSBodHRwZC0yLjIuOS9zcmNsaWIvYXByL25ldHdvcmtfaW8vdW5peC9z b2NrZXRzLmMJMjAwOS0xMi0wMiAxNDoxODo0NS4wMDAwMDAwMDAgKzA5MDAKKysrIGh0dHBk LTIuMi45LXRwcm94eS12MS9zcmNsaWIvYXByL25ldHdvcmtfaW8vdW5peC9zb2NrZXRzLmMJ MjAwOS0xMi0wMiAxMToyNjozMC4wMDAwMDAwMDAgKzA5MDAKQEAgLTE1MSw2ICsxNTEsOSBA QAogCiBhcHJfc3RhdHVzX3QgYXByX3NvY2tldF9iaW5kKGFwcl9zb2NrZXRfdCAqc29jaywg YXByX3NvY2thZGRyX3QgKnNhKQogeworICAgIGludCB2YWwgPSAxOworCisgICAgc2V0c29j a29wdCAoc29jay0+c29ja2V0ZGVzLCBTT0xfSVAsIDE5LCAmdmFsLCBzaXplb2YgKHZhbCkp OwogICAgIGlmIChiaW5kKHNvY2stPnNvY2tldGRlcywgCiAgICAgICAgICAgICAgKHN0cnVj dCBzb2NrYWRkciAqKSZzYS0+c2EsIHNhLT5zYWxlbikgPT0gLTEpIHsKICAgICAgICAgcmV0 dXJuIGVycm5vOwogICAgIH0KZGlmZiAtdU5yIGh0dHBkLTIuMi45L3NyY2xpYi9hcHIvbmV0 d29ya19pby91bml4L3NvY2tvcHQuYyBodHRwZC0yLjIuOS10cHJveHktdjEvc3JjbGliL2Fw ci9uZXR3b3JrX2lvL3VuaXgvc29ja29wdC5jCi0tLSBodHRwZC0yLjIuOS9zcmNsaWIvYXBy L25ldHdvcmtfaW8vdW5peC9zb2Nrb3B0LmMJMjAwNi0wOC0wMyAxOTo1NTozMS4wMDAwMDAw MDAgKzA5MDAKKysrIGh0dHBkLTIuMi45LXRwcm94eS12MS9zcmNsaWIvYXByL25ldHdvcmtf aW8vdW5peC9zb2Nrb3B0LmMJMjAwOS0xMi0wMiAxMToyNjozMC4wMDAwMDAwMDAgKzA5MDAK QEAgLTE3LDYgKzE3LDcgQEAKICNpbmNsdWRlICJhcHJfYXJjaF9uZXR3b3JraW8uaCIKICNp bmNsdWRlICJhcHJfc3RyaW5ncy5oIgogCisjZGVmaW5lIElQX1RSQU5TUEFSRU5UIDE5CiAK IHN0YXRpYyBhcHJfc3RhdHVzX3Qgc29ibG9jayhpbnQgc2QpCiB7CkBAIC0zMTgsNiArMzE5 LDE1IEBACiAgICAgICAgIHJldHVybiBBUFJfRU5PVElNUEw7CiAjZW5kaWYKICAgICAgICAg YnJlYWs7CisgICAgY2FzZSBBUFJfSVBfVFJBTlNQQVJFTlQ6CisjaWZkZWYgSVBfVFJBTlNQ QVJFTlQKKwlpZiAoc2V0c29ja29wdChzb2NrLT5zb2NrZXRkZXMsIFNPTF9JUCwgSVBfVFJB TlNQQVJFTlQsICh2b2lkICopJm9uZSwgc2l6ZW9mKGludCkpID09IC0xKSB7CisJICAgIHJl dHVybiBlcnJubzsKKwl9CisjZWxzZQorCXJldHVybiBBUFJfRU5PVElNUEw7CisjZW5kaWYK KwlicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gQVBSX0VJTlZBTDsKICAg ICB9Cg== --------------010106040702030802020000--