On Thu, Nov 29, 2012 at 01:33:47PM +0100, Reyk Floeter wrote:
> On Thu, Nov 29, 2012 at 10:59 AM, Mike Belopuhov <[email protected]> wrote:
> >> But currently /dev/tunN is usable from any programming language that
> >> that can do reads and writes.  With Reyk's changes you need to do an
> >> ioctl even for basic usage, which is at best quirky in languages other
> >> than C/C++.  That feels like a step backward to me.
> >
> > sure, we can totally leave tun for legacy use in the shell scripts.
> > so i guess reyk should go ahead and implement a dynamic tun interface
> > (dun?) with whatever semantics we need and want.
> 
> Or even better duh? ;-) I wrote this diff because I wanted to
> experiment with clonable device nodes, I still don't like the fact
> that you have to MAKEDEV a device per dynamic interface, and because
> it adds some extra flexibility. But it doesn't have to go anywhere, I
> didn't even waste much time with writing it yesterday in the
> afternoon.
> 
> btw., I like C and it is still my favorite language (sorry, CS
> people). But it shouldn't be a problem to do simple ioctls with most
> other languages except shell scripts.
> 
> #!/usr/bin/perl
> require "sys/ioctl.ph";
> $TUNSIFUNIT = _IOC(&IOC_INOUT, ord('t'), 90, 4);
> open(TUN0, "+</dev/tun0") or die "open";
> ioctl(TUN0, $TUNSIFUNIT, $unit = pack("i", -1)) or die "ioctl $!";
> print "Returned: tun".unpack("i", $unit)."\n";
> close(TUN0);
Any decent language will have ioctl support... 

Proof: perl does :)

Reply via email to