This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Long-standing problem in Socket module
authorSpider Boardman <spider@orb.nashua.nh.us>
Thu, 19 Dec 1996 04:18:14 +0000 (23:18 -0500)
committerChip Salzenberg <chip@atlantic.net>
Thu, 19 Dec 1996 23:14:00 +0000 (11:14 +1200)
commit3e6a22d2723daf415793f9a4fc1b57f4d8a576fd
treecc4df498f2fd6fdcbc20ff97c72a98c130030f3c
parent982b4e8fc47473059e209787b589853f4c8f8f9e
Long-standing problem in Socket module

The Socket module provides an inet_aton() which isn't.  It's only
inet_addr().  The latter can't convert '255.255.255.255' (or
various equivalents).  This despite the fact that Socket.pm
claims that a conversion of that address is meaningful, which it
would be if we were using the real inet_aton().

Also, that address is properly the 'this-LAN' broadcast address,
also known as INADDR_BROADCAST.  That constant is missing from
Socket.xs, even though it provides the bogus INADDR_NONE, which
is merely an artifact of using inet_addr().  The all-ones
broadcast address is one of the few IP addresses which the spec
guarantees will be valid.  It's invalid for TCP, since it's a
broadcast address, but it's valid for ICMP and UDP.

The patch below changes Socket.xs to use a proper inet_aton()
conversion and adds the missing major INADDR constant of
INADDR_BROADCAST.  It includes (as the last item patched) the new
metaconfig unit used to make the changes to Configure,
config_h.SH, and Porting/Glossary.

p5p-msgid: <199612190418.XAA07291@Orb.Nashua.NH.US>
Configure
Porting/Glossary
U/d_inetaton.U [new file with mode: 0644]
config_h.SH
ext/Socket/Socket.pm
ext/Socket/Socket.xs