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>