Net-Bind-rbldnsdAccessor

 view release on metacpan or  search on metacpan

rbldnsdAccessor.xs  view on Meta::CPAN


void
rblf_strncpy(src,max,c)
        char * src
        int max
        char c

    PREINIT:
        SV * len;

    PPCODE:
        if (max >= RBLF_DLEN)
          croak ("maximum transfer length exceeds internal buffer %d\n",RBLF_DLEN);

        memset(abuf,c,RBLF_DLEN);
        XPUSHs(sv_2mortal(newSViv(rblf_strncpy(abuf,src,max))));

        if (GIMME != G_ARRAY)
          XSRETURN(1);

        XPUSHs(sv_2mortal(newSVpv((char *)abuf,RBLF_DLEN)));

rbldnsdAccessor.xs  view on Meta::CPAN


void
rblf_load_dnstest(buffer)
	SV * buffer

    PREINIT:
	STRLEN len;
	unsigned char * cp;
	int rv;

    PPCODE:
	invalid_pkt = 1;
	cp = (unsigned char *)SvPV(buffer,len);
	bzero(&pkt,sizeof(struct dnspacket));
	rv = rblf_safemcpy(pkt.p_buf, cp, (size_t)len,(pkt.p_buf + DNS_MAXPACKET));
	if (rv < 0) {
	bail:
	  if (GIMME_V != G_ARRAY)
	    XSRETURN_UNDEF;
	  XSRETURN_EMPTY;
	}

rbldnsdAccessor.xs  view on Meta::CPAN


	XPUSHs(sv_2mortal(newSViv(rv)));	/*	offset		*/
	XSRETURN(2);


void
rblf_next_answer()
    PREINIT:
	SV * rd;

    PPCODE:
	if (invalid_pkt) {
	bail:
	  if (GIMME_V != G_ARRAY)
	    XSRETURN_UNDEF;
	  XSRETURN_EMPTY;
	}

	if (rblf_answer(&rblfi,&(pkt.p_cur),pkt.p_buf,pkt.p_endp) < 0)
	  goto bail;

rbldnsdAccessor.xs  view on Meta::CPAN

	RETVAL


void
rblf_query(name)
	char * name

    PREINIT:
	int answers = 0;

    PPCODE:
	invalid_pkt = rblf_query(name,&pkt);
	if (!invalid_pkt)
	  answers = (int)(pkt.p_buf[p_ancnt2]);

	XPUSHs(sv_2mortal(newSViv(answers)));
	if (GIMME == G_ARRAY) {
	  XPUSHs(sv_2mortal(newSViv(invalid_pkt)));
	  XSRETURN(2);
	}

	XSRETURN(1);


void
rblf_dump_packet()

    PREINIT:
	STRLEN len;

    PPCODE:
	if (pkt.p_endp == NULL) {
	bail:
	  if (GIMME != G_ARRAY)
	    XSRETURN_UNDEF;
	  XSRETURN_EMPTY;
	}

	if ((len = pkt.p_endp - pkt.p_buf) > DNS_MAXPACKET || len <= 0)
	  goto bail;



( run in 0.757 second using v1.01-cache-2.11-cpan-5511b514fd6 )