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 )