pkgsrc-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: pkg/32929: net/openvpn fails to work with tap device



The following reply was made to PR pkg/32929; it has been noted by GNATS.

From: "Johnny C. Lam" <jlam%pkgsrc.org@localhost>
To: apb%cequrux.com@localhost
Cc: gnats-bugs%netbsd.org@localhost
Subject: Re: pkg/32929: net/openvpn fails to work with tap device
Date: Mon, 10 Apr 2006 04:26:38 +0000

 --SUOF0GtieIMvvwua
 Content-Type: text/plain; charset=us-ascii
 Content-Disposition: inline
 
 On Sat, Feb 25, 2006 at 04:25:01PM +0000, Alan Barrett wrote:
 > >Description:
 >      The net/openvpn package needs to be patched to support
 >      NetBSD's cloning tap device.
 > >How-To-Repeat:
 >      install openvpn-2.05.
 >      Configure it with "dev tap".
 >      Watch it fail.
 > >Fix:
 >      Apply appended patch.  Also bump PKGREVISION.
 
 I've applied your patch to openvpn-2.0.6, which is the current version
 of OpenVPN in pkgsrc, and I've verified that it does compile.  Could you
 verify that it still works?  For simplicity, I've attached a patch with
 the complete set of changes to the package.
 
        Thanks,
 
        -- Johnny Lam <jlam%pkgsrc.org@localhost>
 
 --SUOF0GtieIMvvwua
 Content-Type: text/plain; charset=us-ascii
 Content-Disposition: attachment; filename="openvpn.diff"
 
 Index: Makefile
 ===================================================================
 RCS file: /cvsroot/pkgsrc/net/openvpn/Makefile,v
 retrieving revision 1.16
 diff -u -r1.16 Makefile
 --- Makefile   5 Apr 2006 13:49:26 -0000       1.16
 +++ Makefile   10 Apr 2006 04:21:32 -0000
 @@ -2,6 +2,7 @@
  #
  
  DISTNAME=     openvpn-2.0.6
 +PKGREVISION=  1
  CATEGORIES=   net
  MASTER_SITES= http://openvpn.net/release/ \
                http://openvpn.net/release/old/
 Index: distinfo
 ===================================================================
 RCS file: /cvsroot/pkgsrc/net/openvpn/distinfo,v
 retrieving revision 1.7
 diff -u -r1.7 distinfo
 --- distinfo   5 Apr 2006 13:49:26 -0000       1.7
 +++ distinfo   10 Apr 2006 04:21:32 -0000
 @@ -3,3 +3,8 @@
  SHA1 (openvpn-2.0.6.tar.gz) = 046f3811831a06e4fbc9c64544faaecf04547ae5
  RMD160 (openvpn-2.0.6.tar.gz) = cf3cd807bb657baf317e896b57900958cf442a63
  Size (openvpn-2.0.6.tar.gz) = 664816 bytes
 +SHA1 (patch-ab) = 05c9df0a7a71cb1cfa4a2f132df02cac822ba3ba
 +SHA1 (patch-ac) = 7a225a0b88dcf0039cd40f72a10564c72f41b2f1
 +SHA1 (patch-ad) = ee577ad5c5621bbfa05d522e85e467e937929f6e
 +SHA1 (patch-ae) = b6f8f869b5c727120df8dd433e54ffe3537e0006
 +SHA1 (patch-af) = ae697790e648c4d351c8c99e21ff79a56c572ddf
 Index: patches/patch-ab
 ===================================================================
 RCS file: patches/patch-ab
 diff -N patches/patch-ab
 --- /dev/null  1 Jan 1970 00:00:00 -0000
 +++ patches/patch-ab   10 Apr 2006 04:21:32 -0000
 @@ -0,0 +1,15 @@
 +$NetBSD$
 +
 +--- syshead.h.orig    2005-12-08 15:57:49.000000000 -0500
 ++++ syshead.h
 +@@ -254,6 +254,10 @@
 + 
 + #ifdef TARGET_NETBSD
 + 
 ++#ifdef HAVE_NET_IF_TAP_H
 ++#include <net/if_tap.h>
 ++#endif
 ++
 + #ifdef HAVE_NET_IF_TUN_H
 + #include <net/if_tun.h>
 + #endif
 Index: patches/patch-ac
 ===================================================================
 RCS file: patches/patch-ac
 diff -N patches/patch-ac
 --- /dev/null  1 Jan 1970 00:00:00 -0000
 +++ patches/patch-ac   10 Apr 2006 04:21:32 -0000
 @@ -0,0 +1,43 @@
 +$NetBSD$
 +
 +--- tun.c.orig        2006-04-05 02:29:24.000000000 -0400
 ++++ tun.c
 +@@ -877,7 +877,37 @@ open_tun_generic (const char *dev, const
 +        if (dynamic && !has_digit(dev))
 +          {
 +            int i;
 +-           for (i = 0; i < 256; ++i)
 ++#if defined(TAPGIFNAME)
 ++           /*
 ++            * Perhaps we have a cloning device.  Try opening
 ++            * the device without any appended digits,
 ++            * and use ioctl(,TAPGIFNAME,) to get the resulting
 ++            * interface name.
 ++            */
 ++           openvpn_snprintf (tunname, sizeof (tunname), "/dev/%s", dev);
 ++           if ((tt->fd = open (tunname, O_RDWR)) > 0)
 ++             {
 ++               struct ifreq ifr;
 ++               if (ioctl (tt->fd, TAPGIFNAME, (void*)&ifr) < 0)
 ++                 {
 ++                   msg (D_READ_WRITE | M_ERRNO,
 ++                        "ioctl(,TAPGIFNAME,) failed for %s", tunname);
 ++                   close(tt->fd);
 ++                 }
 ++               else
 ++                 {
 ++                   strlcpy (dynamic_name, ifr.ifr_name,
 ++                            sizeof (dynamic_name));
 ++                   dynamic_opened = true;
 ++                   msg (M_INFO, "TUN/TAP dynamic interface %s opened",
 ++                        dynamic_name);
 ++                 }
 ++             }
 ++           if (!dynamic_opened)
 ++             msg (D_READ_WRITE | M_ERRNO, "Tried opening %s (failed)",
 ++                  tunname);
 ++#endif /* TAPGIFNAME */
 ++           for (i = 0; i < 256 && !dynamic_opened; ++i)
 +              {
 +                openvpn_snprintf (tunname, sizeof (tunname),
 +                                  "/dev/%s%d", dev, i);
 Index: patches/patch-ad
 ===================================================================
 RCS file: patches/patch-ad
 diff -N patches/patch-ad
 --- /dev/null  1 Jan 1970 00:00:00 -0000
 +++ patches/patch-ad   10 Apr 2006 04:21:32 -0000
 @@ -0,0 +1,14 @@
 +$NetBSD$
 +
 +--- config.h.in.orig  2006-04-05 04:03:07.000000000 -0400
 ++++ config.h.in
 +@@ -201,6 +201,9 @@
 + /* Define to 1 if you have the <net/if.h> header file. */
 + #undef HAVE_NET_IF_H
 + 
 ++/* Define to 1 if you have the <net/if_tap.h> header file. */
 ++#undef HAVE_NET_IF_TAP_H
 ++
 + /* Define to 1 if you have the <net/if_tun.h> header file. */
 + #undef HAVE_NET_IF_TUN_H
 + 
 Index: patches/patch-ae
 ===================================================================
 RCS file: patches/patch-ae
 diff -N patches/patch-ae
 --- /dev/null  1 Jan 1970 00:00:00 -0000
 +++ patches/patch-ae   10 Apr 2006 04:21:32 -0000
 @@ -0,0 +1,13 @@
 +$NetBSD$
 +
 +--- configure.ac.orig 2006-04-05 04:02:59.000000000 -0400
 ++++ configure.ac
 +@@ -266,7 +266,7 @@ AC_CHECK_HEADERS(sys/time.h sys/socket.h
 +               sys/mman.h fcntl.h sys/file.h stdlib.h stdint.h dnl
 +               stdarg.h unistd.h signal.h stdio.h string.h dnl
 +               strings.h ctype.h errno.h syslog.h pwd.h grp.h dnl
 +-              net/if_tun.h net/if.h stropts.h sys/sockio.h dnl
 ++              net/if_tap.h net/if_tun.h net/if.h stropts.h sys/sockio.h dnl
 +               netinet/in.h netinet/in_systm.h netinet/ip.h dnl
 +               netinet/if_ether.h netinet/tcp.h resolv.h arpa/inet.h dnl
 +               netdb.h sys/uio.h linux/if_tun.h linux/sockios.h dnl
 Index: patches/patch-af
 ===================================================================
 RCS file: patches/patch-af
 diff -N patches/patch-af
 --- /dev/null  1 Jan 1970 00:00:00 -0000
 +++ patches/patch-af   10 Apr 2006 04:21:32 -0000
 @@ -0,0 +1,13 @@
 +$NetBSD$
 +
 +--- configure.orig    2006-04-05 04:03:06.000000000 -0400
 ++++ configure
 +@@ -4881,7 +4881,7 @@ fi
 + 
 + 
 + 
 +-for ac_header in sys/time.h sys/socket.h sys/ioctl.h sys/stat.h              
 sys/mman.h fcntl.h sys/file.h stdlib.h stdint.h                 stdarg.h 
unistd.h signal.h stdio.h string.h             strings.h ctype.h errno.h 
syslog.h pwd.h grp.h                  net/if_tun.h net/if.h stropts.h 
sys/sockio.h            netinet/in.h netinet/in_systm.h netinet/ip.h            
netinet/if_ether.h netinet/tcp.h resolv.h arpa/inet.h           netdb.h 
sys/uio.h linux/if_tun.h linux/sockios.h                linux/types.h 
sys/poll.h sys/epoll.h
 ++for ac_header in sys/time.h sys/socket.h sys/ioctl.h sys/stat.h              
 sys/mman.h fcntl.h sys/file.h stdlib.h stdint.h                 stdarg.h 
unistd.h signal.h stdio.h string.h             strings.h ctype.h errno.h 
syslog.h pwd.h grp.h                  net/if_tap.h net/if_tun.h net/if.h 
stropts.h sys/sockio.h               netinet/in.h netinet/in_systm.h 
netinet/ip.h            netinet/if_ether.h netinet/tcp.h resolv.h arpa/inet.h   
        netdb.h sys/uio.h linux/if_tun.h linux/sockios.h                
linux/types.h sys/poll.h sys/epoll.h
 + do
 + as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
 + if eval "test \"\${$as_ac_Header+set}\" = set"; then
 
 --SUOF0GtieIMvvwua--
 



Home | Main Index | Thread Index | Old Index