Bug 55890

Summary: Error: bundle_Create: ioctl(TUNSIFMODE): Device busy
Product: Base System Reporter: RaveBoy <RaveBoy>
Component: kernAssignee: Brian Somers <brian>
Status: Closed FIXED    
Severity: Affects Only Me    
Priority: Normal    
Version: 5.1-RELEASE   
Hardware: Any   
OS: Any   

Description RaveBoy 2003-08-23 10:40:15 UTC
         I need to have two tunnel devices. One is for internet connection,
        wich is PPPoE, the other one is for a PPPoSSH session - to connect
        to my company via a VPN. During startup, I enabled ppp to dial to
        Internet in the rc.conf script.

        # PPPoE for DSL
        ppp_enable=YES
        ppp_mode=ddial
        ppp_nat="no"
        ppp_profile="arcor-dsl"
        ppp_user="root"

        When I want to connect to my company I simply start ppp. PPP then
        answers with an error message which kills my PPPoE session to the
        Internet. The error messages logged by /var/log/messages
        Aug 20 17:23:40 circa ppp[935]: Error: bundle_Create: ioctl(TUNSIFMODE): Device busy
        Aug 20 17:23:45 circa ppp[225]: tun0: Error: ip_Input: deflink: wrote 56, got 0
        Aug 20 17:23:47 circa last message repeated 3 times
        Aug 20 17:23:47 circa ppp[225]: tun0: Warning: iface rm: ioctl(SIOCDIFADDR, 213.23.24.183 -> 145.253.4.4): Can't assign reques
        ted address

        I then have to kill my ppp, start the internet again and then open
        the PPPoSSH session. After the first fail, everything is fine. So I
        have to go through this procedure only once - just after reboot.

Fix: 

Okay, here are the commands from the shell

        ppp
        quit
        ps ax|grep ppp
         941  ??  Ss     0:00.61 /usr/sbin/ppp -quiet -ddial arcor-dsl
        kill 941
        /usr/sbin/ppp -quiet -ddial arcor-dsl
        ppp
        Working in interactive mode
        Using interface: tun1
        dial sparta
How-To-Repeat:         To have a full documentation, here is my ppp.conf
#
# ppp.conf: PPPoE configuration
#

default:
 set log phase tun

 # download /etc/resolv.conf
 #enable dns

arcor-dsl:
 # PPP over Ethernet
 set device PPPoE:rl0
 set speed sync
 set mru 1492
 set mtu 1492
 set ctsrts off

 # monitor line quality
 enable lqr

 # log just a bit
 set log phase tun

 # insert default route upon connection
 add default HISADDR

 # User / Pass
 set authname * (changed for report)
 set authkey  * (changed for report)

sparta:
 set device !/etc/ppp/sparta
 set speed 115200
 set mtu 800
 allow users root hannes raveboy
 set timeout 0
 set log phase chat connect lcp ipcp command
 set dial
 set login
 set ifaddr 192.168.3.1 192.168.3.2
 set server /var/tmp/loop "" 0177

        And the "/etc/ppp/sparta" file
        #!/bin/sh
exec ssh -C -c blowfish raveboy@82.**.**.77 -i ~/.ssh/raveboy\@sparta.key '/usr/sbin/ppp -direct scheme'
        (IP Changed, becaus I don't want to show it to public!)
Comment 1 Gregory Bond 2003-08-25 00:55:50 UTC
I don't know how much help this is, but I do exactly the same thing and have no 
problems with the SSH link interfering with the ADSL link.

Are you running out of tun devices? (Or are they auto-cloned now?)
Comment 2 Andre Oppermann freebsd_committer freebsd_triage 2003-12-27 16:54:17 UTC
Responsible Changed
From-To: freebsd-bugs->brian

Assign to brian as he the ppp master.
Comment 3 Brian Somers freebsd_committer freebsd_triage 2004-06-29 15:21:06 UTC
State Changed
From-To: open->closed

No feedback from the originator. 

I find it bizarre that this would happen, and then resolve itself when 
the two processes are restarted.  The only way two ppp instances can 
affect eachother is if they end up with duplicate endpoint discriminators 
in multilink mode. 

Here it seems as if both processes are getting the same tun descriptor, 
but that shouldn't be possible. 

If the problem still persists, please let me know and supply the requested 
logs.