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#

Reply via email to