|
HOME > Linux Tips ( 目次 ) > Linux コマンド 一覧表 > d > ddp - 約束事その他の説明 ddp - 約束事その他の説明 - Linux コマンド集 一覧表名前ddp - Linux での AppleTalk プロトコルの実装 書式
#include <sys/socket.h>
説明Linux は "Inside Appletalk" に記述されている Appletalk プロトコルを実装している。 カーネルにあるのは DDP 層と AARP だけである。これらは netatalk プロトコルライブラリを通して利用されるように設計されている。 このページは DDP 層を直接利用したいユーザーのために、 インターフェースを記述したものである。 Appletalk とユーザープログラムとの通信には、 BSD 互換のソケットインターフェースを利用する。 ソケットに関するより詳しい情報は socket (7) を見よ。 Appletalk ソケットは、 ソケットファミリーの引数に PF_APPLETALK を指定して socket (2) 関数を呼び出すことによって生成される。指定できるソケットタイプは、 ddp ソケットをオープンする場合には SOCK_DGRAM 、 raw ソケットをオープンする場合には SOCK_RAW である。 protocol は送受信される Appletalk プロトコルである。 ソケットタイプに SOCK_RAW を指定した場合は、プロトコルに ATPROTO_DDP を指定しなければならない。 raw ソケットは実効ユーザー ID が 0 のプロセスか、 CAT_NEW_RAW 権限を持ったプロセスでないとオープンできない。 アドレスのフォーマットAppletalk ソケットアドレスはネットワーク番号・ノード番号・ポート番号の 組み合わせで定義される。 struct at_addr {
u_short s_net;
u_char s_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 はローカルなブロードキャストアドレスである。 ソケットオプションプロトコル固有のソケットオプションはない。 SYSCTLAppletalk のグローバルパラメータのいくつかは、 sysctl を通して設定することができる。 これらの sysctl へアクセスするには、 proc/sys/net/atalk/* ファイルを読み書きする方法と、インターフェースに対して sysctl (2) を用いる方法がある。
IOCTLsocket (7) に記述されているすべての ioctl が ddp にも適用される。 注意SO_BROADCAST オプションを用いる時には慎重の上にも慎重になってほしい。 Linux ではこれに特権を必要としない。 不注意にブロードキャストアドレスに送信を行うと、 ネットワークの状態が簡単に変更されてしまう。 バージョンAppletalk は Linux 2.0 以降でサポートされている。 sysctl インターフェースは Linux 2.2 から新たに導入された。 エラー
移植性基本的な Appletalk ソケットインターフェースは BSD 由来のシステムにおける netatalk と互換性がある。多くの BSD システムでは、 ブロードキャストフレームを送信しようとしたときの SO_BROADCAST のチェックに失敗する。これは互換性の問題となるかもしれない。 raw ソケットモードは Linux 独特のもので、もう一方の実装である CAP パッケージや、 Appletalk モニタツールをより簡単に実装できるようになる。 バグエラーの値がまったく首尾一貫していない。 ルーティングテーブル・デバイス・ AARP テーブル・その他のデバイスを 設定するために用いられる ioctl がまだ記述されていない。 関連項目
recvmsg
(2),
sendmsg
(2),
capabilities
(7),
socket
(7)
|
|