Socket
view release on metacpan or search on metacpan
sin.sin_addr.s_addr = htonl(addr.s_addr);
# ifdef HAS_SOCKADDR_SA_LEN
sin.sin_len = sizeof(sin);
# endif
ST(0) = sv_2mortal(newSVpvn((char *)&sin, sizeof(sin)));
}
void
unpack_sockaddr_in(sin_sv)
SV * sin_sv
PPCODE:
{
STRLEN sockaddrlen;
struct sockaddr_in addr;
SV *ip_address_sv;
char * sin;
if (!SvOK(sin_sv))
croak("Undefined address for %s", "Socket::unpack_sockaddr_in");
sin = SvPVbyte(sin_sv,sockaddrlen);
if (sockaddrlen != sizeof(addr)) {
croak("Bad arg length for %s, length is %" UVuf ", should be %" UVuf,
#else
PERL_UNUSED_VAR(port_sv);
PERL_UNUSED_VAR(sin6_addr);
ST(0) = not_here("pack_sockaddr_in6");
#endif
}
void
unpack_sockaddr_in6(sin6_sv)
SV * sin6_sv
PPCODE:
{
#ifdef HAS_SOCKADDR_IN6
STRLEN addrlen;
struct sockaddr_in6 sin6;
char * addrbytes;
SV *ip_address_sv;
if (!SvOK(sin6_sv))
croak("Undefined address for %s", "Socket::unpack_sockaddr_in6");
addrbytes = SvPVbyte(sin6_sv, addrlen);
if (addrlen != sizeof(sin6))
ST(0) = sv_2mortal(newSVpvn((char *)&mreq, sizeof(mreq)));
#else
not_here("pack_ip_mreq");
#endif
}
void
unpack_ip_mreq(mreq_sv)
SV * mreq_sv
PPCODE:
{
#ifdef HAS_IP_MREQ
struct ip_mreq mreq;
STRLEN mreqlen;
char * mreqbytes = SvPVbyte(mreq_sv, mreqlen);
if (mreqlen != sizeof(mreq))
croak("Bad arg length for %s, length is %" UVuf ", should be %" UVuf,
"Socket::unpack_ip_mreq", (UV)mreqlen, (UV)sizeof(mreq));
Copy(mreqbytes, &mreq, sizeof(mreq), char);
EXTEND(SP, 2);
#else
PERL_UNUSED_VAR(multiaddr);
PERL_UNUSED_VAR(source);
not_here("pack_ip_mreq_source");
#endif
}
void
unpack_ip_mreq_source(mreq_sv)
SV * mreq_sv
PPCODE:
{
#if defined(HAS_IP_MREQ_SOURCE) && defined (IP_ADD_SOURCE_MEMBERSHIP)
struct ip_mreq_source mreq;
STRLEN mreqlen;
char * mreqbytes = SvPVbyte(mreq_sv, mreqlen);
if (mreqlen != sizeof(mreq))
croak("Bad arg length for %s, length is %" UVuf ", should be %" UVuf,
"Socket::unpack_ip_mreq_source", (UV)mreqlen, (UV)sizeof(mreq));
Copy(mreqbytes, &mreq, sizeof(mreq), char);
EXTEND(SP, 3);
#else
PERL_UNUSED_VAR(multiaddr);
PERL_UNUSED_VAR(ifindex);
not_here("pack_ipv6_mreq");
#endif
}
void
unpack_ipv6_mreq(mreq_sv)
SV * mreq_sv
PPCODE:
{
#ifdef HAS_IPV6_MREQ
struct ipv6_mreq mreq;
STRLEN mreqlen;
char * mreqbytes = SvPVbyte(mreq_sv, mreqlen);
if (mreqlen != sizeof(mreq))
croak("Bad arg length for %s, length is %" UVuf ", should be %" UVuf,
"Socket::unpack_ipv6_mreq", (UV)mreqlen, (UV)sizeof(mreq));
Copy(mreqbytes, &mreq, sizeof(mreq), char);
EXTEND(SP, 2);
( run in 0.756 second using v1.01-cache-2.11-cpan-5511b514fd6 )