Net-Bind-rbldnsdAccessor

 view release on metacpan or  search on metacpan

rbldnsdAccessor.xs  view on Meta::CPAN

	Net::Bind::rbldnsdAccessor::ISC_R_EXISTS		= ISC_R_EXISTS
	Net::Bind::rbldnsdAccessor::ISC_R_NOSPACE		= ISC_R_NOSPACE
	Net::Bind::rbldnsdAccessor::ISC_R_CANCELED		= ISC_R_CANCELED
	Net::Bind::rbldnsdAccessor::ISC_R_NOTBOUND		= ISC_R_NOTBOUND
	Net::Bind::rbldnsdAccessor::ISC_R_SHUTTINGDOWN		= ISC_R_SHUTTINGDOWN
	Net::Bind::rbldnsdAccessor::ISC_R_NOTFOUND		= ISC_R_NOTFOUND
	Net::Bind::rbldnsdAccessor::ISC_R_UNEXPECTEDEND		= ISC_R_UNEXPECTEDEND
	Net::Bind::rbldnsdAccessor::ISC_R_FAILURE		= ISC_R_FAILURE
	Net::Bind::rbldnsdAccessor::ISC_R_IOERROR		= ISC_R_IOERROR
	Net::Bind::rbldnsdAccessor::ISC_R_NOTIMPLEMENTED	= ISC_R_NOTIMPLEMENTED
	Net::Bind::rbldnsdAccessor::ISC_R_UNBALANCED		= ISC_R_UNBALANCED
	Net::Bind::rbldnsdAccessor::ISC_R_NOMORE		= ISC_R_NOMORE
	Net::Bind::rbldnsdAccessor::ISC_R_INVALIDFILE		= ISC_R_INVALIDFILE
	Net::Bind::rbldnsdAccessor::ISC_R_BADBASE64		= ISC_R_BADBASE64
	Net::Bind::rbldnsdAccessor::ISC_R_UNEXPECTEDTOKEN	= ISC_R_UNEXPECTEDTOKEN
	Net::Bind::rbldnsdAccessor::ISC_R_QUOTA			= ISC_R_QUOTA
	Net::Bind::rbldnsdAccessor::ISC_R_UNEXPECTED		= ISC_R_UNEXPECTED
	Net::Bind::rbldnsdAccessor::ISC_R_ALREADYRUNNING	= ISC_R_ALREADYRUNNING
	Net::Bind::rbldnsdAccessor::ISC_R_IGNORE		= ISC_R_IGNORE
	Net::Bind::rbldnsdAccessor::ISC_R_MASKNONCONTIG		= ISC_R_MASKNONCONTIG
	Net::Bind::rbldnsdAccessor::ISC_R_FILENOTFOUND		= ISC_R_FILENOTFOUND
	Net::Bind::rbldnsdAccessor::ISC_R_FILEEXISTS		= ISC_R_FILEEXISTS
	Net::Bind::rbldnsdAccessor::ISC_R_NOTCONNECTED		= ISC_R_NOTCONNECTED
	Net::Bind::rbldnsdAccessor::ISC_R_RANGE			= ISC_R_RANGE
	Net::Bind::rbldnsdAccessor::ISC_R_NOENTROPY		= ISC_R_NOENTROPY
	Net::Bind::rbldnsdAccessor::ISC_R_MULTICAST		= ISC_R_MULTICAST
	Net::Bind::rbldnsdAccessor::ISC_R_NOTFILE		= ISC_R_NOTFILE
	Net::Bind::rbldnsdAccessor::ISC_R_NOTDIRECTORY		= ISC_R_NOTDIRECTORY
	Net::Bind::rbldnsdAccessor::ISC_R_QUEUEFULL		= ISC_R_QUEUEFULL
	Net::Bind::rbldnsdAccessor::ISC_R_FAMILYMISMATCH	= ISC_R_FAMILYMISMATCH
	Net::Bind::rbldnsdAccessor::ISC_R_FAMILYNOSUPPORT	= ISC_R_FAMILYNOSUPPORT
	Net::Bind::rbldnsdAccessor::ISC_R_BADHEX		= ISC_R_BADHEX
	Net::Bind::rbldnsdAccessor::ISC_R_TOOMANYOPENFILES	= ISC_R_TOOMANYOPENFILES
	Net::Bind::rbldnsdAccessor::ISC_R_NOTBLOCKING		= ISC_R_NOTBLOCKING
	Net::Bind::rbldnsdAccessor::ISC_R_UNBALANCEDQUOTES	= ISC_R_UNBALANCEDQUOTES
	Net::Bind::rbldnsdAccessor::ISC_R_INPROGRESS		= ISC_R_INPROGRESS
	Net::Bind::rbldnsdAccessor::ISC_R_CONNECTIONRESET	= ISC_R_CONNECTIONRESET
	Net::Bind::rbldnsdAccessor::ISC_R_SOFTQUOTA		= ISC_R_SOFTQUOTA
	Net::Bind::rbldnsdAccessor::ISC_R_BADNUMBER		= ISC_R_BADNUMBER
	Net::Bind::rbldnsdAccessor::ISC_R_DISABLED		= ISC_R_DISABLED
	Net::Bind::rbldnsdAccessor::ISC_R_MAXSIZE		= ISC_R_MAXSIZE
	Net::Bind::rbldnsdAccessor::ISC_R_BADADDRESSFORM	= ISC_R_BADADDRESSFORM
	Net::Bind::rbldnsdAccessor::ISC_R_NRESULTS		= ISC_R_NRESULTS

    CODE:
	RETVAL = ix;

    OUTPUT:
	RETVAL


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)));
        XSRETURN(2);


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;
	}
	cp = pkt.p_buf;
	pkt.p_endp = cp + len;
	cp += p_hdrsize + 4;			/*	point to question	*/
	if (rblf_skip(&cp,pkt.p_endp) < 0)	/*	skip over question	*/
	  goto bail;
	invalid_pkt = 0;
	pkt.p_cur = pkt.p_sans = cp +4;
	XPUSHs(sv_2mortal(newSViv(pkt.p_buf[p_ancnt2])));	/*	answer count		*/

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

	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;

	XPUSHs(sv_2mortal(newSViv(rblfi.type)));

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

	XPUSHs(sv_2mortal(newSViv(rblfi.ttl)));
	XPUSHs(sv_2mortal(newSViv(rblfi.rdl)));
	rd = sv_newmortal();
	sv_setpvn(rd, (char *)rblfi.rdata,rblfi.rdl);
	XPUSHs(rd);
	XPUSHs(sv_2mortal(newSViv(pkt.p_cur - pkt.p_buf)));
	XSRETURN(5);


unsigned int
rblf_create_zone(zone,...)
	char * zone

    PREINIT:
	int i;
	char * argv[256];
	STRLEN len;

    CODE:
	if (items < 3)
	  croak("ERROR: not enough arguments");

	if (items > 256)
	  croak("ERROR: to many arguments");

	for (i=1; i<items;i++) {
	  argv[i -1] = SvPV(ST(i),len);
	}
	RETVAL = rblf_create_zone(zone,(int)(items -1),argv,NULL,NULL);

    OUTPUT:
	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;

	XPUSHs(sv_2mortal(newSViv(len)));
	if (GIMME != G_ARRAY)
	  XSRETURN(1);

	XPUSHs(sv_2mortal(newSVpvn((char *)pkt.p_buf,len)));
	XPUSHs(sv_2mortal(newSViv((I32)pkt.p_buf)));
	XPUSHs(sv_2mortal(newSViv((I32)pkt.p_cur)));
	XPUSHs(sv_2mortal(newSViv((I32)pkt.p_sans)));
	XPUSHs(sv_2mortal(newSViv((I32)pkt.p_endp)));
	XPUSHs(sv_2mortal(newSViv(pkt.p_cur - pkt.p_buf)));
	XPUSHs(sv_2mortal(newSViv(pkt.p_sans - pkt.p_buf)));
	XSRETURN(8);


void
rblf_reinit()

    CODE:
	rblf_drop();



( run in 2.673 seconds using v1.01-cache-2.11-cpan-5511b514fd6 )