On Sunday 21 December 2008, Dave wrote:
> ...
>
> > No, I don't need any modification. I know, that the pre-built
> > one works with
> > openvpn.
> > But if I start the Cygwin shell there's no /dev/tun. Hence, I
> > thought that I
> > have to compile and install it from source.
> > But maybe I need another method (than /dev/tun) to access the
> > driver on
> > Windows. I tried to find the right code parts within the
> > Opnevpn source but
> > unfortunately I didn't know where to look...the code base
> > isn't small ;)
>
> ...
>
> > hidden services. That's why I use the TUN/TAP device. It
> > works very well on
> > Linux und other Unixoids but now I'd like to port it to
> > Windows. My biggest
> > problem seems to be this TUN/TAP driver, hence my posting ;)
> > Maybe you could give me some hints.
>
> Here's some hints:
> *  the TAP usage for Windows is quite different than for the Unices.  The
> work is done in tap.c.
> *  In Windows, ioctls are used for configuration and control, and
> ReadFile() and WriteFile() are used for io
> *  there is no /dev/tun in Windows -- even under Cygwin's emulation.  You
> will need to be familiar with how the Windows object namespace works, and
> the filename for the device will be something like
> \\.\Global\{ECFBAB2D-479B-4FE8-87B1-A66FC8DB0EF5}.tap
> the funky 'filename' is the GUID of the driver instance, and is not a
> constant installation-to-installation.  Fortunately all the code to figure
> that stuff out is tun.c as well.
> *  the Windows mechanism is implemented via an asynchronous IO mechanism
> called 'overlapped io'.  You'll need to be familiar with this mechanism to
> make heads-or-tails of what's going on, but short story is that WriteFile
> and ReadFile don't block as you might usually expect, but rather return
> immediately.  The request is queued to be completed in the kernel later.
> When they are completed an 'event' is signaled, which can be waited upon,
> which indicates data is available or that the write completed (I believe
> that Writes complete immediately in this implementation and are effectively
> synchronous, but reads are not).
>
> Other than that, it is fairly straightforward:  open the device, configure
> the device-specific parameters, and read/write packets to it to your
> heart's content.
>
> -Dave

Wow, thanks a lot!
That sounds great. I'll immediately try those things.

Thanks,
Bernhard

Attachment: signature.asc
Description: This is a digitally signed message part.

Reply via email to