A noob playing with: Divert sockets, Linux and Perl.

Do you have a question? Post it now! No Registration Necessary.  Now with pictures!

Hi, I use Debian Etch. Since Divert sockets is not available on the
2.6.18-5-686 kernel, i compiled a kernel and iptables 1.3.1,
with the required divert socket patches and installed it.

I then used the C code from here (scroll to the bottom):
with the following iptables rule:
iptables -A INPUT -p ICMP -j DIVERT --div-port xxx
to test and see if divert sockets was working.
It worked great.

My problem is that the Perl Net::Divert module refused to work with
the sample code in perldoc Net::Divert. I'm sure it's not the iptables
rule modified for -p tcp that's causing the problem because I tested
with the C code.

The error i got in perl was:
Can't call method "autoflush" on an undefined value at /usr/local/
share/perl/5.8.8/Net/Divert.pm line 115.

So i checked the Divert.pm module and commented line 115 because
perldoc IO::Socket::INET says:
"As of VERSION 1.18 all IO::Socket objects have autoflush turned on
by default. This was not the case with earlier releases."

After the commenting out, my script runs without any errors but it
does absolutely nothing. It just sits...

Could someone suggest what I could do to resolve this problem? Seems
to me that the 'divert' parameter being passed in IO::Socket::INET is
being ignored??

Site Timeline