如何从两个不同的进程连接到TAP接口

时间:2014-11-11 06:15:58

标签: python linux networking ioctl tun

我有一个这样创建的点击界面:

ip tuntap add dev tap0 mode tap user myusername
ip link set tap0 up

然后我使用python和另一个用C ++编写的程序附加到tap0

的Python:

def tapAlloc(tapname, mode):
    tap = os.open('/dev/net/tun', mode | os.O_NONBLOCK)
    ifr = struct.pack('16sH', tapname, IFF_TAP | IFF_NO_PI)
    fcntl.ioctl(tap, TUNSETIFF, ifr)
    return tap

(仅用于模拟)如果我尝试连接tap0两次:

f1 = tapAlloc('tap0', os.O_RDWR) 
f2 = tapAlloc('tap0', os.O_RDWR) 

我为f2运行此错误时收到错误:

fcntl.ioctl(tap, TUNSETIFF, ifr)
IOError: [Errno 16] Device or resource busy 

如何从多个进程附加到tap界面?

0 个答案:

没有答案