In Socket.xs, convert 3 croak()s to use %s and a constant string for the name.
[p5sagit/p5-mst-13.2.git] / ext / Socket / Socket.pm
index 78c41d2..d4042cd 100644 (file)
@@ -1,11 +1,11 @@
 package Socket;
 
 our($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS);
-$VERSION = "1.75";
+$VERSION = "1.87";
 
 =head1 NAME
 
-Socket, sockaddr_in, sockaddr_un, inet_aton, inet_ntoa - load the C socket.h defines and structure manipulators 
+Socket, sockaddr_in, sockaddr_un, inet_aton, inet_ntoa, inet_pton, inet_ntop - load the C socket.h defines and structure manipulators 
 
 =head1 SYNOPSIS
 
@@ -32,8 +32,8 @@ Socket, sockaddr_in, sockaddr_un, inet_aton, inet_ntoa - load the C socket.h def
 
     $proto = getprotobyname('tcp');
     socket(Socket_Handle, PF_UNIX, SOCK_STREAM, $proto);
-    unlink('/tmp/usock');
-    $sun = sockaddr_un('/tmp/usock');
+    unlink('/var/run/usock');
+    $sun = sockaddr_un('/var/run/usock');
     connect(Socket_Handle,$sun);
 
 =head1 DESCRIPTION
@@ -112,6 +112,15 @@ Note - does not return a number.
 Returns the 4-byte 'invalid' ip address.  Normally equivalent
 to inet_aton('255.255.255.255').
 
+=item sockaddr_family SOCKADDR
+
+Takes a sockaddr structure (as returned by pack_sockaddr_in(),
+pack_sockaddr_un() or the perl builtin functions getsockname() and
+getpeername()) and returns the address family tag.  It will match the
+constant AF_INET for a sockaddr_in and AF_UNIX for a sockaddr_un.  It
+can be used to figure out what unpacker to use for a sockaddr of
+unknown type.
+
 =item sockaddr_in PORT, ADDRESS
 
 =item sockaddr_in SOCKADDR_IN
@@ -162,6 +171,25 @@ Takes a sockaddr_un structure (as returned by pack_sockaddr_un())
 and returns the pathname.  Will croak if the structure does not
 have AF_UNIX in the right place.
 
+=item inet_pton ADDRESS_FAMILY, HOSTNAME
+
+Takes an address family, either AF_INET or AF_INET6, and a string giving
+the name of a host, and translates that to an opaque string
+(if programming in C, struct in_addr or struct in6_addr depending on the 
+address family passed in).  The host string may be a string hostname, such
+as 'www.perl.org', or an IP address.  If using an IP address, the type of
+IP address must be consistant with the address family passed into the function.
+
+This function is not exported by default.
+
+=item inet_ntop ADDRESS_FAMILY, IP_ADDRESS
+
+Takes an address family, either AF_INET or AF_INET6, and a string 
+(an opaque string as returned by inet_aton() or inet_pton()) and
+translates it to an IPv4 or IPv6 address string.
+
+This function is not exported by default.
+
 =back
 
 =cut
@@ -173,14 +201,18 @@ require Exporter;
 use XSLoader ();
 @ISA = qw(Exporter);
 @EXPORT = qw(
-       inet_aton inet_ntoa pack_sockaddr_in unpack_sockaddr_in
+       inet_aton inet_ntoa
+       sockaddr_family
+       pack_sockaddr_in unpack_sockaddr_in
        pack_sockaddr_un unpack_sockaddr_un
        sockaddr_in sockaddr_un
        INADDR_ANY INADDR_BROADCAST INADDR_LOOPBACK INADDR_NONE
        AF_802
+       AF_AAL
        AF_APPLETALK
        AF_CCITT
        AF_CHAOS
+       AF_CTF
        AF_DATAKIT
        AF_DECnet
        AF_DLI
@@ -189,7 +221,12 @@ use XSLoader ();
        AF_HYLINK
        AF_IMPLINK
        AF_INET
+       AF_INET6
+       AF_ISO
+       AF_KEY
+       AF_LAST
        AF_LAT
+       AF_LINK
        AF_MAX
        AF_NBS
        AF_NIT
@@ -197,12 +234,23 @@ use XSLoader ();
        AF_OSI
        AF_OSINET
        AF_PUP
+       AF_ROUTE
        AF_SNA
        AF_UNIX
        AF_UNSPEC
+       AF_USER
+       AF_WAN
        AF_X25
        IOV_MAX
+       IP_OPTIONS
+       IP_HDRINCL
+       IP_TOS
+       IP_TTL
+       IP_RECVOPTS
+       IP_RECVRETOPTS
+       IP_RETOPTS
        MSG_BCAST
+       MSG_BTAG
        MSG_CTLFLAGS
        MSG_CTLIGNORE
        MSG_CTRUNC
@@ -211,6 +259,7 @@ use XSLoader ();
        MSG_EOF
        MSG_EOR
        MSG_ERRQUEUE
+       MSG_ETAG
        MSG_FIN
        MSG_MAXIOVLEN
        MSG_MCAST
@@ -223,10 +272,13 @@ use XSLoader ();
        MSG_TRUNC
        MSG_URG
        MSG_WAITALL
+       MSG_WIRE
        PF_802
+       PF_AAL
        PF_APPLETALK
        PF_CCITT
        PF_CHAOS
+       PF_CTF
        PF_DATAKIT
        PF_DECnet
        PF_DLI
@@ -235,7 +287,12 @@ use XSLoader ();
        PF_HYLINK
        PF_IMPLINK
        PF_INET
+       PF_INET6
+       PF_ISO
+       PF_KEY
+       PF_LAST
        PF_LAT
+       PF_LINK
        PF_MAX
        PF_NBS
        PF_NIT
@@ -243,9 +300,12 @@ use XSLoader ();
        PF_OSI
        PF_OSINET
        PF_PUP
+       PF_ROUTE
        PF_SNA
        PF_UNIX
        PF_UNSPEC
+       PF_USER
+       PF_WAN
        PF_X25
        SCM_CONNECT
        SCM_CREDENTIALS
@@ -263,30 +323,56 @@ use XSLoader ();
        SOL_SOCKET
        SOMAXCONN
        SO_ACCEPTCONN
+       SO_ATTACH_FILTER
+       SO_BACKLOG
        SO_BROADCAST
+       SO_CHAMELEON
        SO_DEBUG
+       SO_DETACH_FILTER
+       SO_DGRAM_ERRIND
        SO_DONTLINGER
        SO_DONTROUTE
        SO_ERROR
+       SO_FAMILY
        SO_KEEPALIVE
        SO_LINGER
        SO_OOBINLINE
+       SO_PASSCRED
+       SO_PASSIFNAME
+       SO_PEERCRED
+       SO_PROTOCOL
+       SO_PROTOTYPE
        SO_RCVBUF
        SO_RCVLOWAT
        SO_RCVTIMEO
        SO_REUSEADDR
        SO_REUSEPORT
+       SO_SECURITY_AUTHENTICATION
+       SO_SECURITY_ENCRYPTION_NETWORK
+       SO_SECURITY_ENCRYPTION_TRANSPORT
        SO_SNDBUF
        SO_SNDLOWAT
        SO_SNDTIMEO
+       SO_STATE
        SO_TYPE
        SO_USELOOPBACK
+       SO_XOPEN
+       SO_XSE
        UIO_MAXIOV
 );
 
 @EXPORT_OK = qw(CR LF CRLF $CR $LF $CRLF
 
+              inet_pton
+              inet_ntop
+
+              IPPROTO_IP
+              IPPROTO_IPV6
+              IPPROTO_RAW
+              IPPROTO_ICMP
               IPPROTO_TCP
+              IPPROTO_UDP
+
               TCP_KEEPALIVE
               TCP_MAXRT
               TCP_MAXSEG