getipv4sourcefilter() — ソース・フィルターの取得

標準

標準/拡張機能 C/C++ 依存項目
RFC3678 両方 z/OS® V1.9

形式

#define _OPEN_SYS_SOCK_EXT3
#include <netinet/in.h>

int getipv4sourcefilter(int s, struct in_addr interface,struct in_addr group, 
                        uint32_t *fmode, uint32_t *numsrc, struct in_addr *slist);

機能説明

この関数は、アプリケーションが、ソケット、インターフェースおよびマルチキャスト・グループ値 から成るタプルの設定済みマルチキャスト・フィルター処理状態を取得できるようにします。

マルチキャスト。フィルターは、フィルター・モード (MCAST_INCLUDE または MCAST_EXCLUDE) 、およびフィルターに掛けるソース・アドレスのリストで記述されています。

この関数は IPv4 特有で、型 SOCK_DGRAM または SOCK_RAW のオープン・ソケットと共に、 AF_INET 上でのみ使用しなければなりません。

関数が、要求したストレージを取得できない場合、 制御は呼び出し元に戻りません。 その代わりに、アプリケーションは、メモリー不足条件で終了するか (予約スタックが使用可能で、 呼び出し元が XPLINK でない場合)、またはストレージが取得できなかったことを示して 異常終了します。

引数
説明
s
ソケットを識別します。
interface
インターフェースのローカル IP アドレスを保持します。
グループ
グループの IP マルチキャスト・アドレスを保持します。
fmode
正常実行時の戻りでのフィルター・モードを含む、整数を指します。このフィールド値は、 <netinet/in.h> に定義されたものと同様の、MCAST_INCLUDE または MCAST_EXCLUDE の いずれかになります。
numsrc
入力上のポインターで、slist 配列に合うソース・アドレスの数を指します。戻り値では、 フィルターに関連付けされたソースの数を指します。
slist
組み込まれたかまたは除外された (フィルター・モードによる) ソースの IP アドレス の配列の中のバッファーのポイントが書かれます。入力上の numsrc が 0 の場合、 NULL ポインターが提供されます。

戻り値

正常に実行された場合、関数は 0 を戻します。正常に実行されなかった場合は -1 を戻し errno を次のいずれかの値に設定します。

errno
説明
EADDRNOTAVAIL
ソケット、インターフェース、およびマルチキャスト・グループ値から成るタプル が存在しないか、または指定されたインターフェース・アドレスがこのホストで正しくないか、 あるいは指定されたインターフェース・アドレスがマルチキャスト対応ではありません。
EBADF
s は有効なソケット記述子ではありません。
EINVAL
インターフェースまたはグループが有効な IPv4 アドレスでないか、またはソケット s が 既にマルチキャスト setsockopt オプションを要求しています。
EPROTOTYPE
ソケット s が SOCK_DGRAM または SOCK_RAW 型ではありません。

関連情報