Socket

 view release on metacpan or  search on metacpan

Socket.xs  view on Meta::CPAN

        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,

Socket.xs  view on Meta::CPAN

#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))

Socket.xs  view on Meta::CPAN


        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);

Socket.xs  view on Meta::CPAN

#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);

Socket.xs  view on Meta::CPAN

#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 2.474 seconds using v1.01-cache-2.11-cpan-5511b514fd6 )