pcap_findalldevs()はどのファイルと行番号で定義されていますか?pcap_findalldevs()が定義されている場所のlibpcapソースを探しています。pcap.hでプロトタイプを見つけましたが、完全な機能はどこで定義されていますか?
2 に答える
どれどれ:
# git clone git://git.debian.org/git/users/rfrancoise/libpcap.git
Cloning into libpcap...
[snap]
# grep -ri pcap_findalldevs libpcap |grep '{'
libpcap/fad-sita.c:int pcap_findalldevs(pcap_if_t **alldevsp, char *errbuf) {
私の幸運な日だ!
この関数の完全なソースコードは次のとおりです。
int pcap_findalldevs(pcap_if_t **alldevsp, char *errbuf) {
*alldevsp = 0;
strcpy(errbuf, "");
if (acn_parse_hosts_file(errbuf))
{
return -1;
}
if (acn_findalldevs(errbuf))
{
return -1;
}
*alldevsp = acn_if_list;
acn_if_list = 0;
return 0;
}
次に、あなたの質問の答えは次のとおりです:fad-sita.c!
それが行われる方法はあなたが実行しているOSに依存するので、それはいくつかの場所で定義されています。WinPcapを使用するWindowsでは、fad-win32.c
;で定義されます。を持っているUN*Xesでは、それは;getifaddrs()
で定義されています。fad-getad.c
Solaris 8以降では、fad-glifc.c
;で定義されています。ローカルインターフェイスでのパケットキャプチャをサポートする他のUN*Xでは、fad-gifc.c
;で定義されています。パケットキャプチャをまったくサポートしないUN*Xでは、(インターフェイスを返さないように)fad-null.c
;で定義されます。そして、libpcapを構成および構築した人が、SITAによって提供されるリモートデバイスからのキャプチャをサポートするように構成した場合、それはで定義されfad-sita.c
ます。
(はい、他の答えは間違っています。libpcapでコードを書く人は、関数の名前と同じ行に関数の最初の中括弧を置くのが好きだと思ってはいけませんでした。私はそうしません。しません、そうします。)