GETIFMADDRS(3) | FreeBSD Library Functions Manual | GETIFMADDRS(3) |
名称
getifmaddrs — マルチキャストグループメンバシップを取得する書式
#include < ifaddrs.h> int
getifmaddrs( struct ifmaddrs **ifmap);
void
freeifmaddrs( struct ifmaddrs *ifmp);
解説
getifmaddrs() 関数は、ローカルマシン上のマルチキャストメンバシップのリンクリストへの参照を ifmap によって参照されたメモリ中に格納します。リストはインクルードファイル < ifaddrs.h> で定義されるように ifmaddrs 構造体で構成されます。 ifmaddrs 構造体は少なくとも次のエントリを含んでいます:
struct ifmaddrs *ifma_next; /* 次の構造体へのポインタ */ struct sockaddr *ifma_name; /* インタフェース名 (AF_LINK) */ struct sockaddr *ifma_addr; /* マルチキャストアドレス */ struct sockaddr *ifma_lladdr; /* もしあれば、リンクレイヤ変換 */
ifma_next フィールドはリストの次の構造体へのポインタを含んでいます。このフィールドのリストの最後の構造体は NULL です。
ifma_name フィールドは、メンバシップが存在するところで、インタフェースの名前を含んでいる AF_LINK アドレス構造体を参照します。
ifma_addr はこのメンバシップのアドレスを参照します。
ifma_lladdr フィールドは ifma_addr が設定されるなら、その中のプロトコルレベルのためのリンクレイヤ変換を参照し、そうでなければ NULL です。
getifmaddrs() によって返されるデータはダイナミックに割り付けられ、もう必要でなくなれば freeifmaddrs() を使用して解放するべきです。
戻り値
The getifmaddrs() function returns the value 0 if successful; otherwise the value -1 is returned and the global variable errno is set to indicate the error.歴史
getifmaddrs() 関数は、 FreeBSD 5.2 ではじめて登場しました。バグ
< net/if.h> と < ifaddrs.h> の両方がインクルードされて (含まれて) いるなら、 < net/if.h> は、 < ifaddrs.h> の前にインクルードしなければ (含まなければ) なりません。May 21, 2013 | FreeBSD |