0

次のように作成されたタップインターフェイスがあります。

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

tap0次に、 Python と C++ で記述された別のプログラムを使用することにアタッチします。

パイソン:

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 に 2 回アタッチしようとすると、次のようになります。

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 

複数のプロセスからタップ インターフェイスにアタッチするにはどうすればよいですか?

4

0 に答える 0