[Armadillo:04609] Re: TUN/TAPのインストール方法をお教えください。
joshua45
email@hidden
2009年 9月 26日 (土) 15:54:09 JST
皆様
まず、どうもディバイス名はtun0ではなくtunl0となる
ようです。これでifconfig は出来る状態になりました。
これは、mknod等をしなくても可能です。
1. なにもしないでTUNを使ったアプリケーションをどうささ
せた場合
open("/dev/net/tun",O_RDWR);
で、
No such file or directory ...
となります。
2. 手動で/dev/net/tunを作る方法
しかし今度はアプリケーションからopenが出来ません。ド
キュメンテーションにある通り手動で、
mknod /dev/net/tun c 10 100
を行ってみましたところ、openは成功しますが、その後の
ioctlでInvalid argument になります。x86 linux上で
はうまくいっているコードなので、ioctlの引数がarmと他の
linuxで異なるとかあるのかどうか....。
3. udevを使う方法
以前のyashiさんのメールに従って、udevに/dev/
net(ディレクトリ)と/dev/net/tun を追加しました。
/dev/net d 755 0 0 - - -
- -
/dev/net/tun c 755 0 0 10 200 -
- -
これでカーネルとromfsを再ロードしました。なぜかカーネルと
romfsのセットを2セットロードするとちゃんと見えるようになりまし
た....。
これでアプリケーションを動かすとopenのところで、
No such device
というエラーが出ます。No such file or directory とはな
らないのは、/dev/net/tunが一応デバイスとして登録されて
いるということなのか?
動作がよくわからないですね。サポート行きでしょうか。
森 ひろひさ
On 2009/09/24, at 15:25, Yasushi SHOJI wrote:
> At Thu, 24 Sep 2009 11:45:29 +0900,
> SAITOH Akinori wrote:
>>
>> Yasushi SHOJI さんは書きました:
>>> At Wed, 23 Sep 2009 17:36:23 +0900,
>>> Yoshihiro Imura wrote:
>>>> もし、デバイス確認が必要ならば、メジャー番号とマイナー番号が
>>>> 固定でソースに記述されているならば、mknodで作成し
>>>> ても良いとは
>>>> 思いますがarm-linuxではどれが正しい方法であるかは
>>>> 残念ながら知りません。
>>
>> linuxには詳しくないのですが,ifconfigは/devの
>> デバイスファイルを
>> 経由してアクセスしているわけではなかったのでは?とおもいます.
>
> その通りです。socketに対して ioctl(2)の発行にな
> ります。
>
>> ifconfig tun0 がSIOCSIFADDR: No such device に
>> なるとしたら,それは本当のデバイスがattachされていない
>> のであって,mknodで解決するような問題ではない・・
>> と思いますが.
>
> カーネルドキュメント(Documentation/networking/
> tuntap.txt)によると
>
> 1. Description
> TUN/TAP provides packet reception and transmission for user space
> programs.
> It can be seen as a simple Point-to-Point or Ethernet device, which,
> instead of receiving packets from physical media, receives them from
> user space program and instead of sending packets via physical media
> writes them to the user space program.
>
> In order to use the driver a program has to open /dev/net/tun and
> issue a
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> corresponding ioctl() to register a network device with the kernel.
> A network
> device will appear as tunXX or tapXX, depending on the options
> chosen. When
> the program closes the file descriptor, the network device and all
> corresponding routes will disappear.
>
> ということなので /dev/net/tunを open(2)しないと
> ifconfigで見える状態に
> ならないはずです。なので、mknodの方が先ですね。
> --
> yashi
> _______________________________________________
> armadillo mailing list
> email@hidden
> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo
>
armadillo メーリングリストの案内