2

私の目的は、 を作成して仮想ワイヤレス インターフェイスを作成し、そのインターフェイスにリスナーを接続することです。Cプログラムを使用してこれを実行しようとしています。

これまでのところ、次の方法で仮想インターフェイスを作成できました。

  • Linux iw コマンドの使用: `

sudo iw phy phy0 インターフェイスに mySta1 タイプ ステーションを追加

しかし、Cプログラムを使用して同じことを行うライブラリを見つけることができませんでした.

char tun_name[IFNAMSIZ];
strcpy(tun_name, "MyTun");
tunfd = tun_alloc(tun_name, IFF_TUN | IFF_NO_PI);

tun_alloc は、ioctl を使用してインターフェイスを作成する関数です。

ioctl(fd, TUNSETIFF, (void *) &ifr)

ただし、このインターフェイスにはワイヤレス拡張機能はありません

インターフェイスでリッスンする場合:

nread = read(tunfd,buffer,sizeof(buffer));

ただし、これは、自分のプログラムまたは openvpn などのプログラムを使用して作成した tun デバイスでのみ機能します。wlan0 などの他のインターフェイスで使用すると、ioctl で「引数が無効です」というエラーが表示される

問題に対する私のアプローチは正しいですか? これを達成する他の方法はありますか?次のことを知りたい:

  1. 「iw add interface」コマンドで作成されたデバイスに tun デバイスを接続する方法はありますか?
  2. 仮想ワイヤレス tun/tap インターフェイスを作成する方法や、既存の tun インターフェイスのタイプをワイヤレスに変更する方法はありますか?
4

2 に答える 2

0

このための既存のライブラリについては知りません。コードからこれを機能させることが唯一の目的である場合は、これに従ってみませんか。

system("iw phy phy0 interface add mySta1 type station");

明らかに醜いですが、それはその目的を果たします。

于 2013-11-09T07:28:27.243 に答える