IPTables-IPv4-DBTarpit

 view release on metacpan or  search on metacpan

CTest.xs  view on Meta::CPAN

t_savpid(path)
	char * path
    CODE:
	savpid(path);

void
t_chk4pid(path)
	char * path
    PREINIT:
	SV * out;
    PPCODE:
	path = chk4pid(path);
	if (path == NULL) {
	  ST(0) = &PL_sv_undef;
	}
	else {
	  out = sv_newmortal();
	  out = newSVpv(path,0);
	  ST(0) = out;
	  XSRETURN(1);
	}

void
t_pidpath()
    PREINIT:
	SV * out;
    PPCODE:
	out = sv_newmortal();
	out = newSVpv(pidpath(),0);
	ST(0) = out;
	XSRETURN(1);

int
t_main(...)
    PREINIT:
	STRLEN	len;
	unsigned char * ptr[20];

CTest.xs  view on Meta::CPAN

void
t_setsig()
    CODE:
	logopen = 0;	/* skip branch in Code	*/
	oflag = 1;	/* print to stdout	*/
	set_signals();

void
t_inirand(test)
	int test
    PPCODE:
	XPUSHs(sv_2mortal(newSVnv(sizeof(rarry) / 4)));
	XPUSHs(sv_2mortal(newSVnv(initRandGen(test))));

void
t_fillrand()
    PREINIT:
	unsigned long * rptr;
	int i;
    PPCODE:
	rptr = fillrandom();
	for (i=0; i< sizeof(rarry) / 4;i++)
	{
	    XPUSHs(sv_2mortal(newSVnv(rptr[i])));
	}

int
t_ret_IPPTCP()
    CODE:
	RETVAL = IPPROTO_TCP;

CTest.xs  view on Meta::CPAN

t_saveaddr(addr, timestamp)
	unsigned char * addr
	U32 timestamp
    CODE:
	if (dbtp.dbaddr[DBarchive] != NULL)
	    dbtp_put(&dbtp,DBarchive,(void *)addr,sizeof(void *),&timestamp,sizeof(timestamp));

void
t_dberror(err)
	int err
    PPCODE:
	XPUSHs(sv_2mortal(newSVpv(dbtp_strerror(err),0)));
	XSRETURN(1);

int
t_statn(name)
	char * name
    CODE:
	RETVAL = dbtp_statn(&dbtp,name);
    OUTPUT:
	RETVAL

void
t_LogPrint(home, name, message, ofg, Ofg,...)
	char * home
	char * name
	char * message
	int ofg
	int Ofg
    PPCODE:
	if (items >5) {		/* is there a file descriptor	*/
	    fifofd = SvIV(ST(6));
	}
	else
	    fifofd = 0;

	oflag = ofg;
	Oflag = Ofg;
	dbhome = home;
	fifoname = name;

CTest.xs  view on Meta::CPAN


void
t_fifo_close()
    CODE:
	if (fifofd > 0)
	    close(fifofd);
	fifofd = 0;

void
t_errors()
    PPCODE:
	EXTEND(SP,7);
	PUSHs(sv_2mortal(newSViv(EPIPE)));
	PUSHs(sv_2mortal(newSViv(ENOSPC)));
	PUSHs(sv_2mortal(newSViv(EEXIST)));
	PUSHs(sv_2mortal(newSViv(ENOENT)));
	PUSHs(sv_2mortal(newSViv(ENOTDIR)));
	PUSHs(sv_2mortal(newSViv(ENXIO)));
	PUSHs(sv_2mortal(newSViv(ENODEV)));
	XSRETURN(7);

CTest.xs  view on Meta::CPAN

SV *
t_get(ai,addr,notstring)
	int ai
	SV * addr
	int notstring
    PREINIT:
	STRLEN len;
	void * adp;
	int rv;
	SV * val;
    PPCODE:
	adp = (void *)SvPV(addr,len);
/*	rv = dbtp_get(&dbtp,ai,adp,len); */
	rv = dbtp_readOne(&dbtp,0,ai,adp,0);

	if (rv == DB_NOTFOUND)
	    XSRETURN_UNDEF;
	else if (rv)
	    XSRETURN_IV(0);

	if (ai < notstring && dbtp.mgdbt.size == DBTP_U32size) {

CTest.xs  view on Meta::CPAN


 # if ai < notstring, get U32, else get string
void
t_getrecno(ai,cursor,notstring)
	int ai
	U32 cursor
	int notstring
    PREINIT:
	int rv;
	SV * val;
    PPCODE:
 #	rv = dbtp_getrecno(&dbtp,ai,cursor);
	rv = dbtp_readOne(&dbtp,1,ai,&cursor,0);
	if (rv) {
	    if (GIMME == G_ARRAY)
		XSRETURN_EMPTY;
	    else
		XSRETURN_UNDEF;
	}

	XPUSHs(sv_2mortal(newSVpv(dbtp.keydbt.data,dbtp.keydbt.size)));

CTest.xs  view on Meta::CPAN

	}
	XSRETURN(1);

void
t_libversion(ai)
	int ai
    PREINIT:
	int major, minor, patch;
	int zero[] = {0,0};
	SV * stats;
    PPCODE:
	(void) dbtp_readOne(&dbtp,1,ai,(void *)&zero,0);
	major = (int)*(u_char *)(dbtp.keydbt.data + 1);
	minor = (int)*(u_char *)(dbtp.keydbt.data + 2);
	patch = (int)*(u_char *)(dbtp.keydbt.data + 3);
	stats = newSViv(*(U32 *)dbtp.mgdbt.data);
	sv_setuv(stats,*(U32 *)dbtp.mgdbt.data);
	XPUSHs(sv_2mortal(stats));	
	if (GIMME == G_ARRAY) {
	    XPUSHs(sv_2mortal(newSViv((I32)major)));
	    XPUSHs(sv_2mortal(newSViv((I32)minor)));

Tools/Tools.xs  view on Meta::CPAN

	int ai
	SV * addr
	int notstring
    PREINIT:
	DBTPD * rdbtp;
	STRLEN len;
	void * adp;
	int rv;
	SV * val, * erp;
	IV err;
    PPCODE:
	GET_DBTP(p,rdbtp);
	adp = (void *)SvPV(addr,len);
	rv = dbtp_get(rdbtp,ai,adp,len);
	_t_seterr(rdbtp,erp,err);

	if (rv == DB_NOTFOUND)
	    XSRETURN_UNDEF;
	else if (rv)
	    XSRETURN_IV(0);

Tools/Tools.xs  view on Meta::CPAN

t_getrecno_r(p,ai,cursor,notstring)
	SV * p
	int ai
	U32 cursor
	int notstring
    PREINIT:
	DBTPD * rdbtp;
	int rv;
	SV * val, * erp;
	IV err;
    PPCODE:
	GET_DBTP(p,rdbtp);
	rv = dbtp_getrecno(rdbtp,ai,cursor);
	_t_seterr(rdbtp,erp,err);
	if (rv) {
	    if (GIMME == G_ARRAY)
		XSRETURN_EMPTY;
	    else
		XSRETURN_UNDEF;
	}

Tools/Tools.xs  view on Meta::CPAN

t_runrecovery()
    CODE:
	RETVAL = DB_RUNRECOVERY;
    OUTPUT:
	RETVAL

void
t_bdbversion()
    PREINIT:
	int major, minor, patch;
    PPCODE:
	XPUSHs(sv_2mortal(newSVpv(dbtp_bdbversion(&major,&minor,&patch),0)));
	if (GIMME == G_ARRAY) {
	    XPUSHs(sv_2mortal(newSViv((I32)major)));
	    XPUSHs(sv_2mortal(newSViv((I32)minor)));
	    XPUSHs(sv_2mortal(newSViv((I32)patch)));
	    XSRETURN(4);
	}
	XSRETURN(1);

void
t_libversion()
    PREINIT:
	int major, minor, patch;
    PPCODE:
	XPUSHs(sv_2mortal(newSVpv(dbtp_libversion(&major,&minor,&patch),0)));
	if (GIMME == G_ARRAY) {
	    XPUSHs(sv_2mortal(newSViv((I32)major)));
	    XPUSHs(sv_2mortal(newSViv((I32)minor)));
	    XPUSHs(sv_2mortal(newSViv((I32)patch)));
	    XSRETURN(4);
	}
	XSRETURN(1);

U32

Tools/Tools.xs  view on Meta::CPAN

 #       sv_bless (rv, stash); \
 #       SvGROW (sv, _SIZEOF_ADDR_IFREQ(*ifr)); \
 #       SvREADONLY_on (sv); \
 #       XPUSHs (rv);


void
t_nmem()
    PREINIT:
	SV * rv, * sv;
    PPCODE:
 # make an empty DBTPD
	sv = newSV(sizeof(DBTPD));
	rv = sv_2mortal(newRV_noinc(sv));
	SvREADONLY_on(sv);
	Zero(SvPVX(sv), 1, DBTPD);
	XPUSHs(rv);
	XSRETURN(1);

 # Save the next two routines in case we decide to switch to using malloc and free
 # void



( run in 1.017 second using v1.01-cache-2.11-cpan-71847e10f99 )