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

Re: ip tuntap del



On Fri, Sep 6, 2013 at 7:14 AM, Zenaan Harkness <zen@freedbms.net> wrote:


> Anyone know why ip tuntap del requires the "mode"?
>
> # ifconfig tapz
> tapz: error fetching interface information: Device not found
> # ip tuntap add mode tap tapz
> # ifconfig tapz
> tapz      Link encap:Ethernet  HWaddr 06:b8:f7:41:bf:08
>           BROADCAST MULTICAST  MTU:1500  Metric:1
>           RX packets:0 errors:0 dropped:0 overruns:0 frame:0
>           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
>           collisions:0 txqueuelen:500
>           RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
>
> # ip tuntap del tapz
> ioctl(TUNSETIFF): Invalid argument
> # ifconfig tapz
> tapz      Link encap:Ethernet  HWaddr 06:b8:f7:41:bf:08
>           BROADCAST MULTICAST  MTU:1500  Metric:1
>           RX packets:0 errors:0 dropped:0 overruns:0 frame:0
>           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
>           collisions:0 txqueuelen:500
>           RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
>
> # ip tuntap del mode tap tapz
> # ifconfig tapz
> tapz: error fetching interface information: Device not found
>
> We see that when deleting a tap device, we still have to include the
> mode. From a user perspective that ought to be superfluous. Perhaps it
> is some kernel driver optimization thing, which has not bee papered
> over by ip command. A minor point in the scheme of things I guess.
>
> So could the Usage output be made a little more accurate (possibly
> not, without duplicating it for each of add and del subcommands):
>
> # ip tuntap help
> Usage: ip tuntap { add | del } [ dev PHYS_DEV ]
>           [ mode { tun | tap } ] [ user USER ] [ group GROUP ]
>           [ one_queue ] [ pi ] [ vnet_hdr ]
>
> Where: USER  := { STRING | NUMBER }
>        GROUP := { STRING | NUMBER }

I came across this a while ago and meant to file a bug report because
the "usage" output doesn't correspond to the actual usage - and
didn't... :(



> Also, how can I find out what one_queue, pi and vnet_hdr options could be?

>From some very terse notes that I'd made (I mustn't have found much
via Google...):

one_queue: by default tuntap uses multiple queues (descriptors) to
parallelize the sending or receiving of packets

pi: provide packet information (default!)

vnet_hdr: allow sending and receiving large packets because tuntap is
in the kernel


Reply to: