X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=bindings%2Fperl%2FOping.xs;h=5d8fa40992cf07292eb83a8dfbaaacef75d21e2b;hb=e67d7327869b9e7e91cdf1971670d29c8bd22e64;hp=19da01c5c14405e5ba5ec2de8d15b81ab6498fee;hpb=ac4b351e41eff1e6854d72b96a9ac591ff161e3e;p=liboping.git diff --git a/bindings/perl/Oping.xs b/bindings/perl/Oping.xs index 19da01c..5d8fa40 100644 --- a/bindings/perl/Oping.xs +++ b/bindings/perl/Oping.xs @@ -19,7 +19,7 @@ * * Authors: * Olivier Fredj - * Florian octo Forster + * Florian octo Forster */ #include "EXTERN.h" #include "perl.h" @@ -28,6 +28,8 @@ #include #include #include +#include +#include #include #include #include /* NI_MAXHOST */ @@ -60,6 +62,15 @@ _ping_setopt_timeout (obj, timeout) RETVAL int +_ping_setopt_ttl (obj, ttl) + pingobj_t *obj + int ttl + CODE: + RETVAL = ping_setopt (obj, PING_OPT_TTL, &ttl); + OUTPUT: + RETVAL + +int _ping_setopt_source (obj, addr) pingobj_t *obj char *addr @@ -68,6 +79,19 @@ _ping_setopt_source (obj, addr) OUTPUT: RETVAL +int +_ping_setopt_device (obj, dev) + pingobj_t *obj + char *dev + CODE: +#if OPING_VERSION >= 1003000 + RETVAL = ping_setopt (obj, PING_OPT_DEVICE, dev); +#else + RETVAL = -95; +#endif + OUTPUT: + RETVAL + int _ping_host_add (obj, host); pingobj_t *obj @@ -110,6 +134,14 @@ _ping_iterator_next (iter) OUTPUT: RETVAL +int +_ping_iterator_count (obj) + pingobj_t *obj + CODE: + RETVAL = ping_iterator_count (obj); + OUTPUT: + RETVAL + double _ping_iterator_get_latency (iter) pingobj_iter_t *iter @@ -159,11 +191,56 @@ _ping_iterator_get_hostname (iter) free (buffer); break; } + buffer[buffer_size - 1] = 0; - XPUSHs (sv_2mortal (newSVpvn(buffer,buffer_size))); + XPUSHs (sv_2mortal (newSVpvn(buffer, strlen (buffer)))); free(buffer); } while (0); +int +_ping_iterator_get_dropped (iter) + pingobj_iter_t *iter + CODE: +#if defined(PING_INFO_DROPPED) + uint32_t tmp; + size_t tmp_size; + int status; + + RETVAL = -1; + + tmp_size = sizeof (tmp); + status = ping_iterator_get_info (iter, PING_INFO_DROPPED, + (void *) &tmp, &tmp_size); + if (status == 0) + RETVAL = (int) tmp; +#else + RETVAL = -1; +#endif + OUTPUT: + RETVAL + +int +_ping_iterator_get_recv_ttl (iter) + pingobj_iter_t *iter + CODE: +#if defined(PING_INFO_RECV_TTL) + int tmp; + size_t tmp_size; + int status; + + RETVAL = -1; + + tmp_size = sizeof (tmp); + status = ping_iterator_get_info (iter, PING_INFO_RECV_TTL, + (void *) &tmp, &tmp_size); + if (status == 0) + RETVAL = tmp; +#else + RETVAL = -1; +#endif + OUTPUT: + RETVAL + const char * _ping_get_error (obj) pingobj_t *obj