diff --git a/net/p5-IO-Interface/Makefile b/net/p5-IO-Interface/Makefile index 0ddeabaade3..fa52674ba4a 100644 --- a/net/p5-IO-Interface/Makefile +++ b/net/p5-IO-Interface/Makefile @@ -1,12 +1,11 @@ -# $OpenBSD: Makefile,v 1.9 2010/07/12 22:07:39 sthen Exp $ +# $OpenBSD: Makefile,v 1.10 2010/08/30 03:48:17 kevlo Exp $ SHARED_ONLY= Yes COMMENT= module for access to network card configuration information MODULES= cpan -DISTNAME= IO-Interface-1.02 -REVISION= 0 +DISTNAME= IO-Interface-1.05 CATEGORIES= net MAINTAINER= Kevin Lo diff --git a/net/p5-IO-Interface/distinfo b/net/p5-IO-Interface/distinfo index 4ae165ae308..0561fa15c93 100644 --- a/net/p5-IO-Interface/distinfo +++ b/net/p5-IO-Interface/distinfo @@ -1,5 +1,5 @@ -MD5 (IO-Interface-1.02.tar.gz) = /5b5j1K2js6IqOQOKSBx0g== -RMD160 (IO-Interface-1.02.tar.gz) = irvOLpxPkVcdZkiHZ8/2w2frmbY= -SHA1 (IO-Interface-1.02.tar.gz) = H72ejBXdzPuwCgC1t+Ha5AtYgNo= -SHA256 (IO-Interface-1.02.tar.gz) = DiTSxOoQpFuJm8tvYDMx4p3EmXsJwsS0KbnipEofodA= -SIZE (IO-Interface-1.02.tar.gz) = 9507 +MD5 (IO-Interface-1.05.tar.gz) = CsLmusTThaATVazqi2GQzA== +RMD160 (IO-Interface-1.05.tar.gz) = VA3lQxHiRhnnSBFqWVxA79PbMyk= +SHA1 (IO-Interface-1.05.tar.gz) = WxlVGPvYcXWlvExx1Cai42C5n5g= +SHA256 (IO-Interface-1.05.tar.gz) = 3KHnUobc6ZP5sG1NTQ3B98y52zMXSPTu165Y/FFs6Vc= +SIZE (IO-Interface-1.05.tar.gz) = 10219 diff --git a/net/p5-IO-Interface/patches/patch-Interface_xs b/net/p5-IO-Interface/patches/patch-Interface_xs index 8deb36981d0..f08ed281906 100644 --- a/net/p5-IO-Interface/patches/patch-Interface_xs +++ b/net/p5-IO-Interface/patches/patch-Interface_xs @@ -1,67 +1,75 @@ -$OpenBSD: patch-Interface_xs,v 1.1 2006/01/11 20:12:45 steven Exp $ ---- Interface.xs.orig Wed Jan 11 08:24:31 2006 -+++ Interface.xs Wed Jan 11 08:25:51 2006 -@@ -317,7 +317,7 @@ not_there: - return 0; - } + +NetBSD and OpenBSD don't set the address family on the "netmask" address. +Work around that by just setting the address family field after ioctl() and +before checking it. + +if_hwaddr() was broken, code looping all interfaces was causing segmentation +fault on freeifaddrs() + +$OpenBSD: patch-Interface_xs,v 1.2 2010/08/30 03:48:17 kevlo Exp $ +--- Interface.xs.orig Fri Jun 6 16:51:42 2008 ++++ Interface.xs Sun Aug 29 01:53:48 2010 +@@ -2,6 +2,9 @@ + #include "perl.h" + #include "XSUB.h" --int Ioctl (InputStream sock,int operation,void* result) { -+int Ioctl (InputStream sock,unsigned long operation,void* result) { - int fd = PerlIO_fileno(sock); - return ioctl(fd,operation,result) == 0; - } -@@ -383,7 +383,7 @@ if_addr(sock, name, ...) - PROTOTYPE: $$;$ - PREINIT: - STRLEN len; -- int operation; -+ unsigned long operation; - struct ifreq ifr; - char* newaddr; - CODE: -@@ -421,7 +421,7 @@ if_broadcast(sock, name, ...) - PROTOTYPE: $$;$ - PREINIT: - STRLEN len; -- int operation; -+ unsigned long operation; - struct ifreq ifr; - char* newaddr; - CODE: -@@ -455,7 +455,7 @@ if_netmask(sock, name, ...) - PROTOTYPE: $$;$ - PREINIT: - STRLEN len; -- int operation; -+ unsigned long operation; ++#include ++#include ++ + /* socket definitions */ + #include + #include +@@ -511,6 +514,9 @@ if_netmask(sock, name, ...) + operation = SIOCGIFNETMASK; + } + if (!Ioctl(sock,operation,&ifr)) XSRETURN_UNDEF; ++#if defined(__NetBSD__) || defined(__OpenBSD__) ++ ifr.ifr_addr.sa_family = AF_INET; ++#endif + if (ifr.ifr_addr.sa_family != AF_INET) croak ("Address is not in the AF_INET family.\n"); + RETVAL = inet_ntoa(((struct sockaddr_in*) &ifr.ifr_addr)->sin_addr); + #endif +@@ -566,7 +572,7 @@ if_hwaddr(sock, name, ...) + IOCTL_CMD_T operation; struct ifreq ifr; - char* newaddr; - CODE: -@@ -489,7 +489,7 @@ if_dstaddr(sock, name, ...) - PROTOTYPE: $$;$ - PREINIT: - STRLEN len; -- int operation; -+ unsigned long operation; - struct ifreq ifr; - char* newaddr; - CODE: -@@ -523,7 +523,7 @@ if_hwaddr(sock, name, ...) - PROTOTYPE: $$;$ - PREINIT: - STRLEN len; -- int operation; -+ unsigned long operation; - struct ifreq ifr; - char *newaddr,hwaddr[128]; - CODE: -@@ -555,7 +555,8 @@ if_flags(sock, name, ...) - char* name - PROTOTYPE: $$;$ - PREINIT: -- int operation,flags; -+ unsigned long operation; -+ int flags; - struct ifreq ifr; - CODE: - { + #if (defined(USE_GETIFADDRS) && defined(HAVE_SOCKADDR_DL_STRUCT)) +- struct ifaddrs* ifap = NULL; ++ struct ifaddrs *ifap, *ifa; + struct sockaddr_dl* sdl; + sa_family_t family; + char *sdlname, *haddr, *s; +@@ -582,20 +588,17 @@ if_hwaddr(sock, name, ...) + #if (defined(USE_GETIFADDRS) && defined(HAVE_SOCKADDR_DL_STRUCT)) + getifaddrs(&ifap); + +- while(1) { +- if (ifap == NULL) break; +- if (strncmp(name, ifap -> ifa_name, IFNAMSIZ) == 0) { +- family = ifap -> ifa_addr -> sa_family; ++ for (ifa = ifap; ifa; ifa = ifa->ifa_next) { ++ if (strncmp(name, ifa->ifa_name, IFNAMSIZ) == 0) { ++ family = ifa->ifa_addr->sa_family; + if (family == AF_LINK) { +- sdl = (struct sockaddr_dl *) ifap->ifa_addr; ++ sdl = (struct sockaddr_dl *) ifa->ifa_addr; + haddr = sdl->sdl_data + sdl->sdl_nlen; + hlen = sdl->sdl_alen; + break; + } + } +- ifap = ifap -> ifa_next; + } +- freeifaddrs(ifap); + + s = hwaddr; + s[0] = '\0'; +@@ -608,6 +611,9 @@ if_hwaddr(sock, name, ...) + s += len; + } + } ++ ++ freeifaddrs(ifap); ++ + RETVAL = hwaddr; + #elif (defined(HAS_IOCTL) && defined(SIOCGIFHWADDR)) + bzero((void*)&ifr,sizeof(struct ifreq));