Provided by: manpages-ja_0.5.0.0.20221215+dfsg-1_all bug

名前

       ddp - Linux での AppleTalk プロトコルの実装

書式

       #include <sys/socket.h>
       #include <netatalk/at.h>

       ddp_socket = socket(AF_APPLETALK, SOCK_DGRAM, 0);
       raw_socket = socket(AF_APPLETALK, SOCK_RAW, protocol);

説明

       Linux は Inside AppleTalk に記述されている AppleTalk プロトコルを実装している。 カーネルに
       あるのは DDP 層と AARP だけである。これらは netatalk  プロトコルライブラリを通して利用され
       るように設計されている。  このページは  DDP  層を直接利用したいユーザーのために、 インター
       フェースを記述したものである。

       AppleTalk  とユーザープログラムとの通信には、  BSD  互換のソケットインターフェースを利用す
       る。 ソケットに関するより詳しい情報は socket(7)  を見よ。

       AppleTalk ソケットは、 ソケットファミリーの引数に AF_APPLETALK を指定して socket(2) 関数を
       呼び出すことによって生成される。指定できるソケットタイプは、 ddp  ソケットをオープンする場
       合には SOCK_DGRAMraw ソケットをオープンする場合には SOCK_RAW である。 protocol は送受信
       される AppleTalk プロトコルである。 ソケットタイプに SOCK_RAW を指定した場合は、プロトコル
       に ATPROTO_DDP を指定しなければならない。

       raw ソケットは実効ユーザー ID が 0 のプロセスか、 CAT_NEW_RAW 権限を持ったプロセスでないと
       オープンできない。

   アドレスのフォーマット
       AppleTalk ソケットアドレスはネットワーク番号、 ノード番号、 ポート番号の組み合わせで定義さ
       れる。

           struct at_addr {
               unsigned short s_net;
               unsigned char  s_node;
           };

           struct sockaddr_atalk {
               sa_family_t    sat_family;    /* address family */
               unsigned char  sat_port;      /* port */
               struct at_addr sat_addr;      /* net/node */
           };

       sat_family は常に AF_APPLETALK に設定する。 sat_port はポートを与える。ポート番号が 129 以
       下のポートは 「予約ポート (reserved port)」 と呼ばれる。実効ユーザー ID  が  0  のプロセス
       か、 CAP_NET_BIND_SERVICE 権限を持つプロセスだけが、このようなソケットを bind(2)  できる。
       sat_addr はホストアドレスである。 struct at_addr のメンバー s_net にはホストのネットワーク
       をネットワークバイトオーダーで与える。値   AT_ANYNET  はワイルドカードで、「このネットワー
       ク」も暗黙のうちに含まれる。 struct at_addr のメンバー s_node にはホストのノード番号を与え
       る。値       AT_ANYNODE       はワイルドカードで、「このノード」も暗黙のうちに含まれる。値
       ATADDR_BCAST はローカルなブロードキャストアドレスである。

   ソケットオプション
       プロトコル固有のソケットオプションはない。

   /proc インターフェース
       Appletalk のグローバルパラメーターのいくつかは、 /proc  インターフェースを通して設定するこ
       とができる。  これらのパラメーターには、 /proc/sys/net/atalk/ ディレクトリ内のファイルの読
       み書きでアクセスできる。

       aarp-expiry-time
              AARP キャッシュエントリーを破棄するまでのタイムインターバル (秒単位)。

       aarp-resolve-time
              AARP キャッシュエントリーが解決されるまでのタイムインターバル (秒単位)。

       aarp-retransmit-limit
              AARP クエリーの最大再送信回数。この回数を越えると、 そのノードは dead  であるとみな
              される。

       aarp-tick-time
              タイマー動作する AARP のタイマーレート (秒単位)

       デフォルトの値で仕様にマッチしているので、 変更する必要は全くないはずである。

   ioctl
       socket(7)  に記述されているすべての ioctl が DDP にも適用される。

エラー

       EACCES ユーザーが行おうとした操作に必要な権限を持っていない。 broadcast フラグをセットせず
              にブロードキャストアドレスへ送信を行おうとした、  実効ユーザー  ID  が  0  でなく、
              CAP_NET_BIND_SERVICE 権限のないプロセスで特権ポートをバインドしようとした、などが考
              えられる。

       EADDRINUSE
              既に使用されているアドレスにバインドしようとした。

       EADDRNOTAVAIL
              存在しないインターフェースが要求された。または 要求されたソースアドレスがローカルで
              ない。

       EAGAIN 非ブロッキングソケットに対してブロックする操作を行った。

       EALREADY
              非ブロッキングソケットに対する接続操作が既に実行中である。

       ECONNABORTED
              accept(2)  の途中で接続がクローズされた。

       EHOSTUNREACH
              行き先アドレスにマッチするエントリーがルーティングテーブルにない。

       EINVAL 渡した引数が不正。

       EISCONN
              接続済みのソケットに対して connect(2)  が呼ばれた。

       EMSGSIZE
              データグラムが DDP MTU より大きい。

       ENODEV ネットワークデバイスがない。あるいは IP を送ることができない。

       ENOENT パケットが到着していないソケットに対して SIOCGSTAMP が呼ばれた。

       ENOMEMENOBUFS
              メモリーが足りない。

       ENOPKG カーネルサブシステムが設定されていない。

       ENOPROTOOPTEOPNOTSUPP
              無効なソケットオプションが渡された。

       ENOTCONN
              接続されていないソケットに対して、   接続状態でしか定義されていない操作を行おうとし
              た。

       EPERM  高い優先度に設定したり、設定を変更したり、 指定したプロセスやグループにシグナルを送
              るのに必要な権限を ユーザーが持っていない。

       EPIPE  接続が接続相手によって、予期しないやり方でクローズまたはシャットダウンされた。

       ESOCKTNOSUPPORT
              ソケットが設定されていない。または未知のソケットタイプが要求された。

バージョン

       AppleTalk  は Linux 2.0 以降でサポートされている。 /proc インターフェースは Linux 2.2 以降
       に存在する。

注意

       SO_BROADCAST オプションを用いる時には慎重の上にも慎重になってほしい。 Linux ではこれに特権
       を必要としない。 不注意にブロードキャストアドレスに送信を行うと、 ネットワークの状態が簡単
       に変更されてしまう。

   移植性
       基本的な Appletalk ソケットインターフェースは BSD 由来のシステムにおける netatalk と互換性
       がある。多くの    BSD    システムでは、   ブロードキャストフレームを送信しようとしたときの
       SO_BROADCAST のチェックに失敗する。これは互換性の問題となるかもしれない。

       raw ソケットモードは Linux 独特のもので、もう一方の実装である CAP パッケージや、 Appletalk
       モニタツールをより簡単に実装できるようになる。

バグ

       エラーの値がまったく首尾一貫していない。

       ルーティングテーブル、 デバイス、 AARP テーブル、 その他のデバイスを設定するために用いられ
       る ioctl がまだ記述されていない。

関連項目

       recvmsg(2), sendmsg(2), capabilities(7), socket(7)

この文書について

       この man ページは Linux man-pages プロジェクトのリリース 5.10 の一部である。プロジェクトの
       説明とバグ報告に関する情報は https://www.kernel.org/doc/man-pages/ に書かれている。