次のように作成されたタップインターフェイスがあります。
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
複数のプロセスからタップ インターフェイスにアタッチするにはどうすればよいですか?