Net-Nmsg
view release on metacpan or search on metacpan
MODULE = Net::Nmsg PACKAGE = Net::Nmsg::Util PREFIX = nmsg_
void
nmsg_chalias_lookup(ch)
const char *ch
PREINIT:
char **alias = NULL;
int num_aliases;
int i;
PPCODE:
num_aliases = nmsg_chalias_lookup(ch, &alias);
if (num_aliases > 0) {
for (i = 0; i < num_aliases; i++)
mXPUSHs(newSVpv(alias[i], 0));
}
if (alias != NULL)
nmsg_chalias_free(&alias);
const char *
nmsg_alias_by_key(ae, key)
unsigned
nmsg_alias_by_value(ae, value)
nmsg_alias_e ae
const char *value
void
find_all_devs()
PREINIT:
char err[PCAP_ERRBUF_SIZE];
PPCODE:
pcap_if_t *devs, *d;
if (pcap_findalldevs(&devs, err) == -1)
croak("%s", err);
for (d=devs; d; d=d->next) {
mXPUSHs(newSVpv(d->name, 0));
if (d->description)
mXPUSHs(newSVpv(d->description, 0));
else {
RETVAL
void
get_timestring()
PREINIT:
char now[32];
struct timespec ts;
struct tm *tm;
time_t t;
char *tstr;
PPCODE:
nmsg_timespec_get(&ts);
t = (time_t) ts.tv_sec;
tm = gmtime(&t);
strftime(now, sizeof(now), "%Y%m%d.%H%M.%s", tm);
nmsg_asprintf(&tstr, "%s.%09ld", now, ts.tv_nsec);
if (tstr == NULL)
croak("problem allocating time string");
mXPUSHs(newSVpv(tstr, 0));
Safefree(tstr);
RETVAL = pcap_set_promisc(THIS, promisc);
#endif /* LIMITED_PCAP */
OUTPUT:
RETVAL
void
get_selectable_fd(THIS)
Net::Nmsg::XS::pcap THIS
PREINIT:
int res;
PPCODE:
res = pcap_get_selectable_fd(THIS);
if (res != -1)
mXPUSHi(res);
int
pcap_fileno(THIS)
Net::Nmsg::XS::pcap THIS
char *
pcap_geterr(THIS)
unsigned mid
CODE:
nmsg_input_set_filter_msgtype(THIS, vid, mid);
void
nmsg_input_set_blocking_io(THIS, flag)
Net::Nmsg::XS::input THIS
bool flag
PREINIT:
nmsg_res res;
PPCODE:
res = nmsg_input_set_blocking_io(THIS, flag);
if (res == nmsg_res_success)
mXPUSHi(flag);
void
read(THIS, blocking_io=true)
Net::Nmsg::XS::input THIS
bool blocking_io
PREINIT:
nmsg_message_t m;
nmsg_res res;
U32 SAVE_signals;
PPCODE:
res = nmsg_res_failure;
while (res != nmsg_res_success) {
SAVE_signals = PL_signals;
PL_signals |= PERL_SIGNALS_UNSAFE_FLAG;
res = nmsg_input_read(THIS, &m);
PL_signals = SAVE_signals;
switch (res) {
case (nmsg_res_success):
mXPUSHs(_xs_wrap_msg(aTHX_ m));
goto last_read;
uint32_t
nmsg_message_get_group(THIS)
Net::Nmsg::XS::msg THIS
void
get_time(THIS)
Net::Nmsg::XS::msg THIS
PREINIT:
struct timespec ts;
PPCODE:
nmsg_message_get_time(THIS, &ts);
mXPUSHi(ts.tv_sec);
mXPUSHi(ts.tv_nsec);
void
get_num_fields(THIS)
Net::Nmsg::XS::msg THIS
PREINIT:
nmsg_res res;
size_t len;
PPCODE:
res = nmsg_message_get_num_fields(THIS, &len);
if (res == nmsg_res_success)
mXPUSHu(len);
void
get_num_field_values(THIS, field)
Net::Nmsg::XS::msg THIS
const char *field
PREINIT:
nmsg_res res;
size_t len;
PPCODE:
res = nmsg_message_get_num_field_values(THIS, field, &len);
if (res == nmsg_res_success)
mXPUSHu(len);
void
get_num_field_values_by_idx(THIS, idx)
Net::Nmsg::XS::msg THIS
unsigned idx
PREINIT:
nmsg_res res;
size_t len;
PPCODE:
res = nmsg_message_get_num_field_values_by_idx(THIS, idx, &len);
if (res == nmsg_res_success)
mXPUSHu(len);
void
get_field(THIS, field, v_idx = 0)
Net::Nmsg::XS::msg THIS
const char *field
unsigned v_idx
PREINIT:
nmsg_res res;
size_t len;
void *data;
nmsg_msgmod_field_type type;
PPCODE:
res = nmsg_message_get_field(THIS, field, v_idx, &data, &len);
if (res == nmsg_res_success && data != NULL) {
res = nmsg_message_get_field_type(THIS, field, &type);
if (res == nmsg_res_success) {
mXPUSHs(_xs_field_to_sv(aTHX_ data, len, type));
}
else
croak("nmsg_message_get_field_type failed: %s",
nmsg_res_lookup(res));
}
void
get_field_vals(THIS, field)
Net::Nmsg::XS::msg THIS
const char *field
PREINIT:
nmsg_res res;
size_t len;
void *data;
nmsg_msgmod_field_type type;
int i;
PPCODE:
res = nmsg_message_get_field_type(THIS, field, &type);
if (res != nmsg_res_success)
croak("nmsg_message_get_field_type failed: %s", nmsg_res_lookup(res));
for (i = 0; ; i++) {
res = nmsg_message_get_field(THIS, field, i, &data, &len);
if (res != nmsg_res_success || data == NULL)
break;
mXPUSHs(_xs_field_to_sv(aTHX_ data, len, type));
}
void
get_field_by_idx(THIS, f_idx, v_idx = 0)
Net::Nmsg::XS::msg THIS
unsigned f_idx
unsigned v_idx
PREINIT:
nmsg_res res;
nmsg_msgmod_field_type type;
size_t len;
void *data;
PPCODE:
res = nmsg_message_get_field_by_idx(THIS, f_idx, v_idx, &data, &len);
if (res == nmsg_res_success) {
res = nmsg_message_get_field_type_by_idx(THIS, f_idx, &type);
if (res == nmsg_res_success && data != NULL) {
mXPUSHs(_xs_field_to_sv(aTHX_ data, len, type));
}
else if (res != nmsg_res_success)
croak("nmsg_message_get_field_type_by_idx failed: %s",
nmsg_res_lookup(res));
}
void
get_field_vals_by_idx(THIS, f_idx)
Net::Nmsg::XS::msg THIS
unsigned f_idx
PREINIT:
nmsg_res res;
nmsg_msgmod_field_type type;
size_t len;
void *data;
int i;
PPCODE:
res = nmsg_message_get_field_type_by_idx(THIS, f_idx, &type);
if (res == nmsg_res_success) {
for (i = 0; ; i++) {
res = nmsg_message_get_field_by_idx(THIS, f_idx, i, &data, &len);
if (res != nmsg_res_success || data == NULL)
break;
mXPUSHs(_xs_field_to_sv(aTHX_ data, len, type));
}
}
void
get_field_flags(THIS, field)
Net::Nmsg::XS::msg THIS
const char *field
PREINIT:
nmsg_res res;
unsigned flags;
PPCODE:
res = nmsg_message_get_field_flags(THIS, field, &flags);
if (res == nmsg_res_success)
mXPUSHu(flags);
void
get_field_flags_by_idx(THIS, f_idx)
Net::Nmsg::XS::msg THIS
unsigned f_idx
PREINIT:
nmsg_res res;
unsigned flags;
PPCODE:
res = nmsg_message_get_field_flags_by_idx(THIS, f_idx, &flags);
if (res == nmsg_res_success)
mXPUSHu(flags);
void
get_field_idx(THIS, name)
Net::Nmsg::XS::msg THIS
const char *name
PREINIT:
nmsg_res res;
unsigned idx;
PPCODE:
res = nmsg_message_get_field_idx(THIS, name, &idx);
if (res == nmsg_res_success)
mXPUSHu(idx);
void
get_field_name(THIS, idx)
Net::Nmsg::XS::msg THIS
unsigned idx
PREINIT:
nmsg_res res;
const char *name;
PPCODE:
res = nmsg_message_get_field_name(THIS, idx, &name);
if (res == nmsg_res_success)
mXPUSHs(newSVpv(name, 0));
void
get_field_type(THIS, name)
Net::Nmsg::XS::msg THIS
const char *name;
PREINIT:
nmsg_res res;
nmsg_msgmod_field_type type;
PPCODE:
res = nmsg_message_get_field_type(THIS, name, &type);
if (res == nmsg_res_success)
mXPUSHi(type);
void
get_field_type_by_idx(THIS, idx)
Net::Nmsg::XS::msg THIS
unsigned idx
PREINIT:
nmsg_res res;
nmsg_msgmod_field_type type;
PPCODE:
res = nmsg_message_get_field_type_by_idx(THIS, idx, &type);
if (res == nmsg_res_success)
mXPUSHi(type);
void
enum_name_to_value(THIS, field, name)
Net::Nmsg::XS::msg THIS
const char *field
const char *name
PREINIT:
nmsg_res res;
unsigned value;
PPCODE:
res = nmsg_message_enum_name_to_value(THIS, field, name, &value);
if (res == nmsg_res_success)
mXPUSHu(value);
void
enum_name_to_value_by_idx(THIS, f_idx, name)
Net::Nmsg::XS::msg THIS
unsigned f_idx
const char *name
PREINIT:
nmsg_res res;
unsigned value;
PPCODE:
res = nmsg_message_enum_name_to_value_by_idx(THIS, f_idx, name, &value);
if (res == nmsg_res_success)
mXPUSHu(value);
void
enum_value_to_name(THIS, field, value)
Net::Nmsg::XS::msg THIS
const char *field
unsigned value
PREINIT:
nmsg_res res;
const char *name;
PPCODE:
res = nmsg_message_enum_value_to_name(THIS, field, value, &name);
if (res == nmsg_res_success)
mXPUSHs(newSVpv(name, 0));
void
enum_value_to_name_by_idx(THIS, f_idx, value)
Net::Nmsg::XS::msg THIS
unsigned f_idx
unsigned value
PREINIT:
nmsg_res res;
const char *name;
PPCODE:
res = nmsg_message_enum_value_to_name_by_idx(THIS, f_idx, value, &name);
if (res == nmsg_res_success)
mXPUSHs(newSVpv(name, 0));
void
set_field(THIS, field, v_idx, sv)
Net::Nmsg::XS::msg THIS
const char *field
unsigned v_idx
SV *sv
Net::Nmsg::XS::msg THIS
uint32_t group
void
set_time(THIS, time_sec, time_nsec)
Net::Nmsg::XS::msg THIS
long time_sec
int time_nsec
PREINIT:
struct timespec ts;
PPCODE:
ts.tv_sec = time_sec;
ts.tv_nsec = time_nsec;
nmsg_message_set_time(THIS, &ts);
void
message_to_pres(THIS, endline)
Net::Nmsg::XS::msg THIS
const char *endline
PREINIT:
nmsg_res res;
char *pres;
PPCODE:
pthread_mutex_lock(&presentation_lock);
res = nmsg_message_to_pres(THIS, &pres, endline);
if (res != nmsg_res_success)
goto out;
mXPUSHs(newSVpv(pres, 0));
Safefree(pres);
out:
pthread_mutex_unlock(&presentation_lock);
if (res != nmsg_res_success)
croak("nmsg_message_to_pres failed: %s", nmsg_res_lookup(res));
void
get_field_type_descr_by_idx(THIS, f_idx)
Net::Nmsg::XS::msg THIS
unsigned f_idx
PREINIT:
nmsg_res res;
nmsg_msgmod_field_type type;
PPCODE:
res = nmsg_message_get_field_type_by_idx(THIS, f_idx, &type);
if (res == nmsg_res_success) {
mXPUSHs(newSViv(type));
switch (type) {
case nmsg_msgmod_ft_enum:
mXPUSHs(newSVpvs("enum"));
break;
case nmsg_msgmod_ft_int16:
}
}
void
get_field_flag_descr_by_idx(THIS, f_idx)
Net::Nmsg::XS::msg THIS
unsigned f_idx
PREINIT:
nmsg_res res;
unsigned flags;
PPCODE:
res = nmsg_message_get_field_flags_by_idx(THIS, f_idx, &flags);
if (res == nmsg_res_success) {
if (flags & NMSG_FF_REPEATED)
mXPUSHs(newSViv(NMSG_FF_REPEATED));
mXPUSHs(newSVpvs("repeated"));
if (flags & NMSG_FF_REQUIRED)
mXPUSHs(newSViv(NMSG_FF_REQUIRED));
mXPUSHs(newSVpvs("required"));
if (flags & NMSG_FF_HIDDEN)
mXPUSHs(newSViv(NMSG_FF_HIDDEN));
void
get_field_enum_descr_by_idx(THIS, f_idx)
Net::Nmsg::XS::msg THIS
unsigned f_idx
PREINIT:
nmsg_res res;
nmsg_msgmod_field_type type;
unsigned v;
const char *name;
PPCODE:
res = nmsg_message_get_field_type_by_idx(THIS, f_idx, &type);
if (res == nmsg_res_success && type == nmsg_msgmod_ft_enum) {
for (v = 0; ; v++) {
res = nmsg_message_enum_value_to_name_by_idx(
THIS, f_idx, v, &name);
if (res != nmsg_res_success)
break;
mXPUSHu(v);
mXPUSHs(newSVpv(name, 0));
}
( run in 1.993 second using v1.01-cache-2.11-cpan-5511b514fd6 )