4.2.3 on FreeBSD 4.6.2....  (--enable-cli,--enable-sockets,etc)

I've been taking a look at the socket_* functions in PHP, and
specifically using raw sockets.  I've started out with ICMP, and I can
form the ICMP header (more or less) and send it out with an
insufficient TTL; and as expected I get a ICMP 11 (Time Exceeded)
response from an enroute gateway.  However, when I set a proper TTL
(32, for example) I see the packet arrive at the remote host, however
it is apparently dropped.

So a couple things have come up:

-- I'm guessing that the socket_* functions, except socket_read() and
socket_write(), are not binary safe?

-- While it seems the STREAM and DGRAM sockets work as expected for the
most part, what about RAW sockets?  I find that the underlying
functions work fine to create the socket, etc, however I'm having a
hard time working with the binary data in PHP.  For instance, creating
the header and then reading it seems tortuous.  Any hints/remedies for
this?  I think sockets, and especially raw, could be very handy in PHP,
and would like to know how/if this functionality will be expanded (hey,
the world needs another traceroute/ping program right?).  I was on my
way to writing this in PHP, but have fell on hard times with binary
manipulation.

-- Another problem I've run into, and again concerning binary
manipulation, is forming the correct Internet Checksum (rfc1071).  I'm
not the handiest with bit tricks, but I tried to model the in_cksum()
function and just couldn't get very far.  Any ideas/tips on this?

A clean, but at the same time low-level/raw socket interface I think
would be extremely useful and I'd like to help in any way I can.

Thanks!

Hans






__________________________________________________
Do you Yahoo!?
New DSL Internet Access from SBC & Yahoo!
http://sbc.yahoo.com

-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to