+\fIip_mreqn\fP 構造体は Linux 2.2 以降でのみ利用可能である。互換性のため、 古い \fIip_mreq\fP 構造体 (Linux 1.2
+以降で存在する) もまだサポートされている。 \fIip_mreqn\fP との違いは、 \fIimr_ifindex\fP フィールドを含まないことだけである。
+\fBsetsockopt\fP(2) でのみ使える。
+.TP
+\fBIP_ADD_SOURCE_MEMBERSHIP\fP (Linux 2.4.22 以降 / 2.5.68 以降)
+マルチキャストグループに参加、指定された送信元からのデータの受信のみを許可する。 引き数は \fIip_mreq_source\fP 構造体である。
+.sp
+.in +4n
+.nf
+struct ip_mreq_source {
+ struct in_addr imr_multiaddr; /* IP multicast group
+ address */
+ struct in_addr imr_interface; /* IP address of local
+ interface */
+ struct in_addr imr_sourceaddr; /* IP address of
+ multicast source */
+};
+.fi
+.in
+.sp
+\fIip_mreq_source\fP 構造体は \fBIP_ADD_MEMBERSIP\fP の項で説明した \fIip_mreqn\fP に似ている。
+\fIimr_multiaddr\fP フィールドには、アプリケーションが参加または脱退したいマルチキャストグループのアドレスが入る。
+\fIimr_interface\fP フィールドは、 マルチキャストグループに参加する際に システムが使用すべきローカルインターフェースのアドレスである。
+\fIimr_sourceaddr\fP フィールドには、アプリケーションがデータを受信したい送信元のアドレスが入る。
+.IP
+このオプションを複数回使うことで、 複数の送信元からのデータ受信を許可することができる。
+.TP
+\fBIP_BLOCK_SOURCE\fP (since Linux 2.4.22 以降 / 2.5.68 以降)
+指定したグループで、指定した送信元からのマルチキャストデータの受信を停止する。 このオプションは、アプリケーションが
+\fBIP_ADD_MEMBERSHIP\fP か \fBIP_ADD_SOURCE_MEMBERSHIP\fP
+のいずれかを使ってマルチキャストグループに参加した後でのみ有効である。
+.IP
+引き数は \fIip_mreq_source\fP 構造体である。 \fBIP_ADD_SOURCE_MEMBERSHIP\fP の項に説明がある。
+.TP
+\fBIP_DROP_MEMBERSHIP\fP (Linux 1.2 以降)
+マルチキャストグループから抜ける。引き数は \fBIP_ADD_MEMBERSHIP\fP と同様に \fIip_mreqn\fP または \fIip_mreq\fP
+構造体である。
+.TP
+\fBIP_DROP_SOURCE_MEMBERSHIP\fP (Linux 2.4.22 以降 / 2.5.68 以降)
+送信元を指定してグループから抜ける。 つまり、 指定したマルチキャストグループの指定された送信元からのデータ受信を停止する。
+アプリケーションは同じマルチキャストグループで複数の送信元を購読 (subscribe) している場合には、
+残りの送信元からのデータの受信は引き続き配信される。 すべての送信元からのデータ受信を一度で停止するには \fBIP_LEAVE_GROUP\fP
+を使うこと。
+.IP
+引き数は \fIip_mreq_source\fP 構造体である。 \fBIP_ADD_SOURCE_MEMBERSHIP\fP の項に説明がある。
+.TP
+\fBIP_FREEBIND\fP (Linux 2.4 以降)
+.\" Precisely: 2.4.0-test10
+このブール値のオプションを有効にすると、ローカルではない IP アドレスや存在
+しない IP アドレスをバインドできるようになる。これを使うと、対応するネット
+ワークインターフェイスがなかったり、アプリケーションがソケットをバインドしようと
+する時点で特定の動的 IP アドレスが有効になっていなかったりしても、ソケットを
+接続待ち状態 (listening) にできるようになる。
+このオプションは、下記に説明がある \fIip_nonlocal_bind\fP \fI/proc\fP インターフェイス
+のソケット単位の設定である。
+.TP
+\fBIP_HDRINCL\fP (Linux 2.0 以降)
+有効になっていると、ユーザは IP ヘッダをユーザーデータの前に与える。 \fBSOCK_RAW\fP ソケットでのみ有効である。詳細は \fBraw\fP(7)
+を見よ。このフラグが有効になっていると、 \fBIP_OPTIONS\fP, \fBIP_TTL\fP, \fBIP_TOS\fP は無視される。
+.TP
+\fBIP_MSFILTER\fP (since Linux 2.4.22 以降 / 2.5.68 以降)
+このオプションを使うと、 高度なフィルタリング API へアクセスできる。 この API ではすべての状態にアクセスできる。 引き数は
+\fIip_msfilter\fP 構造体である。
+.sp
+.in +4n
+.nf
+struct ip_msfilter {
+ struct in_addr imsf_multiaddr; /* IP multicast group
+ address */
+ struct in_addr imsf_interface; /* IP address of local
+ interface */
+ uint32_t imsf_fmode; /* Filter\-mode */
+
+ uint32_t imsf_numsrc; /* Number of sources in
+ the following array */
+ struct in_addr imsf_slist[1]; /* Array of source
+ addresses */
+};
+.fi
+.in
+.sp
+\fBMCAST_INCLUDE\fP と \fBMCAST_EXCLUDE\fP の 2 つのマクロがあり、 フィルタリングモードを指定するのに使用できる。
+また、 \fBIP_MSFILTER_SIZE\fP(n) マクロがあり、 送信元リストに \fIn\fP 個の送信元が入った \fIip_msfilter\fP
+構造体を格納するのに必要なメモリ量を判定することができる。
+.IP
+マルチキャスト送信元フィルタリングの全容は RFC\ 3376 を参照のこと。
+.TP
+\fBIP_MTU\fP (Linux 2.2 以降)