Hi, Upstream released new version with part of our patch included, however it looks to me it was bad merge, so we still need to modify Interface.xs to make it compile :/
Otherwise it should be the same like p5-IO-Interface-1.06p1. It works for me and tiny regress also passes: ===> Regression tests for p5-IO-Interface-1.07 PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t t/basic.t ... ok t/simple.t .. ok All tests successful. Files=2, Tests=16, 0 wallclock secs ( 0.01 usr 0.03 sys + 0.10 cusr 0.03 csys = 0.17 CPU) Result: PASS I've contacted the author, but didn't get any reply yet. Index: Makefile =================================================================== RCS file: /cvs/ports/net/p5-IO-Interface/Makefile,v retrieving revision 1.19 diff -u -r1.19 Makefile --- Makefile 14 Jun 2014 23:25:42 -0000 1.19 +++ Makefile 16 Nov 2014 23:45:43 -0000 @@ -5,8 +5,7 @@ COMMENT= module for access to network card configuration information MODULES= cpan -DISTNAME= IO-Interface-1.06 -REVISION= 1 +DISTNAME= IO-Interface-1.07 CATEGORIES= net MAINTAINER= Kevin Lo <ke...@openbsd.org> Index: distinfo =================================================================== RCS file: /cvs/ports/net/p5-IO-Interface/distinfo,v retrieving revision 1.7 diff -u -r1.7 distinfo --- distinfo 25 Jul 2011 14:22:42 -0000 1.7 +++ distinfo 16 Nov 2014 23:45:43 -0000 @@ -1,5 +1,2 @@ -MD5 (IO-Interface-1.06.tar.gz) = fXfQ8j7n9XcQn8Xw5n4KSw== -RMD160 (IO-Interface-1.06.tar.gz) = 8Go0QDlu7qfLCZJ3eFcb2TzxA0Q= -SHA1 (IO-Interface-1.06.tar.gz) = 13XoQDSHyjrYavnbOYStGbDAyZc= -SHA256 (IO-Interface-1.06.tar.gz) = bAe8nOvOwuxYpuaWmhTI1PSVmGkzLVPqs7ZQeVQc33c= -SIZE (IO-Interface-1.06.tar.gz) = 10339 +SHA256 (IO-Interface-1.07.tar.gz) = YBYvnepo0ETmG6DpCgGPHgL2VN7PNDII2cwsbSsQglg= +SIZE (IO-Interface-1.07.tar.gz) = 10324 Index: patches/patch-Interface_xs =================================================================== RCS file: /cvs/ports/net/p5-IO-Interface/patches/patch-Interface_xs,v retrieving revision 1.2 diff -u -r1.2 patch-Interface_xs --- patches/patch-Interface_xs 30 Aug 2010 03:48:17 -0000 1.2 +++ patches/patch-Interface_xs 16 Nov 2014 23:45:43 -0000 @@ -3,12 +3,11 @@ 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() +Bad merge of previous patch. Upstream contacted. $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 +--- Interface.xs.orig Mon Jun 9 02:28:48 2014 ++++ Interface.xs Sun Nov 16 15:06:08 2014 @@ -2,6 +2,9 @@ #include "perl.h" #include "XSUB.h" @@ -29,31 +28,15 @@ 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; - #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, ...) +@@ -582,7 +588,6 @@ 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; + for (ifa = ifap; ifa; ifa = ifa->ifa_next) { + if (strncmp(name, ifa->ifa_name, IFNAMSIZ) == 0) { + family = ifa->ifa_addr->sa_family; +@@ -593,9 +598,7 @@ if_hwaddr(sock, name, ...) break; } } @@ -63,13 +46,3 @@ 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)); -- best regards q#