2 .\" Don't change the line above. it tells man that tbl is needed.
3 .\" This man page is Copyright (C) 1999 Andi Kleen <ak@muc.de>.
4 .\" Permission is granted to distribute possibly modified copies
5 .\" of this page provided the header is included verbatim,
6 .\" and in case of nontrivial modification author and date
7 .\" of the modification is added to the header.
8 .\" $Id: ip.7,v 1.19 2000/12/20 18:10:31 ak Exp $
10 .\" Japanese Version Copyright (c) 1999 NAKANO Takeo all rights reserved.
11 .\" Translated 1999-12-06, NAKANO Takeo <nakano@apm.seikei.ac.jp>
12 .\" Updated 2001-02-14, Kentaro Shirakata <argrath@ub32.org>
13 .\" Updated 2001-04-04, Yuichi SATO <ysato@h4.dion.ne.jp>
14 .\" Updated & Modified 2003-10-16, Yuichi SATO <ysato444@yahoo.co.jp>
15 .\" Updated & Modified 2005-01-22, Yuichi SATO
16 .\" Updated & Modified 2005-09-10, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
17 .\" Updated & Modified 2005-10-06, Akihiro MOTOKI
18 .\" Updated 2007-01-05, Akihiro MOTOKI, Catch up to LDP man-pages 2.43
19 .\" Updated 2007-05-28, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v2.48
20 .\" Updated 2008-12-26, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v3.14
22 .\"WORD ancillary message 補助メッセージ
23 .\"WORD ... oriented 〜指向の
26 .\"WORD drop(ped) (パケットを) 落とす、(受動の場合) 到着しない
29 .TH IP 7 2009-02-28 "Linux" "Linux Programmer's Manual"
31 ip \- Linux IPv4 プロトコルの実装
33 .B #include <sys/socket.h>
35 .\" .B #include <net/netinet.h> -- does not exist anymore
36 .\" .B #include <linux/errqueue.h> -- never include <linux/foo.h>
37 .B #include <netinet/in.h>
39 .B #include <netinet/ip.h> \fR/* 上記のスーパーセット */
41 .IB tcp_socket " = socket(AF_INET, SOCK_STREAM, 0);"
43 .IB udp_socket " = socket(AF_INET, SOCK_DGRAM, 0);"
45 .IB raw_socket " = socket(AF_INET, SOCK_RAW, " protocol ");"
47 Linux は RFC\ 791 と RFC\ 1122 で記述されている
48 Internet Protocol, version 4 を実装している。
50 には RFC\ 1112 に準拠した level 2 マルチキャストの実装が含まれている。
51 またパケットフィルタ機能を含む IP ルーターも実装されている。
52 .\" FIXME has someone verified that 2.1 is really 1812 compliant?
54 プログラミング・インターフェースは BSD ソケットと互換である。
62 .B "socket(AF_INET, socket_type, protocol)"
77 は送受信される IP ヘッダに書かれる IP プロトコルである。
85 に対しては、 RFC\ 1700 で定義されている有効な IANA IP プロトコルを、
86 割り当てられている番号で指定することができる。
88 .\" FIXME ip current does an autobind in listen, but I'm not sure
89 .\" if that should be documented.
90 あるプロセスで、やってくるパケットを受信したり
92 そのプロセスはローカルなインターフェースアドレスに、
94 を用いてソケットをバインドしなければならない。
95 あるローカルな「アドレスとポート」のペアに対してバインドできる
100 が指定されていた場合は、ソケットはローカルなインターフェースの
105 がバインドされていないソケットでコールされると、
106 そのソケットは自動的にローカルなアドレスを
108 にセットし、空いているポートをランダムに選んでバインドする。
112 バインドされていた TCP ローカルソケットアドレスは
113 クローズされた後しばらくの間使えなくなる。
115 フラグを使うと TCP の信頼性を低下させるので、
118 IP ソケットアドレスは、 IP インターフェースアドレスと
119 16ビットのポート番号の組み合わせで定義される。
120 IP プロトコルそのものはポート番号を扱わない。
133 sa_family_t sin_family; /* address family: AF_INET */
134 in_port_t sin_port; /* port in network byte order */
135 struct in_addr sin_addr; /* internet address */
138 /* Internet address. */
140 uint32_t s_addr; /* address in network byte order */
148 をセットする。これは必須である。 Linux 2.2 では、このセットを忘れると
153 にはポート番号をネットワークバイトオーダーで指定する。
155 .I "特権ポート (privileged ports)"
157 .RI ( "予約ポート (reserved ports)"
160 .RB ( CAP_NET_BIND_SERVICE
161 ケーパビリティを持つプロセス) 以外のプロセスは、これらのポートには
163 できない。 IPv4 プロトコルそのものにはポートに関する概念がない。
168 といった、上位のプロトコルにおいて実装される。
175 メンバには、ホストのインターフェースアドレスを
184 .BR inet_makeaddr (3)
185 を用いる、あるいは名前解決機構 (name resolver)
186 を直接用いる、のどれかで設定すべきである。
187 .RB ( gethostbyname (3)
190 IPv4 アドレスには、ユニキャストアドレス、
191 ブロードキャストアドレス、マルチキャストアドレスがある。
192 ユニキャストアドレスは、あるホストの一つのアドレスを指定する。
193 ブロードキャストアドレスは、あるネットワーク上の全てのホストを指定する。
194 マルチキャストアドレスは、マルチキャストグループに所属する
195 全てのホストを指定する。ブロードキャストアドレスへのデータグラムは、
197 ソケットフラグがセットされていないと送信・受信できない。
198 現在の実装では、接続指向のソケットにはユニキャストアドレスしか使えない。
199 .\" Leave a loophole for XTP @)
201 アドレスとポートは常にネットワークバイトオーダーで格納されることに注意せよ。
205 標準ライブラリにあるアドレス/ポート操作関数は
206 すべてネットワークバイトオーダーで動作する。
210 .BR INADDR_LOOPBACK (127.0.0.1)
211 loopback デバイスを通して常にローカルなホストを参照する。
213 .BR INADDR_ANY (0.0.0.0)
216 .BR INADDR_BROADCAST (255.255.255.255)
217 任意のホスト。歴史的理由から、バインドの際には
221 IP にはプロトコル固有のソケットオプションがいくつか存在し、
225 で取得ができる。 IP のソケットオプションレベルは
227 .\" Linux では SOL_IP も可
229 ブール整数値のフラグでは、 0 は偽、それ以外は真を意味する。
231 .\" FIXME Document IP_FREEBIND
233 .\" Since Linux 2.4.0-test10
236 .BR IP_ADD_MEMBERSHIP " (Linux 1.2 以降)"
245 struct in_addr imr_multiaddr; /* IP multicast group
247 struct in_addr imr_address; /* IP address of local
249 int imr_ifindex; /* interface index */
255 には、アプリケーションが参加または撤退したい
257 指定するアドレスは有効なマルチキャストアドレスでなければならない
258 .\" (つまり、224.0.0.0-239.255.255.255 の範囲内)
265 はシステムがマルチキャストグループに参加する際に用いる
266 ローカルなインターフェースのアドレスである。
269 であった場合には、適切なインターフェースがシステムによって選択される。
273 グループに参加/撤退するインターフェースの interface index である。
274 どのインターフェースでもよい場合は 0 にする。
277 は Linux 2.2 以降でのみ利用可能である。
280 構造体 (Linux 1.2 以降で存在する) もまだサポートされている。
289 .BR IP_DROP_MEMBERSHIP " (Linux 1.2 以降)"
290 マルチキャストグループから抜ける。引き数は
298 .BR IP_HDRINCL " (Linux 2.0 以降)"
299 有効になっていると、ユーザは IP ヘッダをユーザーデータの前に与える。
308 .\" FIXME Document IP_IPSEC_POLICY
309 .\" Since Linux 2.5.47
310 .\" Needs CAP_NET_ADMIN
312 .BR IP_MTU " (Linux 2.2 以降)"
313 .\" Precisely: 2.1.124
314 ソケットの、既知の path MTU を取得する。
315 ソケットが接続している場合のみ有効である。
319 .BR IP_MTU_DISCOVER " (Linux 2.2 以降)"
320 .\" Precisely: 2.1.124
321 ソケットの Path MTU Discovery の設定をセット・取得する。
322 有効になっていると、 Linux はこのソケットに対して
323 RFC\ 1191 で定義されている Path MTU Discovery を行う。
324 発信データグラムには、全て「フラグメント不許可」フラグがセットされる。
328 .I /proc/sys/net/ipv4/ip_no_pmtu_disc
333 ユーザーがデータを MTU のサイズの塊にパケット化したり、
334 必要な場合には再送したりしなければならない。
336 カーネルは既知の path MTU より大きなパケットを拒否する
343 Path MTU discovery フラグ:意味
344 IP_PMTUDISC_WANT:ルートごとの設定を用いる。
345 IP_PMTUDISC_DONT:Path MTU Discovery を行わない。
346 IP_PMTUDISC_DO:常に Path MTU Discovery を行う。
347 IP_PMTUDISC_PROBE:DFビットをセットするが、Path MTU を無視する。
350 path MTU discovery が有効になっていると、カーネルは宛先ホストごとに
351 自動的に path MTU を処理する。特定の相手に
355 ソケットオプションを用いれば、既知の path MTU の取得に便利である
358 エラーが起きた後など)。これは時間とともに変化するかもしれない。
359 宛先がたくさんあるコネクションレスなソケットでは、
360 与えられた宛先に対する新しい MTU にも、
361 エラーキューを用いてアクセスすることができる
364 MTU 更新が到着するごとに、新たなエラーがキューイングされる。
366 MTU discovery の進行中には、データグラムソケットからの初期パケットは
367 到着しないかもしれない。 UDP を用いるアプリケーションでは、
369 パケットの再送アルゴリズムにこの分を除外させるべきである。
372 path MTU discovery プロセスを立ち上げるには、
373 大きなデータグラムサイズ (最大 64K ヘッダバイト長) からはじめて、
374 path MTU が更新されるまでサイズを縮めていくことも可能である。
375 .\" FIXME this is an ugly hack
377 path MTU の値をまず見積もってみるには、宛先アドレスに
383 オプションとともに呼び、 MTU を取得することである。
386 (Linux 2.6.22 以降で利用可能) を設定することで、
390 のソケットで RFC 4821 の MTU 探索を実装することが可能である。
393 のような診断ツールで特に有用である。これらのツールでは、
394 観測された Path MTU よりも大きな探索パケットを意図的に
397 .BR IP_MULTICAST_IF " (Linux 1.2 以降)"
398 ローカルデバイスをマルチキャストソケットとして設定する。引き数は
410 .BR IP_MULTICAST_LOOP " (Linux 1.2 以降)"
411 マルチキャストパケットをローカルなソケットにループバックするかどうかを
412 定めるブール値の整数引き数を設定・取得する。
414 .BR IP_MULTICAST_TTL " (Linux 1.2 以降)"
415 このソケットから発信されるマルチキャストパケットの
416 time-to-live 値を設定・取得する。
417 マルチキャストパケットに対しては、できるだけ小さな
418 TTL に設定することがとても重要である。デフォルトは 1 で、
419 ユーザープログラムが明示的に要求しない限り
420 マルチキャストパケットはローカルなネットワークから出ないことになる。
423 .BR IP_OPTIONS " (Linux 2.0 以降)"
424 .\" Precisely: 1.3.30
425 このソケットから送られるパケット全てに付随する IP オプションを
426 設定・取得する。オプションを保存しているメモリバッファへのポインタと
429 を呼び出すと、ソケットに関連づけられる IP オプションを設定できる。
430 IPv4 におけるオプションのサイズの最大値は 40 バイトである。
431 用いることのできるオプションについては RFC\ 791 を見よ。
433 ソケットに対する初期接続要求パケットに IP オプションが含まれていると、
434 ルーティングヘッダを付けて戻されてくる初期パケットの
435 IP オプションに同じオプションがセットされる。接続が確立された後、
436 やってきたパケットのオプションを変更することはできない。
437 デフォルトでは。外部から受信したパケットの全ての source routing オプション
441 .I accept_source_route
442 を使うとこれを有効にできる。これを無効にしていても timestamps など
443 の他のオプションの処理は行われる。データグラムソケットでは、
444 IP オプションはローカルユーザーしか設定できない。
448 をつけて呼ぶと、現在送信に用いられている IP オプションを
450 .\" FIXME Document IP_PASSSEC
452 .\" Since Linux 2.6.17
453 .\" commit 2c7946a7bf45ae86736ab3b43d0085e43947945c
454 .\" Author: Catherine Zhang <cxzhang@watson.ibm.com>
456 .BR IP_PKTINFO " (Linux 2.2 以降)"
457 .\" Precisely: 2.1.68
459 補助メッセージを渡す。これには到着パケットに関する情報を提供する
462 データグラム指向のソケットでしか動作しない。
465 メッセージを通過させるかどうかをソケットに知らせるフラグである。
470 を用いたパケットの制御メッセージとしてのみ送受信できる。
476 unsigned int ipi_ifindex; /* Interface index */
477 struct in_addr ipi_spec_dst; /* Local address */
478 struct in_addr ipi_addr; /* Header Destination
484 .\" FIXME elaborate on that.
486 はパケットが受信されたインターフェースの、他と重ならないインデックスである。
490 はパケットヘッダにある宛先アドレスである。
495 .\" このフィールドは、名前の付け方が明らかに間違っているのだが
499 はルーティングテーブルを検索する際にローカルな送信元アドレスとして使用され、
500 IP source route オプションを設定するのにも使用される。
502 が 0 以外の場合、このインデックスによって指定されるインターフェースの
505 を上書きし、ルーティングテーブルを検索する。
507 .BR IP_RECVERR " (Linux 2.2 以降)"
508 .\" Precisely: 2.1.15
509 エラーメッセージの受け渡しに、信頼性の高い拡張された方法を有効にする。
510 データグラムソケットに対して有効になっていると、
511 発生したエラーは全てソケットごとのエラーキューに保存される。
512 ユーザーはソケット操作からエラーを受け取ったとき、
516 フラグとともに呼べばそのエラーを取得できる。
523 .\" Linux では SOL_IP も可
525 これは接続志向でないソケットで信頼性の高いエラー処理を行いたい場合に
526 有用である。エラーキューの受信データフラグメントには
528 .\"NAKANO portion をフラグメントって言っちゃっていいのか?
538 #define SO_EE_ORIGIN_NONE 0
539 #define SO_EE_ORIGIN_LOCAL 1
540 #define SO_EE_ORIGIN_ICMP 2
541 #define SO_EE_ORIGIN_ICMP6 3
543 struct sock_extended_err {
544 uint32_t ee_errno; /* error number */
545 uint8_t ee_origin; /* where the error originated */
546 uint8_t ee_type; /* type */
547 uint8_t ee_code; /* code */
549 uint32_t ee_info; /* additional information */
550 uint32_t ee_data; /* other data */
551 /* More data may follow */
554 struct sockaddr *SO_EE_OFFENDER(struct sock_extended_err *);
563 にはエラーが発生した場所を示すコードが入る。
564 その他のフィールドはプロトコル依存である。
566 マクロは与えられた補助メッセージへのポインタから
567 エラーの発生したネットワークオブジェクトのアドレスへのポインタを返す。
574 となり、その他のフィールド値は不定である。
581 エラーが ICMP パケットとして受信された場合には
584 .B SO_EE_ORIGIN_LOCAL
590 は ICMP ヘッダの type フィールドと code フィールドの値にセットされる。
594 エラーに対する discover された MTU が入る。
595 メッセージにはエラーを引き起こしたノードの
608 ソケットで有効になっていたすべての IP オプション
609 .RB ( IP_OPTIONS ", " IP_TTL
610 など) とエラーパケットに含まれていたすべての IP オプションとが、
612 エラーを起こしたパケットのペイロード (payload) は
614 .\" FIXME . is it a good idea to document that? It is a dubious feature.
618 .\" はやや異なる意味を持つ。次のタイムアウトまでデータを保持するのでなく、
619 .\" やってきたエラーは全てただちにユーザーに渡される。これは、
620 .\" 高速なエラー処理が必要となるような、極端に寿命の短い
621 .\" TCP 接続に対して有用である。このオプションは注意して用いること。
622 .\" 経路が変わったり、その他通常の状況に対して、適切な回復が不可能となり、
623 .\" TCP の信頼性を低くしてしまう。またプロトコルの仕様に反してしまう。
624 TCP にはエラーキューがないことに注意してほしい。
631 だけが有効だが、ソケット関数から返されるエラーは
637 を指定すると、受信したすべての ICMP エラーをアプリケーションに
639 接続済みのソケットに対するエラーだけを報告する。
641 このオプションはブール値のフラグを設定・取得する。
645 .BR IP_RECVOPTS " (Linux 2.2 以降)"
646 .\" Precisely: 2.1.15
649 コントロールメッセージに入れてユーザーに渡す。
650 ルーティングヘッダとその他のオプションとは、
651 ローカルホストに対してはあらかじめ記入されている。
655 .BR IP_RECVTOS " (Linux 2.2 以降)"
656 .\" Precisely: 2.1.68
659 補助メッセージが到着パケットとともに渡される。
660 これにはパケットヘッダの Service/Precedence
661 フィールドのタイプを指定するバイトデータが含まれている。
664 .BR IP_RECVTTL " (Linux 2.2 以降)"
665 .\" Precisely: 2.1.68
669 time-to-live フィールドのバイトデータとともに渡される。
674 .BR IP_RETOPTS " (Linux 2.2 以降)"
675 .\" Precisely: 2.1.15
678 この hop では記入されない timestamp レコードと route レコードとともに返す。
679 .\"NAKANO 意味不明...(^^;
681 .BR IP_ROUTER_ALERT " (Linux 2.2 以降)"
682 .\" Precisely: 2.1.68
683 フォワードすべきパケットを IP Router Alert オプションをつけて
685 raw ソケットに対してのみ有効である。これはたとえばユーザー空間の
686 RSVP デーモンに対して便利である。タップされたパケットは
687 カーネルによってはフォワードされないので、これらを再送するのは
688 ユーザーの責任となる。ソケットのバインドは無視され、
689 このようなパケットはプロトコルによってのみフィルタリングされる。
691 .\"NAKANO Socket binding... の文、意味わからん。
693 .BR IP_TOS " (Linux 1.0 以降)"
694 このソケットから送信されるすべての IP パケットに適用される
695 Type-Of-Service (TOS) フィールドを設定・取得する。
696 これはネットワーク上でのパケットの優先度を決めるために用いられる。
697 TOS はバイトデータである。標準の TOS フラグがいくつか定義されている。
699 はインタラクティブなトラフィックの遅延を最小にする。
705 は転送速度が遅くてもかまわないとき、「データを詰め込む」のに用いられる。
706 これらのうち、 1 つまでだけを設定できる。
712 しかし、正確な振る舞いはキュー処理の設定に依存する。
713 .\" FIXME elaborate on this
716 ケーパビリティ) が必要となるかもしれない。
718 .RB ( SOL_SOCKET ", " SO_PRIORITY )
723 .\" FIXME Document IP_TRANSPARENT
724 .\" Needs CAP_NET_ADMIN
726 .\" Since Linux 2.6.27
727 .\" commit f5715aea4564f233767ea1d944b2637a5fd7cd2e
728 .\" Author: KOVACS Krisztian <hidden@sch.bme.hu>
730 .BR IP_TTL " (Linux 1.0 以降)"
731 time-to-live フィールドの値を設定または取得する。
732 この値はこのソケットから送信されるすべてのパケットに用いられる。
733 .\" FIXME Document IP_XFRM_POLICY
734 .\" Since Linux 2.5.48
735 .\" Needs CAP_NET_ADMIN
737 IP プロトコルでは、いくつかのグローバルパラメータを設定するための
741 .I /proc/sys/net/ipv4/
742 ディレクトリ内のファイルの読み書きでアクセスできる。
743 .\" FIXME As at 2.6.12, 14 Jun 2005, the following are undocumented:
748 0 以外の値 ("true") は対応するオプションが有効、
749 0 値 ("false") は無効、であることを意味する。
752 .IR ip_always_defrag " (Boolean; Linux 2.2.13 以降)"
753 [2.2.13 で新規登場。以前のバージョンのカーネルでは、この機能は
755 .B CONFIG_IP_ALWAYS_DEFRAG
757 このファイルは 2.4.x 以降では存在しない]
759 このブール値のフラグが有効になっている (0 以外になっている) と、
760 到着したフラグメント (IP パケットの一部で、
761 発信元と発信先の間のどこかのホストで、そのパケットが
762 大きすぎると判断され、分割された場合に生じる)
764 処理前に再構築 (デフラグメント) される。
766 ファイアウォールがローカル側のネットワークに唯一のリンクを持っている
767 場合や、透過プロクシの場合に限って有効にすべきである。
768 通常のルーターやホストでは決して使用することのないように。
769 さもないとフラグメントが別のリンクを経由して伝わる場合に、
770 通信のフラグメント化ができなくなってしまう。
771 またフラグメント再構築処理はメモリと CPU 時間のコストが非常に大きい。
773 これはマスカレードや透過プロクシが設定されると、
774 不思議な仕組みによって自動的に有効になる。
777 .IR ip_autoconfig " (Linux 2.2 以降 2.6.17 まで)"
778 .\" Precisely: since 2.1.68
779 .\" FIXME document ip_autoconfig
783 .IR ip_default_ttl " (integer; default: 64; Linux 2.2 以降)"
784 .\" Precisely: 2.1.15
785 送出されるパケットの time-to-live 値のデフォルトをセットする。
788 オプションを用いれば、パケットごとに変えることもできる。
791 .IR ip_dynaddr " (Boolean; default: disabled; Linux 2.0.31 以降)"
792 動的ソケットアドレスと、インターフェースアドレスが変更された際の
793 マスカレードエントリの再書き込みを有効にする。
795 IP アドレスが変更される場合に便利である。
798 .IR ip_forward " (Boolean; default: disabled; Linux 1.2 以降)"
799 IP forwarding を有効にするかどうかのブール値フラグ。
800 IP forwarding するかどうかはインターフェースごとにも設定できる。
803 .IR ip_local_port_range " (Linux 2.2 以降)"
804 .\" Precisely: since 2.1.68
805 ソケットに割り当てられているデフォルトのローカルポートの範囲を定める
806 二つの整数を与える。割り当ては 1 番目の番号から始まり、 2 番目の番号で終わる。
807 これらはマスカレードで用いられているポートと重なってはならない
809 ファイアウォールのパケットフィルターが「利用中のローカルポート」
811 番号を勝手に決めてしまうと問題が起きるかもしれない。
812 1 番目の番号は少なくとも 1024 より大きくすべきである。
813 良く使われるポートとの衝突を避けたり、ファイアウォールの問題を
814 回避したければ、 4096 よりも大きくするほうが良いだろう。
817 .IR ip_no_pmtu_disc " (Boolean; default: disabled; Linux 2.2 以降)"
818 .\" Precisely: 2.1.15
819 有効になっていると、デフォルトで TCP ソケットに対する
820 Path MTU Discoverty を行わない。
821 Path MTU Discovery は、
822 正しく設定されていない (ICMP パケットを全てドロップする) ファイアウォールや、
823 (point-to-point リンクで双方の MTU が一致していない場合など)
824 正しく設定されていないインターフェースが経路上に存在すると失敗してしまう。
825 Path MTU Discovery をグローバルに無効にするよりは、
827 Path MTU Discovery を無効にするとネットワークのコストが
830 .\" The following is from 2.6.12: Documentation/networking/ip-sysctl.txt
832 .IR ip_nonlocal_bind " (Boolean; default: disabled; Linux 2.4 以降)"
833 .\" Precisely: patch-2.4.0-test10
834 セットされていれば、プロセスが自分以外の IP アドレスを
836 できるようになる。これはかなり便利だが、うまく動かないアプリケーションもある。
838 .\" The following is from 2.6.12: Documentation/networking/ip-sysctl.txt
840 .IR ip6frag_time " (integer; default 30)"
841 IPv6 フラグメントをメモリに保持しておく時間 (秒単位)。
843 .\" The following is from 2.6.12: Documentation/networking/ip-sysctl.txt
845 .IR ip6frag_secret_interval " (integer; default 600)"
846 IPv6 フラグメントの hash secret の生成間隔 (hash secret の寿命)
849 .IR ipfrag_high_thresh " (integer), " ipfrag_low_thresh " (integer)"
850 キューイングされている IP フラグメントの量が
851 .I ipfrag_high_thresh
860 .\" FIXME Document the conf/*/* interfaces
861 .\" FIXME Document the route/* interfaces
862 .\" FIXME document them all
869 .\" commented out the following because ipchains is obsolete
871 .\" ファイアウォール関係の設定に関する ioctl については
877 ジェネリックデバイスのパラメータを設定する ioctl については
880 .\" FIXME Add a discussion of multicasting
882 .\" FIXME document all errors.
883 .\" We should really fix the kernels to give more uniform
884 .\" error returns (ENOMEM vs ENOBUFS, EPERM vs EACCES etc.)
887 必要な権限のないユーザーが操作を実行しようとした。
890 フラグを設定していない状態でブロードキャストアドレスに
896 ケーパビリティ) なしでファイアウォールの設定を変更しようとした。
898 .RB ( CAP_NET_BIND_SERVICE
899 ケーパビリティ) なしで特権ポートにバインドしようとした。
902 既に使われているアドレスにバインドしようとした。
905 存在しないソケットが要求された。または要求された
909 非ブロッキングソケットに対してブロックする操作を行った。
912 非ブロッキングソケットに対する接続操作が既に実行中である。
919 宛先アドレスにマッチする有効なエントリがルーティングテーブルに
920 存在しない。このエラーはリモートルータからの、
922 ICMP メッセージによって引き起こされることがある。
925 不正な引き数が渡された。送信操作において、
927 ルートに送信しようとするとこのエラーが起こることがある。
931 が、既に接続済みのソケットに対して呼ばれた。
934 データグラムが path MTU よりも大きく、フラグメント化もできない。
936 .BR ENOBUFS ", " ENOMEM
938 このエラーは、メモリアロケーションがソケットバッファの
939 大きさによって制限されていることを意味しているのが通常であるが、
943 パケットが全く到着していないソケットに対して
950 .BR ENOPROTOOPT " と " EOPNOTSUPP
955 接続状態でしか定義されていない操作を行おうとした。
958 高い優先度を設定したり、設定を変更したり、要求されたプロセスや
959 プロセスグループにシグナルを送ったりするのに必要な権限を、
967 ソケットが未設定であるか、知らないソケットタイプが要求された。
969 他のエラーが上層のプロトコルによって生じるかもしれない。
977 .BR IP_MTU_DISCOVER ,
981 は Linux 固有であり、移植性を考慮したプログラムでは
983 .\" IP_PASSSEC is Linux-specific
984 .\" IP_TRANSPARENT is Linux-specific
985 .\" IP_FREEBIND is Linux-specific
986 .\" IP_XFRM_POLICY is Linux-specific
987 .\" IP_IPSEC_POLICY is a nonstandard extension, also present on some BSDs
989 オプションの利用には、くれぐれも注意すること。
990 これは Linux では特権操作ではない。
991 不注意なブロードキャストを行うと、ネットワークは簡単に過負荷状態になる。
992 新しいアプリケーションプロトコルには、ブロードキャストではなく
993 マルチキャストグループを用いるほうがよい。
1000 といったソケットオプションがサポートされており、
1001 宛先アドレスや受信データグラムのインターフェースが取得できるように
1003 Linux で同じことをやらせるには、より一般的な
1011 の補助メッセージは受信パケットとともに渡される。
1017 ソケットオプションレベルは移植性がない。
1022 Linux 2.0 との互換性のために、 obsolete な
1023 .BI "socket(AF_INET, SOCK_PACKET, " protocol )
1026 をオープンできるようになっているが、これはお勧めできない。今後は
1027 .BI "socket(AF_PACKET, SOCK_RAW, " protocol )
1028 を代わりに用いるべきである。主な違いは、ジェネリックなリンク層用の
1032 に変わって用いられるようになったことである。
1036 IP 固有のインターフェースオプションを指定するための ioctl と
1037 ARP テーブルのことが記述されていない。
1042 現時点でのとりあえずの対策としては、この man ページにある定義をプログラム中に
1050 を指定して、受信パケットに入っていた宛先アドレスを取得する方法は
1051 2.2 カーネルの一部でうまく動かない。
1053 .\" この man ページは Andi Kleen が書いた。
1059 .BR capabilities (7),
1074 .\" FIXME autobind INADDR REUSEADDR