[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 メーリングリストの案内