EN JA
PCAP_FINDALLDEVS(3)
PCAP_FINDALLDEVS(3) FreeBSD Library Functions Manual PCAP_FINDALLDEVS(3)

名称

pcap_findalldevs, pcap_freealldevs -キャプチャ (捕獲) デバイスのリストを取得し、そのリストを解放する

書式


#include <pcap/pcap.h>


char errbuf[PCAP_ERRBUF_SIZE];


int pcap_findalldevs(pcap_if_t **alldevsp, char *errbuf);
void pcap_freealldevs(pcap_if_t *alldevs);

解説

pcap_findalldevs() は、 pcap_create()pcap_activate() で、または pcap_open_live() でオープンすることができるネットワークデバイスのリストを構築します。 (例えば、そのプロセスにはキャプチャするためにそれらをオープンする十分な特権がないかもしれないので、 pcap_findalldevs() を呼び出すプロセスによってオープンすることができないネットワークデバイスがあるかもしれないことに注意してください。そうだとしたら、それらのデバイスは、リストに現れません。) pcap_findalldevs() が成功するなら、 alldevsp によって指されるポインタは、リストの最初の要素を指すように設定されるか、またはデバイスが見つからなかったなら (これは、成功と見なされます)、 NULL を指すように設定されます。リストの各要素は、タイプ pcap_if_t であり、次のメンバがあります:
next
NULL でないなら、リスト中の次の要素へのポインタ。リストの最後の要素のための NULL
name
pcap_open_live() に渡されるデバイスの名前を与える文字列へのポインタ。
description
NULL でなければ、デバイスの人間に読み込み可能な記述を与える文字列へのポインタ。
addresses
デバイスのためのネットワークアドレスのリストの最初の要素へのポインタ、またはデバイスにアドレスがないなら、 NULL です。
flags
デバイスフラグは、次の通りです:
PCAP_IF_LOOPBACK
デバイスがループバックインタフェースであるなら、設定します。

アドレスのリストの各要素は、タイプ pcap_addr_t であり、次のメンバがあります:

next
NULL でなければ、リストの次の要素へのポインタ。リストの最後の要素のための NULL
addr
アドレスを含む struct sockaddr へのポインタ。
netmask
NULL でなければ、 addr によって指されたアドレスに対応するネットマスクを含む struct sockaddr へのポインタ。
broadaddr
NULL でなければ、 addr によって指されたアドレスに対応するブロードキャスト (同報通信) アドレスを含む struct sockaddr へのポインタ。デバイスがブロードキャストをサポートしないなら、NULL となるかもしれません。
dstaddr
NULL でなければ、 addr によって指されたアドレスに対応する宛先アドレスを含む struct sockaddr へのポインタ。デバイスがポイントツーポイント (point-to-point) インタフェースでないなら、NULL となるかもしれません。

アドレスのリスト中のアドレスは、IPv4 アドレス、IPv6 アドレス、またはある他のタイプのアドレスかもしれないので、アドレスの内容を解釈する前に struct sockaddrsa_family メンバをチェックしなければならないことに注意してください。アドレスがすべて IPv4 アドレスまたは IPv4 あるいは IPv6 アドレスをすべて等しいと仮定しないでください。 IPv4 アドレスには、値 AF_INET があり、(IPv6 をサポートしない、より古いオペレーティングシステムは、それを定義しないかもしれない) IPv6 アドレスには、値 AF_INET6 があり、そして他のアドレスには、他の値があります。他のアドレスが返されるかどうか、それらがプラットフォーム依存であるかもしれないどのタイプ。 IPv4 アドレスについて、あたかも struct sockaddr_in を指すかのように、 struct sockaddr ポインタを解釈することができます。 IPv6 アドレスについて、あたかも struct sockaddr_in6 を指すかのように、それを解釈することができます。

デバイスのリストは、 alldevs によって指されるリストを解放する、 pcap_freealldevs() によって解放されなければなりません。

戻り値

pcap_findalldevs() は、成功すれば 0 を返し、失敗すれば-1 を返します。示されるように、デバイスを見つけないことは、失敗ではなく、成功と見なされるので、0 が、その場合に返されます。-1 が返されるなら、 errbuf は、適切なエラーメッセージで満たされます。 errbuf は、少なくとも PCAP_ERRBUF_SIZE 文字を保持できると想定されます。

関連項目

pcap(3), pcap_create(3), pcap_activate(3), pcap_open_live(3)
22 August 2010