From zanfur@u.washington.edu Mon May 28 21:37:39 2001 Received: from jason02.u.washington.edu (root@jason02.u.washington.edu [140.142.8.52]) by lists.u.washington.edu (8.11.2+UW01.01/8.11.2+UW01.04) with ESMTP id f4T4bc056996 for ; Mon, 28 May 2001 21:37:38 -0700 Received: from dante42.u.washington.edu (zanfur@dante42.u.washington.edu [140.142.15.202]) by jason02.u.washington.edu (8.11.2+UW01.01/8.11.2+UW01.04) with ESMTP id f4T4bZ046888; Mon, 28 May 2001 21:37:35 -0700 Received: from localhost (zanfur@localhost) by dante42.u.washington.edu (8.11.2+UW01.01/8.11.2+UW01.04) with ESMTP id f4T4bYY07614; Mon, 28 May 2001 21:37:34 -0700 Date: Mon, 28 May 2001 21:37:34 -0700 (PDT) From: "'Robin' R. Battey" To: , , Subject: iptables SysV init script Message-ID: MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="-1936846902-81304865-991111054=:127556" 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. ---1936846902-81304865-991111054=:127556 Content-Type: TEXT/PLAIN; charset=US-ASCII Hey all: I've just finished heavily modifying the RedHat 7.1 iptables init script. The reason I've done this is because I was disgusted that I could not find a nice, automated way of inserting the netfilter extension modules (like ip_conntrack_ftp) without doing something terribly hackish like putting insmod's in the rc.local file. That in mind, I made a few improvements to the script. I broke the start, panic, and stop methods into their constituent parts, moved the status display into it's own function, added the load_extensions and unload_extensions functions, and plugged a race condition in the restart/start logic. I also extended the save functionality to take a snapshot if the currently loaded netfilter modules, so that you wouldn't have to enter them into the config file by hand, and I extended the start functionality to reload those saved modules (and get rid of all the other extensions). Here's how it works: instead of having a single config file called /etc/sysconfig/iptables, there are now two config files (I separated them into two due to the exclusive nature of the iptables-restore script). One is called "rules", and the other is called "extensions", and they both reside in the /etc/sysconfig/iptables directory. They're just variables set at the top of the file, so feel free to move them to wherever suits your needs (I considered /etc/iptables, but that wouldn't be consistent with the rest of the init scripts). The "rules" file contains the output of iptables-save (because "iptables-restore -c" doesn't work yet, as of version 1.2.2). The "extensions" file is a list of all of the netfilter extensions to be loaded. The extension names are the same as the module names minus the "ip_" prefix. (All modules prefixed with "ipt_" are targets or matches, and get loaded automatically by iptables on demand; and all modules prefixed with "iptable_" are tables, and are also loaded by iptables automatically on demand.) An example "extensions" file could look like this: conntrack conntrack_irc conntrack_ftp nat_irc nat_ftp This would load the modules ip_conntrack (which allows you to use the "state" match), ip_conntrack_ftp (which marks incoming transfers as state "RELATED"), ip_conntrack_irc (which marks DCC send connections as state "RELATED"), ip_nat_ftp (which allows active ftp to work through NAT), and ip_nat_irc (which does the same thing for DCC sends on irc). I use modprobe to load the modules, so some lines are redundant, but that's ok. It also means that you don't have to worry about the order. You can also have conntrack be last on the list. For this script to work for you, you need netfilter version 1.2.1 or later. The iptables-save and iptables-restore commands weren't functional in version 1.2.0. I hope someone else finds this useful. Cheers! -robin P.S. comments/suggestions/flames welcome. -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ " R o b i n " R . B a t t e y PGP Key -- http://www.cs.washington.edu/homes/zanfur/pgpkey.pub 25B1 1CA6 590D 655C 2F91 73F8 1099 BFE6 09A0 0BD6 ---1936846902-81304865-991111054=:127556 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="iptables.init" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename="iptables.init" IyEvYmluL3NoDQojDQojIFN0YXJ0dXAgc2NyaXB0IHRvIGltcGxlbWVudCAv ZXRjL3N5c2NvbmZpZy9pcHRhYmxlcyBwcmUtZGVmaW5lZCBydWxlcy4NCiMN CiMgY2hrY29uZmlnOiAyMzQ1IDA4IDkyDQojDQojIGRlc2NyaXB0aW9uOiBB dXRvbWF0ZXMgYSBwYWNrZXQgZmlsdGVyaW5nIGZpcmV3YWxsIHdpdGggaXB0 YWJsZXMuDQojDQojIGJ5IGJlcm9AcmVkaGF0LmNvbSwgYmFzZWQgb24gdGhl IGlwY2hhaW5zIHNjcmlwdDoNCiMgU2NyaXB0IEF1dGhvcjoJSm9zaHVhIEpl bnNlbiA8am9zaHVhQHJlZGhhdC5jb20+DQojICAgLS0gaGFja2VkIHVwIGJ5 IGdhZnRvbiB3aXRoIGhlbHAgZnJvbSBub3R0aW5nDQojIG1vZGlmaWVkIGJ5 IEFudG9uIEFsdGFwYXJtYWtvdiA8YWlhMjFAY2FtLmFjLnVrPjoNCiMgbW9k aWZpZWQgYnkgTmlscyBQaGlsaXBwc2VuIDxuaWxzQHJlZGhhdC5kZT4NCiMN CiMgY29uZmlnOiAvZXRjL3N5c2NvbmZpZy9pcHRhYmxlcw0KDQojIFNvdXJj ZSAnZW0gdXANCi4gL2V0Yy9yYy5kL2luaXQuZC9mdW5jdGlvbnMNCg0KIyBt YWtlIHN1cmUgaXB0YWJsZXMgaXMgaW4gdGhlIHBhdGgNClBBVEg9JFBBVEg6 L3Vzci9sb2NhbC9zYmluOi91c3IvbG9jYWwvc2Jpbg0KDQpJUFRBQkxFU19D T05GSUc9L2V0Yy9zeXNjb25maWcvaXB0YWJsZXMvcnVsZXMNCklQVEFCTEVT X0VYVEVOU0lPTlM9L2V0Yy9zeXNjb25maWcvaXB0YWJsZXMvZXh0ZW5zaW9u cw0KDQpLRVJORUxNQUo9YHVuYW1lIC1yIHwgc2VkICAgICAgICAgICAgICAg ICAgIC1lICdzLFwuLiosLCdgDQpLRVJORUxNSU49YHVuYW1lIC1yIHwgc2Vk IC1lICdzLFteXC5dKlwuLCwnIC1lICdzLFwuLiosLCdgDQoNCmlmIFsgIiRL RVJORUxNQUoiIC1sdCAyIF0gOyB0aGVuDQoJZXhpdCAyDQpmaQ0KaWYgWyAi JEtFUk5FTE1BSiIgLWVxIDIgLWEgIiRLRVJORUxNSU4iIC1sdCAzIF0gOyB0 aGVuDQoJZXhpdCAzDQpmaQ0KDQppZiAgL3NiaW4vbHNtb2QgMj4vZGV2L251 bGwgfGdyZXAgLXEgaXBjaGFpbnMgOyB0aGVuDQoJIyBEb24ndCBkbyBib3Ro DQoJZXhpdCA0DQpmaQ0KDQoNCmxvYWRfZXh0ZW5zaW9ucygpIHsNCg0KCSMg bG9hZCBhbGwgZXh0ZW5zaW9ucyAodGFibGVzL3RhcmdldHMvbWF0Y2hlcyBh cmUgYXV0b21hdGljYWxseSBsb2FkZWQpDQoJIyBkb24ndCBkbyBzcXVhdCB3 aXRob3V0IHRoZSBleHRlbnNpb25zIGNvbmZpZyBmaWxlDQoJaWYgWyAtZiAk SVBUQUJMRVNfRVhURU5TSU9OUyBdOyB0aGVuDQoJICAgIGVjaG8gLW4gIkxv YWRpbmcgTmV0RmlsdGVyIGV4dGVuc2lvbnM6Ig0KDQoJICAgICMgbG9hZCBh bGwgc3BlY2lmaWVkIGV4dGVuc2lvbnMNCgkgICAgZm9yIGV4dGVuc2lvbiBp biBgY2F0ICRJUFRBQkxFU19FWFRFTlNJT05TYDsgZG8gXA0KCQltb2Rwcm9i ZSAtcSBpcF8kZXh0ZW5zaW9uOyBcDQoJICAgIGRvbmUgDQoJICAgIHN1Y2Nl c3MgIkxvYWRpbmcgTmV0RmlsdGVyIGV4dGVuc2lvbnM6Ig0KCSAgICBlY2hv DQoJZmkNCn0NCg0KdW5sb2FkX2V4dGVuc2lvbnMoKSB7DQogICAgICAgICMg dW5sb2FkIGFsbCB1bnVzZWQgZXh0ZW5zaW9ucy90YXJnZXRzL21hdGNoZXMg KGhvcGVmdWxseSBhbGwgb2YgdGhlbSkNCg0KCWVjaG8gLW4gIlVubG9hZGlu ZyBhbGwgdW51c2VkIE5ldEZpbHRlciBleHRlbnNpb25zOiINCg0KCSMgdGFy Z2V0cy9tYXRjaGVzDQogICAgICAgIGZvciBtb2R1bGUgaW4gYC9zYmluL2xz bW9kIHwgZ3JlcCBeaXB0X2A7IGRvDQogICAgICAgICAgICBtb2Rwcm9iZSAt cSAtciAkbW9kdWxlDQogICAgICAgIGRvbmUNCg0KCSMgZXh0ZW5zaW9ucw0K CWZvciBtb2R1bGUgaW4gYC9zYmluL2xzbW9kIHwgZ3JlcCBeaXBfIHwgZ3Jl cCAtdiBeaXBfdGFibGVzYDsgZG8NCiAgICAgICAgICAgIG1vZHByb2JlIC1x IC1yICRtb2R1bGUNCiAgICAgICAgZG9uZQ0KDQoJc3VjY2VzcyAiVW5sb2Fk aW5nIGFsbCB1bnVzZWQgTmV0RmlsdGVyIGV4dGVuc2lvbnM6Ig0KCWVjaG8N Cn0NCg0KZmx1c2hfY2hhaW5zKCkgew0KICAgICAgICBhY3Rpb24gIkNsZWFy aW5nIGFsbCBjdXJyZW50IHJ1bGVzIGFuZCB1c2VyIGRlZmluZWQgY2hhaW5z OiIgaXB0YWJsZXMgLVgNCiAgICAgICAgY2hhaW5zPWBjYXQgL3Byb2MvbmV0 L2lwX3RhYmxlc19uYW1lcyAyPi9kZXYvbnVsbGANCg0KICAgICAgICBlY2hv IC1uICJGbHVzaGluZyBhbGwgY3VycmVudCBydWxlcyBhbmQgdXNlciBkZWZp bmVkIGNoYWluczoiDQogICAgICAgIGZvciBpIGluICRjaGFpbnM7IGRvIGlw dGFibGVzIC10ICRpIC1GOyBkb25lICYmIFwNCiAgICAgICAgICAgIHN1Y2Nl c3MgIkZsdXNoaW5nIGFsbCBjdXJyZW50IHJ1bGVzIGFuZCB1c2VyIGRlZmlu ZWQgY2hhaW5zOiIgfHwgXA0KICAgICAgICAgICAgZmFpbHVyZSAiRmx1c2hp bmcgYWxsIGN1cnJlbnQgcnVsZXMgYW5kIHVzZXIgZGVmaW5lZCBjaGFpbnM6 Ig0KCWVjaG8NCg0KCWVjaG8gLW4gIkNsZWFyaW5nIGFsbCBjdXJyZW50IHJ1 bGVzIGFuZCB1c2VyIGRlZmluZWQgY2hhaW5zOiINCiAgICAgICAgZm9yIGkg aW4gJGNoYWluczsgZG8gaXB0YWJsZXMgLXQgJGkgLVg7IGRvbmUgJiYgXA0K ICAgICAgICAgICAgc3VjY2VzcyAiQ2xlYXJpbmcgYWxsIGN1cnJlbnQgcnVs ZXMgYW5kIHVzZXIgZGVmaW5lZCBjaGFpbnM6IiB8fCBcDQogICAgICAgICAg ICBmYWlsdXJlICJDbGVhcmluZyBhbGwgY3VycmVudCBydWxlcyBhbmQgdXNl ciBkZWZpbmVkIGNoYWluczoiDQoJZWNobw0KDQoJZWNobyAtbiAiUmVzZXR0 aW5nIGFsbCBjaGFpbiBjb3VudGVycyB0byB6ZXJvOiINCiAgICAgICAgZm9y IGkgaW4gJGNoYWluczsgZG8gaXB0YWJsZXMgLXQgJGkgLVo7IGRvbmUgJiYg XA0KCSAgICBzdWNjZXNzICJSZXNldHRpbmcgYWxsIGNoYWluIGNvdW50ZXJz IHRvIHplcm86IiB8fCBcDQoJICAgIGZhaWx1cmUgIlJlc2V0dGluZyBhbGwg Y2hhaW4gY291bnRlcnMgdG8gemVybzoiDQoJZWNobw0KfQ0KDQpyZXN0b3Jl X2NoYWlucygpIHsNCgllY2hvIC1uICJBcHBseWluZyBpcHRhYmxlcyBmaXJl d2FsbCBydWxlczogIg0KCWNhdCAkSVBUQUJMRVNfQ09ORklHIHwgaXB0YWJs ZXMtcmVzdG9yZSAmJiBcDQoJICAgIHN1Y2Nlc3MgIkFwcGx5aW5nIGlwdGFi bGVzIGZpcmV3YWxsIHJ1bGVzOiIgfHwgXA0KCSAgICBmYWlsdXJlICJBcHBs eWluZyBpcHRhYmxlcyBmaXJld2FsbCBydWxlczoiDQoJZWNobw0KfQ0KDQpy ZXNldF9wb2xpY2llcygpIHsNCiAgICAgICAgZWNobyAtbiAiUmVzZXR0aW5n IGJ1aWx0LWluIGNoYWlucyB0byB0aGUgZGVmYXVsdCBBQ0NFUFQgcG9saWN5 OiINCiAgICAgICAgaXB0YWJsZXMgLVAgSU5QVVQgQUNDRVBUICYmIFwNCiAg ICAgICAgICAgIGlwdGFibGVzIC1QIE9VVFBVVCBBQ0NFUFQgJiYgXA0KICAg ICAgICAgICAgaXB0YWJsZXMgLVAgRk9SV0FSRCBBQ0NFUFQgJiYgXA0KICAg ICAgICAgICAgaXB0YWJsZXMgLXQgbmF0IC1QIFBSRVJPVVRJTkcgQUNDRVBU ICYmIFwNCiAgICAgICAgICAgIGlwdGFibGVzIC10IG5hdCAtUCBQT1NUUk9V VElORyBBQ0NFUFQgJiYgXA0KICAgICAgICAgICAgaXB0YWJsZXMgLXQgbmF0 IC1QIE9VVFBVVCBBQ0NFUFQgJiYgXA0KICAgICAgICAgICAgaXB0YWJsZXMg LXQgbWFuZ2xlIC1QIFBSRVJPVVRJTkcgQUNDRVBUICYmIFwNCiAgICAgICAg ICAgIGlwdGFibGVzIC10IG1hbmdsZSAtUCBPVVRQVVQgQUNDRVBUICYmIFwN CiAgICAgICAgICAgIGlwdGFibGVzIC10IGRyb3AgLVAgRFJPUFBJTkcgQUND RVBUICYmIFwNCiAgICAgICAgICAgIHN1Y2Nlc3MgIlJlc2V0dGluZyBidWls dC1pbiBjaGFpbnMgdG8gdGhlIGRlZmF1bHQgQUNDRVBUIHBvbGljeSIgfHwg XA0KICAgICAgICAgICAgZmFpbHVyZSAiUmVzZXR0aW5nIGJ1aWx0LWluIGNo YWlucyB0byB0aGUgZGVmYXVsdCBBQ0NFUFQgcG9saWN5Ig0KICAgICAgICBl Y2hvDQp9DQoNCg0KbG9ja19wb2xpY2llcygpIHsNCiAgICAgICAgZWNobyAt biAiQ2hhbmdpbmcgZGVmYXVsdCBwb2xpY2llcyB0byBEUk9QOiINCiAgICAg ICAgaXB0YWJsZXMgLVAgSU5QVVQgRFJPUCAmJiBcDQogICAgICAgICAgICBp cHRhYmxlcyAtUCBPVVRQVVQgRFJPUCAmJiBcDQogICAgICAgICAgICBpcHRh YmxlcyAtUCBGT1JXQVJEIERST1AgJiYgXA0KICAgICAgICAgICAgaXB0YWJs ZXMgLXQgbmF0IC1QIFBSRVJPVVRJTkcgRFJPUCAmJiBcDQogICAgICAgICAg ICBpcHRhYmxlcyAtdCBuYXQgLVAgUE9TVFJPVVRJTkcgRFJPUCAmJiBcDQog ICAgICAgICAgICBpcHRhYmxlcyAtdCBuYXQgLVAgT1VUUFVUIERST1AgJiYg XA0KICAgICAgICAgICAgaXB0YWJsZXMgLXQgbWFuZ2xlIC1QIFBSRVJPVVRJ TkcgRFJPUCAmJiBcDQogICAgICAgICAgICBpcHRhYmxlcyAtdCBtYW5nbGUg LVAgT1VUUFVUIERST1AgJiYgXA0KICAgICAgICAgICAgaXB0YWJsZXMgLXQg ZHJvcCAtUCBEUk9QUElORyBEUk9QICYmIFwNCiAgICAgICAgICAgIHN1Y2Nl c3MgIkNoYW5naW5nIGRlZmF1bHQgcG9saWNpZXMgdG8gRFJPUCIgfHwgXA0K ICAgICAgICAgICAgZmFpbHVyZSAiQ2hhbmdpbmcgZGVmYXVsdCBwb2xpY2ll cyB0byBEUk9QIg0KICAgICAgICBlY2hvDQp9DQoNCg0Kc2F2ZV9jaGFpbnMo KSB7DQogICAgICAgIGVjaG8gLW4gIlNhdmluZyBjdXJyZW50IHJ1bGVzIHRv ICRJUFRBQkxFU19DT05GSUc6ICINCiAgICAgICAgdG91Y2ggJElQVEFCTEVT X0NPTkZJRw0KICAgICAgICBjaG1vZCA2MDAgJElQVEFCTEVTX0NPTkZJRw0K ICAgICAgICBpcHRhYmxlcy1zYXZlID4gJElQVEFCTEVTX0NPTkZJRyAgMj4v ZGV2L251bGwgJiYgXA0KICAgICAgICAgIHN1Y2Nlc3MgIlNhdmluZyBjdXJy ZW50IHJ1bGVzIHRvICRJUFRBQkxFU19DT05GSUciIHx8IFwNCiAgICAgICAg ICBmYWlsdXJlICJTYXZpbmcgY3VycmVudCBydWxlcyB0byAkSVBUQUJMRVNf Q09ORklHIg0KICAgICAgICBlY2hvDQp9DQoNCnNhdmVfZXh0ZW5zaW9ucygp IHsNCiAgICAgICAgZWNobyAtbiAiU2F2aW5nIGN1cnJlbnQgZXh0ZW5zaW9u cyB0byAkSVBUQUJMRVNfRVhURU5TSU9OUzogIg0KICAgICAgICB0b3VjaCAk SVBUQUJMRVNfRVhURU5TSU9OUw0KICAgICAgICBjaG1vZCA2MDAgJElQVEFC TEVTX0NPTkZJRw0KICAgICAgICBsc21vZCB8IGdyZXAgXmlwXyB8IGdyZXAg LXYgaXBfdGFibGVzIHwgYXdrICd7IHByaW50ICQxIH0nIHwgXA0KICAgICAg ICAgICAgcGVybCAtZSAnd2hpbGUgKDw+KSB7IHMvXmlwXy8vOyBwcmludDsg fScgPiAkSVBUQUJMRVNfRVhURU5TSU9OUyAmJiBcDQogICAgICAgICAgc3Vj Y2VzcyAiU2F2aW5nIGN1cnJlbnQgZXh0ZW5zaW9ucyB0byAkSVBUQUJMRVNf RVhURU5TSU9OUzogIiB8fCBcDQogICAgICAgICAgZmFpbHVyZSAiU2F2aW5n IGN1cnJlbnQgZXh0ZW5zaW9ucyB0byAkSVBUQUJMRVNfRVhURU5TSU9OUzog Ig0KICAgICAgICBlY2hvDQp9DQoNCmRpc3BsYXlfc3RhdHVzKCkgew0KICAg ICAgICBlY2hvDQogICAgICAgIGVjaG8gIlRhYmxlOiBmaWx0ZXIiDQogICAg ICAgIGVjaG8NCiAgICAgICAgaXB0YWJsZXMgLXQgZmlsdGVyIC12TA0KICAg ICAgICBlY2hvDQogICAgICAgIGVjaG8gIlRhYmxlOiBuYXQiDQogICAgICAg IGVjaG8NCiAgICAgICAgaXB0YWJsZXMgLXQgbmF0IC12TA0KICAgICAgICBl Y2hvDQogICAgICAgIGVjaG8gIlRhYmxlOiBtYW5nbGUiDQogICAgICAgIGVj aG8NCiAgICAgICAgaXB0YWJsZXMgLXQgbWFuZ2xlIC12TA0KICAgICAgICBl Y2hvDQogICAgICAgIGVjaG8gIlRhYmxlOiBkcm9wIg0KICAgICAgICBlY2hv DQogICAgICAgIGlwdGFibGVzIC10IGRyb3AgLXZMDQogICAgICAgIGVjaG8N Cn0NCg0KY2FzZSAiJDEiIGluDQogIHN0YXJ0KQ0KICAgICAgICAjIGRvbid0 IGRvIHNxdWF0IGlmIHdlIGRvbid0IGhhdmUgdGhlIGNvbmZpZyBmaWxlDQog ICAgICAgIGlmIFsgLWYgJElQVEFCTEVTX0NPTkZJRyBdOyB0aGVuDQogICAg ICAgICAgICAjIGxvY2sgdGhlIGNoYWlucyBzbyB0aGVyZSBhcmUgbm8gcmFj ZSBjb25kaXRpb25zDQogICAgICAgICAgICBsb2NrX3BvbGljaWVzDQogICAg ICAgICAgICBmbHVzaF9jaGFpbnMNCiAgICAgICAgICAgIHVubG9hZF9leHRl bnNpb25zDQogICAgICAgICAgICBsb2FkX2V4dGVuc2lvbnMNCiAgICAgICAg ICAgIHJlc3RvcmVfY2hhaW5zDQogICAgICAgICAgICB0b3VjaCAvdmFyL2xv Y2svc3Vic3lzL2lwdGFibGVzDQoJZWxzZQ0KCSAgICBlY2hvICIkMDogY29u ZmlnIGZpbGUgbm90IGZvdW5kLCBhYm9ydGluZyINCglmaQ0KCTs7DQogIHN0 b3ApDQogICAgICAgICMgYWNjZXB0IGV2ZXJ5dGhpbmcNCiAgICAgICAgZmx1 c2hfY2hhaW5zDQogICAgICAgIHJlc2V0X3BvbGljaWVzDQogICAgICAgIHJt IC1mIC92YXIvbG9jay9zdWJzeXMvaXB0YWJsZXMNCgk7Ow0KDQogIHJlbG9h ZCkNCgkjICJyZXN0YXJ0IiBpcyByZWFsbHkganVzdCAic3RhcnQiIGFzIHRo aXMgaXNuJ3QgYSBkYWVtb24sDQoJIyAgYW5kICJzdGFydCIgY2xlYXJzIGFu eSBwcmUtZGVmaW5lZCBydWxlcyBhbnl3YXkuDQoJIyAgVGhpcyBpcyByZWFs bHkgb25seSBoZXJlIHRvIG1ha2UgdGhvc2Ugd2hvIGV4cGVjdCBpdCBoYXBw eQ0KCXN0YXJ0DQoJOzsNCg0KICBjb25kcmVzdGFydCkNCglbIC1lIC92YXIv bG9jay9zdWJzeXMvaXB0YWJsZXMgXSAmJiBzdGFydA0KCTs7DQoNCiAgc3Rh dHVzKQ0KCWRpc3BsYXlfc3RhdHVzDQoJOzsNCg0KICBwYW5pYykNCglsb2Nr X3BvbGljaWVzDQoJZmx1c2hfY2hhaW5zDQogICAgICAgIDs7DQoNCiAgc2F2 ZSkNCglzYXZlX2NoYWlucw0KCXNhdmVfZXh0ZW5zaW9ucw0KCTs7DQoNCiAg KikNCgllY2hvICQiVXNhZ2U6ICQwIHtzdGFydHxzdG9wfHJlbG9hZHxjb25k cmVzdGFydHxzdGF0dXN8cGFuaWN8c2F2ZX0iDQoJZXhpdCAxDQplc2FjDQoN CmV4aXQgMA0KDQo= ---1936846902-81304865-991111054=:127556-- .