IPTables-IPv4-DBTarpit
view release on metacpan or search on metacpan
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];
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;
t_saveaddr(addr, timestamp)
unsigned char * addr
U32 timestamp
CODE:
if (dbtp.dbaddr[DBarchive] != NULL)
dbtp_put(&dbtp,DBarchive,(void *)addr,sizeof(void *),×tamp,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;
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);
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) {
# 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)));
}
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 )