X-Git-Url: https://git.octo.it/?p=liboping.git;a=blobdiff_plain;f=bindings%2Fperl%2FOping.xs;h=c88e3dca981710649212fac8a21ff97ad68c92bd;hp=d97d4f82f128486efd43badbd074d63fd4e4157c;hb=b525c9c88c988fa45593700d9a4846faa388922a;hpb=f625dd45448c1ebe0a4fe1949124c09dcfd34df1 diff --git a/bindings/perl/Oping.xs b/bindings/perl/Oping.xs index d97d4f8..c88e3dc 100644 --- a/bindings/perl/Oping.xs +++ b/bindings/perl/Oping.xs @@ -1,3 +1,26 @@ +/** + * Net-Oping - Oping.xs + * Copyright (C) 2007 Olivier Fredj + * Copyright (C) 2008,2009 Florian octo Forster + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; only version 2 of the License is + * applicable. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Authors: + * Olivier Fredj + * Florian octo Forster + */ #include "EXTERN.h" #include "perl.h" #include "XSUB.h" @@ -5,6 +28,8 @@ #include #include #include +#include +#include #include #include #include /* NI_MAXHOST */ @@ -37,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 @@ -45,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 @@ -136,11 +183,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