Net-Interface
view release on metacpan or search on metacpan
Interface.xs view on Meta::CPAN
void
interfaces(ref,...)
SV * ref
PROTOTYPE: $;$
ALIAS:
new = 1
PREINIT:
HV * stash = SvROK (ref)
? SvSTASH (SvRV (ref)) : gv_stashsv (ref, 0);
int rv;
PPCODE:
if ((rv = getheifs(sp,ax,items,ref,stash,(int)ix,NULL)) < 0) {
if (GIMME == G_ARRAY)
XSRETURN_EMPTY;
else
XSRETURN_UNDEF;
}
XSRETURN(rv);
void
dtest(ref)
SV * ref
PREINIT:
char * myname = "my name", * one = "one", * two = "two", * array = "array";
SV * rv, *arv, *mn;
GV * gv;
AV * av;
HV * stash, * tstash;
PPCODE:
stash = SvROK (ref) ? SvSTASH (SvRV (ref)) : gv_stashsv (ref, 0);
NI_newGV_ref(rv,gv,stash,tstash);
# mn = newSVpv(myname,0);
# GvSV(gv) = mn;
# hv_store(GvHV(gv),one,strlen(one),newSViv(1),0);
# hv_store(GvHV(gv),two,strlen(two),newSViv(2),0);
# av = newAV();
# arv = newRV_noinc((SV *)av);
# av = (AV*)SvRV(*hv_store(GvHV(gv),array,strlen(array),arv,0));
# av_push(av,newSViv(55));
Interface.xs view on Meta::CPAN
void
dtest2(ref)
SV * ref
PREINIT:
SV * sv, * pv;
HV * hv;
char * name = "Sv Name";
char * n2 = "LOGO";
char * myname = "my name", * one = "one", * two = "two", * array = "array";
PPCODE:
hv = newHV();
hv_store(hv,one,strlen(one),newSViv(1),0);
hv_store(hv,two,strlen(two),newSViv(2),0);
sv = (SV*)newRV_noinc((SV*)hv);
XPUSHs(sv_2mortal(sv));
XSRETURN(1);
void
__developer(ref)
Interface.xs view on Meta::CPAN
ni_getifaddrs_dump(rv,ifap);
ni_free_gifa(ifap,rv);
void
cidr2mask(prefix, size)
int prefix
int size
PREINIT:
unsigned char mask[16];
PPCODE:
if (!(size == 4 || size == 16))
croak("Bad arg for %s, requested mask size is %d, should be 4 or 16",
GvNAME (CvGV (cv)),size);
if (prefix < 0 || prefix > (size * 8))
croak ("Bad arg for %s, mask length is %d, should be 0 to <= %d",
GvNAME (CvGV (cv)),size * 8);
ni_plen2mask(mask,prefix,size);
XPUSHs(sv_2mortal(newSVpvn((char *)mask,size)));
XSRETURN(1);
Interface.xs view on Meta::CPAN
PROTOTYPE: $;$
ALIAS:
scope = 1
PREINIT:
unsigned char * s6bytes;
char * addr = "addr";
UV type;
STRLEN len;
HV * hv;
SV * sv;
PPCODE:
# called as method with argument
if (items == 2)
s6bytes = (unsigned char *)SvPV(ST(1),len);
# called as a function
else if (! SvROK(ref))
s6bytes = (unsigned char *)SvPV(ST(0),len);
# called as method
else {
if ((sv = get_first_address(ref,addr,1)) == NULL)
len = 0;
Interface.xs view on Meta::CPAN
void
mac_bin2hex(ref,...)
SV * ref
PROTOTYPE: $;$
PREINIT:
unsigned char * macbin;
char macbuf[18], * format, * args = "args", * mac = "maci";
STRLEN len;
HV * hv;
SV * sv;
PPCODE:
# called as method with argument
if (items == 2)
macbin = (unsigned char *)SvPV(ST(1),len);
# called as a function
else if (! SvROK(ref))
macbin = (unsigned char *)SvPV(ST(0),len);
# called as method
else {
hv = (HV *)SvRV(ref);
if (! hv_exists(hv,args,niKEYsz))
Interface.xs view on Meta::CPAN
XSRETURN(1);
void
full_inet_ntop(neta)
SV * neta
PREINIT:
unsigned char * naddr;
char mask[40], * format;
STRLEN len;
PPCODE:
naddr = (unsigned char *)SvPV(neta,len);
if (len != 16)
croak("Bad arg length for %s, ipV6 length is %d, should be 16 bytes",
GvNAME (CvGV (cv)),len);
format = SvPV(get_sv("Net::Interface::full_format", FALSE),len);
sprintf(mask,format,
naddr[0],naddr[1],naddr[2],naddr[3],
naddr[4],naddr[5],naddr[6],naddr[7],
naddr[8],naddr[9],naddr[10],naddr[11],
Interface.xs view on Meta::CPAN
IPV6_ADDR_SOLICITED_NODE = IPV6_ADDR_SOLICITED_NODE
IPV6_ADDR_ISATAP = IPV6_ADDR_ISATAP
IPV6_ADDR_PRODUCTIVE = IPV6_ADDR_PRODUCTIVE
IPV6_ADDR_6TO4_MICROSOFT = IPV6_ADDR_6TO4_MICROSOFT
IPV6_ADDR_TEREDO = IPV6_ADDR_TEREDO
IPV6_ADDR_ORCHID = IPV6_ADDR_ORCHID
IPV6_ADDR_NON_ROUTE_DOC = IPV6_ADDR_NON_ROUTE_DOC
PREINIT:
SV * rv;
int n, i;
PPCODE:
rv = sv_2mortal(newSViv(ix));
n = ni_sizeof_type2txt();
for (i=0; i<n; i++) {
if (ni_lx_type2txt[i].iff_val == ix) {
sv_setpv(rv,ni_lx_type2txt[i].iff_nam);
break;
}
}
SvIOK_on(rv);
XPUSHs(rv);
Interface.xs view on Meta::CPAN
ALIAS:
RFC2373_GLOBAL = RFC2373_GLOBAL
RFC2373_ORGLOCAL = RFC2373_ORGLOCAL
RFC2373_SITELOCAL = RFC2373_SITELOCAL
RFC2373_LINKLOCAL = RFC2373_LINKLOCAL
RFC2373_NODELOCAL = RFC2373_NODELOCAL
LINUX_COMPATv4 = LINUX_COMPATv4
PREINIT:
SV * rv;
int n, i;
PPCODE:
rv = sv_2mortal(newSViv(ix));
n = sizeof(ni_lx_scope_txt) / sizeof(ni_iff_t);
for (i=0; i<n; i++) {
if (ni_lx_scope_txt[i].iff_val == ix) {
sv_setpv(rv,ni_lx_scope_txt[i].iff_nam);
break;
}
}
SvIOK_on(rv);
XPUSHs(rv);
inst/netsymbols.pl view on Meta::CPAN
print NFz qq|\t{$_,\t"|, (lc $1), qq|"},\n|;
}
print NFz qq|\t{__NI_AF_TEST,\t"placeholder"}
};
|;
print NFx qq|\t_NI_AF_TEST = __NI_AF_TEST
PREINIT:
SV * rv;
int n, i;
PPCODE:
if (ix >= $endv) {
croak("%s is not implemented on this architecture", GvNAME(CvGV(cv)));
}
rv = sv_2mortal(newSViv(ix));
n = sizeof(ni_af_sym_tab) / sizeof(ni_iff_t);
for (i=0; i<n; i++) {
if (ni_af_sym_tab[i].iff_val == ix) {
sv_setpv(rv,ni_af_sym_tab[i].iff_nam);
break;
}
inst/netsymbols.pl view on Meta::CPAN
=cut
1;
|;
# add test element and complete
print NFx qq| PREINIT:
SV * rv;
int n, i;
PPCODE:
if (ix >= $endv) {
croak("%s is not implemented on this architecture", GvNAME(CvGV(cv)));
}
rv = sv_2mortal(newSVnv(bigsymvals[ix]));
n = sizeof(ni_sym_iff_tab) / sizeof(ni_iff_t);
for (i=0; i<n; i++) {
if (ni_sym_iff_tab[i].iff_val == bigsymvals[ix]) {
sv_setpv(rv,ni_sym_iff_tab[i].iff_nam);
break;
}
( run in 0.733 second using v1.01-cache-2.11-cpan-5511b514fd6 )