Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 19 Mar 2000 14:23:28 -0700 (MST)
From:      scott_long@btc.adaptec.com
To:        FreeBSD-gnats-submit@freebsd.org
Subject:   kern/17494: Two issues with the tun device
Message-ID:  <200003192123.OAA00442@ mindspring.com>

next in thread | raw e-mail | index | archive | help

>Number:         17494
>Category:       kern
>Synopsis:       Two problems with the tun device
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sun Mar 19 15:20:01 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     Scott Long
>Release:        FreeBSD 5.0-CURRENT i386
>Organization:
>Environment:

FreeBSD 5.0-CURRENT as of 3/18/00

>Description:
In the course of writing a simple GUI network monitor/dialup front-end, I have
come across a couple of quirks in the tunnel driver that don't seem to exist 
in other network drivers (ppp, sl, lo, ether).

1.  the ifnet structure for the tun device is not created at attach time like
it is for other network drivers.  Instead, it is created when the device is
opened, if it hasn't already been created in a previous open.  This behaviour
causes my program to not see the tun device unless a program like ppp(8) is
run first, which defeats one of the goals of this program: to control dialup
networking.  Comparing code in if_[tun|ppp|sl|lo].c shows that all but tun
create the ifnet structure from within their respective attach routine.  But
on the other hand, if_tun.c uses make_dev while the others do not.  Making
if_tun.c resemble the others is a trivial task, but I am not sure what would
be lost by eliminating make_dev (which requires a dev_t argument that attach
cannot supply, if I understand things correctly).

2.  when the tun interface is put into promiscuous mode (via tcpdump)
IFF_PROMISC is set as expected.  When tcpdump is exited and the bpf interface
is closed, the IFF_PROMISC flag is not unset.  On other interfaces this works
correctly.  I have not been able to figure this one out yet.


>How-To-Repeat:


>Fix:

As stated above, creating the ifnet struct in the attach vs open routine is
fairly trivial, but at the cost of make_dev.  I can supply a patch if
requested.


>Release-Note:
>Audit-Trail:
>Unformatted:


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200003192123.OAA00442>