メイン   モジュール   デー タ構造   ファイルリスト   データフィールド   グローバル   関連ページ   注意事項   English

エクスポーテッド関数
[WinPcap ユーザーズマニュアル]



Typedefs

typedef void(*  pcap_handler )(u_char *user, const struct pcap_pkthdr *pkt_header, const u_char *pkt_data)
  パケットを受け取るコールバック関数のプロトタイプ宣言


関数

pcap_t pcap_open_live (char *device, int snaplen, int promisc, int to_ms, char *ebuf)
  非推奨: pcap_open() を代わりに使用して下さい。 直接キャプチャのための物理インターフェイスをオープンします。

pcap_t pcap_open_dead (int linktype, int snaplen)
  非推奨: pcap_open() を代わりに使用して下さい。 キャプチャを開始せずにpcap_t 構造体を構築します。

pcap_t pcap_open_offline (const char *fname, char *errbuf)
  非推奨: pcap_open() を代わりに使用して下さい。 savefileを、パケットを読み込むtcpdump/libpcapフォーマットでオープンします。

pcap_dumper_t pcap_dump_open (pcap_t *p, const char *fname)
  ネットワークトラフィックを書き込むためのファイルをオープンします。

int  pcap_setnonblock (pcap_t *p, int nonblock, char *errbuf)
  ブロッキングモードとノンブロッキングモードを指定するスイッチです。

int  pcap_getnonblock (pcap_t *p, char *errbuf)
  インターフェイスのノンブロッキング状態を取得します。

int  pcap_findalldevs (pcap_if_t **alldevsp, char *errbuf)
  非推奨: pcap_findalldevs_ex() を代わりに使用して下さい。 システム上の利用可能なインターフェイスリストを返します。

void  pcap_freealldevs (pcap_if_t *alldevsp)
  pcap_findalldevs() によって返されたインターフェイスリストを解放します。

char *  pcap_lookupdev (char *errbuf)
  非推奨: pcap_findalldevs() を代わりに使用して下さい。
システム内の最初の利用可能なデバイスを返します。


int  pcap_lookupnet (char *device, bpf_u_int32 *netp, bpf_u_int32 *maskp, char *errbuf)
  非推奨: pcap_findalldevs() を代わりに使用して下さい。
インターフェイスのサブネットとネットマスクを返します。


int  pcap_dispatch (pcap_t *p, int cnt, pcap_handler callback, u_char *user)
  非推奨: pcap_next_ex() を代わりに使用して下さい。 パケットのグループを収集します。cnt パケットが受け取られた時か、pcap_open_live() によってタイムアウトした時にそれらの値を返します。

int  pcap_loop (pcap_t *p, int cnt, pcap_handler callback, u_char *user)
  非推奨: pcap_next_ex() を代わりに使用して下さい。 パケットのグループを収集します。パケットは受け取られたが、 pcap_open_live() によって設定されたタイムアウトを遵守しなかった時にそれらの値を返します。したがって、永遠にパケットをブロックします。

void  pcap_dump (u_char *user, const struct pcap_pkthdr *h, const u_char *sp)
  パケットをディスクに保存します。

int  pcap_compile (pcap_t *p, struct bpf_program *fp, char *str, int optimize, bpf_u_int32 netmask)
  パケットフィルタをコンパイルします。プログラム内のハイレベルなフィルタリングの式を、 カーネルレベル のフィルタリングエンジンによって翻訳出来るものに変換します。(フィ ルタリングの構文シンタックス  参照)

int  pcap_compile_nopcap (int snaplen_arg, int linktype_arg, struct bpf_program *program, char *buf, int optimize, bpf_u_int32 mask)
  非推奨, pcap_open_dead()pcap_compile() を代わりに使用して下さい。
パケットフィルタをアダプタのオープニングの必要なしにコンパイルします。
ハイレベル なフィルタリングの式を、カーネルレベルのフィルタリングエンジンによって翻訳されたプログラムに変換します。(フィ ルタリングの構文シンタックス  参照)

int  pcap_setfilter (pcap_t *p, struct bpf_program *fp)
  フィルタをキャプチャに関連付けます。

void  pcap_freecode (struct bpf_program *fp)
  フィルタを解放します。

u_char *  pcap_next (pcap_t *p, struct pcap_pkthdr *h)
  非推奨, pcap_next_ex() を代わりに使用して下さい。
次の得られるパケットを返します。


int  pcap_datalink (pcap_t *p)
  アダプタのリンクレイヤを返します。

int  pcap_snapshot (pcap_t *p)
  アプリケーションへ運ばれるパケット部分の容量を(バイトで)返します。

int  pcap_is_swapped (pcap_t *p)
  savefileが現在のシステムよりも別のバイトオーダーを使用していたら、trueを 返 します。

int  pcap_major_version (pcap_t *p)
  savefileを書き込むのに使用していたpcapライブラリの、メジャーバージョン数 を 返します。

int  pcap_minor_version (pcap_t *p)
  savefileを書き込むのに使用していたpcapライブラリの、マイナーバージョン数 を 返します。


int  pcap_stats (pcap_t *p, struct pcap_stat *ps)
  非推奨, pcap_stats_ex() を代わりに使用して下さい。
現在のキャプチャの統計値を返します。


FILE *  pcap_file (pcap_t *p)
  非推奨, pcap_dump() を代わりに使用して下さい。
オフラインキャプチャのストリームを返します。


int  pcap_fileno (pcap_t *p)
  非推奨, Win32環境下でデバイス記述子を扱うことは意味を成しません。
キャプチャデバイスのファイル記述子を返します。


void  pcap_perror (pcap_t *p, char *prefix)
  prefixによって先頭に文字を付けられた、stderrの最後のpcapライブラリエ ラーテキストを表示しま す。

char *  pcap_geterr (pcap_t *p)
  最後のpcapライブラリエラーに付随するエラー文字列を返します。

char *  pcap_strerror (int error)
  pcap_strerror() は strerror() が利用可能でないときに提供されます。

fn void  pcap_close (pcap_t *p)
  pに関連付けられているファイルをクローズし、リソースの割り当てを解除します。

fn void  pcap_dump_close (pcap_dumper_t *p)
  pcap_dump_close() は“savefile”をクローズします。

fn int  pcap_setbuff (pcap_t *p, int dim)
  Win32 仕様です。 アダプタに関連付けられているカーネルバッファのサイズをセットします。

int  pcap_setmode (pcap_t *p, int mode)
  Win32 仕様です。 インターフェイスの動作モードをpからmodeにセットします。

int  pcap_sendpacket (pcap_t *p, u_char *buf, int size)
  Win32 仕様です。 直接パケットを送信します。

int  pcap_setmintocopy (pcap_t *p, int size)
  Win32 仕様です。 シングルコールでカーネルによって受け取られる、最小のデータ量をセットします。

HANDLE  pcap_getevent (pcap_t *p)
  Win32 仕様です。 インターフェイスpに関連付けられているイベントハンドルを返します。

pcap_send_queue pcap_sendqueue_alloc (u_int memsize)
  Win32 仕様です。 キューの送信を割り当てます。

void  pcap_sendqueue_destroy (pcap_send_queue *queue)
  Win32 仕様です。 キューの送信を破棄します。

int  pcap_sendqueue_queue (pcap_send_queue *queue, const struct pcap_pkthdr *pkt_header, const u_char *pkt_data)
  Win32 仕様です。 キューの送信にパケットを追加します。

u_int  pcap_sendqueue_transmit (pcap_t *p, pcap_send_queue *queue, int sync)
  Win32 仕様です。 ネットワークに直接パケットのキューを送信します。

int  pcap_next_ex (pcap_t *p, struct pcap_pkthdr **pkt_header, u_char **pkt_data)
  Win32 仕様です。 パケットをインターフェイスからか、オフラインキャプチャから読み込みます。

int  pcap_live_dump (pcap_t *p, char *filename, int maxsize, int maxpacks)
  Win32 仕様です。 キャプチャをファイルに保存します。

int  pcap_live_dump_ended (pcap_t *p, int sync)
  Win32 仕様です。 カーネルのダンププロセス状態を返します:すなわち、pcap_live_dump() によって設定された制限のうちの一つ(パケットの最大数とファイルの最大サイズ)に到達したかどうか、を返します。

int  pcap_stats_ex (pcap_t *p, struct pcap_stat *ps)
  Win32 仕様です。 現在のキャプチャの統計値を返します。


詳細な解説

 wpcap.dllによってエクスポートされた関数です。

Typedef 資料

typedef void(* pcap_handler)(u_char *user, const struct pcap_pkthdr *pkt_header, const u_char *pkt_data)
 

パケットを受け取るコールバック関数の、プロトタイプ宣言です。

 pcap_dispatch()pcap_loop() がユーザーによって呼び出されると、このコールバックによってパケットがアプリケーションにパスされます。userは、ユーザーが定義したキャプチャセッ ションの状態を含むパラメータなので pcap_dispatch()pcap_loop() のuserパラメータに対応します。pkt_header はキャプチャドライバによってパケットに関連付けられたヘッダです。プロトコルヘッダではありません。pkt_data は、プロトコルヘッダを含んだパケットのデータを指します。

ファイルfuncs/pcap.h786行 目の定義 


関数資料

fn void pcap_close pcap_t   p
 

pと関連付けられたファイルをクローズし、リソースの割り当てを解除します。

こちらも参照:
pcap_open_live(), pcap_open_offline(), pcap_open_dead()

ファイル pcap.c653行 目の定義.

参考 PacketCloseAdapter(), pcap_close_remote()pcap_freecode().

右より参照 add_or_find_if(), daemon_endcapture(), daemon_opensource(), daemon_serviceloop(), daemon_startcapture(), pcap_compile_nopcap(), pcap_opensource_remote(), pcap_startcapture_remote().

int pcap_compile pcap_t   p,


struct bpf_program   fp,


char *    str,


int    optimize,


bpf_u_int32    netmask


 

パケットフィルタをコンパイルします。ハイレベルなフィルタリングの式をカーネルレベルのフィルタリングエンジンによって翻訳出来るプ ログラムに変換します(フィ ルタリング表現のシンタックス 参照)。

pcap_compile() は、文字列 strをフィルタプログラムにコンパイルするのに使用されます。fpは bpf_program 構造体へのポインタで、 pcap_compile()  によって書き込まれています。optimize はそこから派生するプログラム(コード)の最適化が機能しているかをコントロールします。netmask はネットマスクを指定します。-1が返されることは、pcap_geterr() によってエラーテキストが表示されるようなエラーが生じた場合に返される値です。

こちらも参照:
pcap_open_live(), pcap_setfilter(), pcap_freecode(), pcap_snapshot()

ファイル gencode.c  の 310行 目の定義。

参考 bpf_program::bf_insns, bpf_program::bf_len, bpf_error(), bpf_pcap, freechunks(), gen_retblk(), init_linktype(), mask, no_optimize, pcap_datalink(), pcap_snapshot(), root, snaplen, snprintfsyntax().

右より参照 main(), pcap_compile_nopcap().

int pcap_compile_nopcap int    snaplen_arg,


int    linktype_arg,


struct bpf_program   program,


char *    buf,


int    optimize,


bpf_u_int32    mask


 

非推奨, pcap_open_dead()pcap_compile() を代わりに使用して下さい。
アダプタのオープニングの必要なしにパケットフィルタをコンパイルします。ハイレベルなフィルタリングの式をカーネルレベルのフィルタリングエンジンに よって翻訳できるプログラムに変換します(フィ ルタリング表現のシンタックス 参照)。

pcap_compile_nopcap()pcap_compile() は、pcap構造体を渡す代わりに一方がはっきりとsnaplenとlinktypeを渡すことを除いて、両者は似通っています。それは、pcap_open()が 必ず呼び出されることなく、ダイレクトなBPF処理のためのフィルタコンパイルに意図的に使用されます。-1が返されることは、エラーテキストが利用で きないときのエラーを明示しています。(pcap_compile_nopcap()pcap_open_dead(), pcap_compile(), と pcap_close() のラッパー(包み)で す。最後の三つのルーチンは、コンパイルエラー時のエラーテキストを取得するためにダイレクトに使用されます。)

strパラメータに関する詳細は フィルタ リング表現のシンタックス のセクションを参考にして下さい。

こちらも参照:
pcap_open_live(), pcap_setfilter(), pcap_freecode(), pcap_snapshot()

ファイル gencode.c364 行目の定義

右より参照 pcap_close(), pcap_compile(), pcap_open_dead(), pcap_t.

int pcap_datalink pcap_t   p
 

アダプタのリンクレイヤを返します。

pcap_datalink() はリンクレイヤのタイプを返します、下記のタイプを含みます:

  • DLT_NULL BSD ループバックカプセル化; リンクレイヤのヘッダは、ホストのバイトオーダーの中で4バイトフィールドです。そのヘッダには、「ホストのバイトオーダー」はパケットがキャプチャされ るマシ ンのバイトオーダーであることを意味する、パケットのネットワークレイヤプロトコルのためのsocket.hからのPF_値が含まれます。PF_値 はパケットをキャプチャしているマシンのOSの値ですが、もし“savefile”が読み込まれていると、バイトオーダーとPF_値は必然的にキャプチャ ファイルを読み込んでいるマシンのものではなくなります。
  • DLT_EN10MB Ethernet (10Mb, 100Mb, 1000Mb, それ以上)
  • DLT_IEEE802 IEEE 802.5 トークンリング
  • DLT_ARCNET ARCNET SLIP; リンクレイヤヘッダは順に次を含んでいます: 1-バイトフラグ, マシンによって受け取られたパケットのための0の値と、マシンによって送出されたパケットのための1の値: 1-バイトフィールド、パケットのタイプを指示する上位4ビット、RFC 1144による
    • 0x40 修正されていないIPデータグラム(TYPE_IP);
    • 0x70 圧縮されていないTCP IPデータグラム(UNCOMPRESSED_TCP), プロトコルフィールドでのコネクションナンバーを含む、ワイヤ上の直接IPヘッダの一番最初のバイト
    • 0x80 圧縮されたTCP IPデータグラム(COMPRESSED_TCP), 圧縮されたTCP/IPデータグラムヘッダの最初のバイト-UNCOMPRESSED_TCPと、 残りの修正されたIPヘッダ、COMPRESSED_TCP、圧縮されたTCP/IPデータグラムヘッダ、トータルで16バイト、圧縮されていないIP データグラムはヘッダの後に続く
  • DLT_PPP PPP; 最初の2バイトが0xff と 0x03なら、それはHDLCのようなフレーミングのPPPとそれら2バイトの後に続くPPPヘッダ、そうでなければ、それはフレームなしのPPPで、 PPPヘッダで始まるパケット
  • DLT_FDDI FDDI
  • DLT_ATM_RFC1483 RFC 1483 LLC/SNAP-encapsulated ATM; IEEE 802.2 LLC headerで始まるパケット
  • DLT_RAW raw IP; IPヘッダで始まるパケット
  • DLT_PPP_SERIAL RFC 1662によるHDLCのようなフレームのPPP, それか Cisco PPP with HDLC framing, セクションまたは、Cisco PPP とHDLCフレームの0x8Fasによる
  • DLT_PPP_ETHER PPPoE; PPPoEヘッダで始まるパケット、RFC2516による
  • DLT_C_HDLC HDLCフレームを含んだCisco PPP、RFC1547のセクション4.3.1による
  • DLT_IEEE802_11 IEEE 802.11 ワイヤレス LAN
  • DLT_LOOP オープンBSD ループバックカプセル化; リンクレイヤのヘッダは、ホストのバイトオーダーの中で4バイトフィールドです。それには、「ホストのバイトオーダー」はパケットがキャプチャされるマシ ンのバイトオーダーであることを意味する、パケットのネットワークレイヤプロトコルのためのsocket.hからのPF_値が含まれます。そしてPF_値 はパケットをキャプチャしているマシンのOSの値ですが、もし“savefile”が読み込まれていると、バイトオーダーとPF_値は必然的にキャプチャ ファイルを読み込んでいるマシンのものではなくなります
  • DLT_LINUX_SLL Linux "仕様"のキャプチャカプセル化; リンクレイヤヘッダは順に次を含む: 2-バイトの "パケットタイプ", 次のネットワークバイトオーダーのうちの一つ:
    • 0 パケットは誰かによってこちらに送られた
    • 1 パケットは誰かによって送信(散布)された
    • 2 パケットは誰かによって散布ではなく、マルチキャストされた
    • 3 パケットは誰かから誰かへと送られた
    • 4 パケットは2バイトフィールドでこちらに送られた、ネットワークバイトオーダー、リンクレイヤのデバイスタイプのためのLinuxARPHRD_値; 2-バイトフィールド、ネットワークバイトオーダー、パケット送信側のリンクレイヤの長さ(0にもなり得る)を含む; リンクレイヤヘッダのバイト(8バイト以上であれば、最初の8だけを表示); ネットワークバイトオーダーで、イーサネットプロトコルタイプを含む2バイ トフィールド、または802.2LLCヘッダなしのNovell802.3フレームのための1、または802.2LLCヘッダで始まるフレームのための4
  • DLT_LTALK Apple LocalTalk; AppleTalk LLAPヘッダで始まるパケット

ファイル pcap.c の 209  行目の定義

右より参照 pcap_compile().

int pcap_dispatch pcap_t   p,


int    cnt,


pcap_handler    callback,


u_char *    user


 

非推奨: pcap_next_ex() を代わりに使用して下さい。 パケットのグループを収集します。cnt個のパケットが受け取られた時か、 pcap_open_live() によってタイムアウトしたときにそれらの値を返します。

pcap_dispatch() はパケットを収集するのと、処理するのに使用されます。cnt は返す前に処理しなければならないパケットの最大数を特定します。これは最小値ではありません。直接キャプチャを読み込んでいる時は一度に一個だけのバッ ファ可能なパケットを読み込むので、cnt個のパケットよりも少ないパケットが処理されます。値-1の cnt は、直接キャプチャを読み込んでいる時に一つのバッファから受け取られる全てのパケット、それか“savefile”を読み込んでいる時のファイル内の全 てのパケットを処理します。 callback は三つの引数で呼び出されるルーチンを特定します。: pcap_dispatch() から渡されるu_charのポインタ、  ポインタパケットデータです。

読み込まれたパケット数が返されます。0 は直接キャプチャより一個もパケットが読まれたなかったか(例えば、それらパケットがフィルタを通過しなかったか、パケットが一つも来ないうちにリードタ イムアウトをサポートするプラットフォーム上で、パケットが一つも到達しないうちにタイムアウトしてしまったか、キャプチャデバイスのファイル記述 子がノンブロッキングモードで、読み込めるパケットがなかったか)、 または“savefile”にパケットが一つもなかったか、を表します。値-1 が返されることは、pcap_perror()pcap_geterr() がエラーテキストを表示するために使用されることを意味しています。

注意:
直接キャプチャを読み込む時、pcap_dispatch() は読み取りのタイムアウトを必ずしも返すわけではありません。幾つかのプラットフォームでは、読み取りのタイムアウトがサポートされていませんし、また他 のプラットフォームではタイマーは少なくとも一つのパケットが到着するまで作動しません。このことから、リードタイムアウトは会話型のアプリケーションで 行う次のような使い方をしてはならないのです。つまり、パケットキャプチャがループを使ってユーザー入力を定期的に「ポール(ポーリング、調べること)」 するような使い方で、その理由はpcap_dispatch()がタイムアウト後に戻る保証がないことによります。
こちらも参照:
pcap_loop(), pcap_next(), pcap_open_live(), pcap_open_offline(), pcap_handler

ファイル pcap.c の69行 目の定義

参考 pcap_offline_read(), pcap_read().

右より参照 pcap_next() 

void pcap_dump u_char *    user,


const struct pcap_pkthdr   h,


const u_char *    sp


 

パケットをディスクに保存します。

pcap_dump()pcap_dump_open()  でオープンされた“savefile”にパケットを出力します。その呼び出し引数は、pcap_dispatch()pcap_loop()  で使われるのに適していることに注目して下さい。ダイレクトに呼び出されればuserパラメータは、pcap_dump_open()  によって返されるpcap_dumper_tのタイプのものになります。

こちらも参照:
pcap_dump_open(), pcap_dump_close(), pcap_dispatch(), pcap_loop()

ファイル savefile.c  の650行 目の定義

参考 pcap_pkthdr::caplen, pcap_pkthdr::len, pcap_pkthdr::ts.

右より参照 dispatcher_handler().

fn void pcap_dump_close pcap_dumper_t   p
 

pcap_dump_close() は“savefile”を閉じます。

こちらも参照:
pcap_dump_open(), pcap_dump()

ファイル savefile.c 715行 目の定義

pcap_dumper_t* pcap_dump_open pcap_t   p,


const char *    fname


 

ネットワークトラフィックを書き込むファイルをオープンします。

pcap_dump_open() は書き込みのための"savefile"をオープンするのに呼び出されます。 fname はオープンするファイルの名前を指します。"-" はstdinと同義語です。もしNULLが返されれば、エラーテキストを取得するためにpcap_geterr() が使用されます。

こちらも参照:
pcap_dump_close(), pcap_file(), pcap_dump ()

ファイル savefile.c の 669  行目の定義  

参考 dlt_to_linktype(), pcap_dumper_t, pcap_strerror(), sf_write_header(), snprintf.

右より参照 main().

FILE* pcap_file pcap_t   p
 

非推奨、 pcap_dump() を代わりに使用して下さい。
オフラインキャプチャのstdioストリームを返します。

pcap_file() は"savefile"のスタンダードI/Oストリームを返します。 "savefile"がpcap_open_offline()に よってオープンされたか、NULLの場合か、ネットワークデバイスがpcap_open_live()に よってオープンされた場合に、I/Oストリームを返します。

こちらも参照:
pcap_open_offline(), pcap_open_live()

ファイル pcap.c の462行 目の定義

int pcap_fileno pcap_t   p
 

非推奨、デバイス記述子をWin32環境下で直接取り扱うことは意味を成しません。
キャプチャデバイスのファイル記述子を返します。

pcap_fileno() は、読み込まれてキャプチャされたパケットから、ファイル記述子番号を返します。ネットワークデバイスが pcap_open_live() によってオープンされたか、-1ので オープンされたか、"savefile"が pcap_open_offline()  によってオープンされた場合に、ファイル記述子番号を返します。

こちらも参照:
pcap_open_offline(), pcap_open_live()

ファイル pcap.c の468行 目の定義

int pcap_findalldevs pcap_if_t **    alldevsp,


char *    errbuf


 

非推奨: pcap_findalldevs_ex() を代わりに使用して下さい。 システム上の利用可能なインターフェイスのリストを返します。

pcap_findalldevs() は、pcap_open_live()で オープンされるネットワークデバイスのリストを構築します。(pcap_findalldevs()呼 び出しのプロセスによって、pcap_open_live()で ネットワークデバイスがオープンされないこともあるということに注目して下さい。なぜなら、一例として、そのプロセスにはキャプチャのためにそれらを オープンするという十分な特権を持っていない、ということがあります。もしそうであれば、それらのデバイスはリスト上には現れません。)  alldevsp はリストの最初の要素を指すのにセットされます。それぞれのリストの要素はpcap_if_tのタイプのものです。

こちらも参照:
構造体 pcap_if, pcap_freealldevs(), pcap_open_live(), pcap_lookupdev(), pcap_lookupnet()

右より参照 daemon_findalldevs(), main(), pcap_findalldevs_ex().

void pcap_freealldevs pcap_if_t   alldevsp
 

pcap_findalldevs()  によって返されたインターフェイスのリストを解放します。

pcap_freealldevs() は、pcap_findalldevs()に よって割り振られたリストを解放するのに使用されます。

こちらも参照:
pcap_findalldevs()

ファイル inet.c の426行 目の定義

参考 pcap_addr::addr, pcap_if::addresses, pcap_addr::broadaddr, pcap_if::description, pcap_addr::dstaddr, pcap_if::name, pcap_addr::netmask, pcap_if::next, pcap_addr::next.

右より参照 daemon_findalldevs(), main().

void pcap_freecode struct bpf_program   fp
 

フィルタを解放します。

pcap_freecode() は、BPFプログラムが必要なくなった時に、pcap_compile()  によって生成されbpf_program構 造体が指すメモリ領域を解放するのに使用されます。例として、pcap_setfilter()  の呼び出しによるpcap構造体のためのフィルタプログラム生成後、などです。

こちらも参照:
pcap_compile(), pcap_compile_nopcap()

ファイル gencode.c  の 384行 目の定義

参考 bpf_program::bf_insnsbpf_program::bf_len.

右より参照 pcap_close().

char* pcap_geterr pcap_t   p
 

最後のpcapライブラリエラーに付随するエラーテキストを返します。

注意:
それを返すポインタは、有効なエラー文字列を指しません。pcap_tは文字列を渡した後に閉じられてしまいます。したがって、 pcap_tが閉じられる前の文字列を使用するか、コピーしておかなくてはなりません。
こちらも参照:
pcap_perror()

ファイル pcap.cの 487  行目の定義

右より参照 bpf_error()daemon_thrdatamain().

HANDLE pcap_getevent pcap_t   p
 

Win32 仕様です。 インターフェイスpに関連付けられているイベントハンドルを返します。

このイベントは、ドライバのバッファが、読み込みの実行なしでいくらかのデータで満たされるまで待機するために、 WaitForSingleObject()やWaitForMultipleObject()などの関数に渡されます。

こちらも参照:
pcap_open_live()

ファイル Win32-Extensions.cの  31  行目の定義

int pcap_getnonblock pcap_t   p,


char *    errbuf


 

インターフェイスの"ノンブロッキング" 状態を取得します。

pcap_getnonblock() は現在のキャプチャ記述子の"ノンブロッキング"状態を返します。"savefiles"上では常に0を返します。エラーが発生すれば-1と、的確 なエラーメッセージを含んだerrbufを返します。

こちらも参照:
pcap_setnonblock()

ファイル pcap.c の498行 目の定義

参考 pcap_strerror(), snprintf.

int pcap_is_swapped pcap_t   p
 

現在のsavefileがシステムより異なるバイトオーダーを使用した時に、true を返します。

ファイル pcap.c444  行目の定義  

int pcap_live_dump pcap_t   p,


char *    filename,


int    maxsize,


int    maxpacks


 

Win32 仕様です。 キャプチャをファイルに保存します。

pcap_live_dump() はインターフェイスからネットワークトラフィックをファイルにダンプします。この関数を使用してのダンプはカーネルレベルで動作します、したがってpcap_dump()を 使用するよりも効果的です。

この関数のパラメータはインターフェイス記述子(pcap_open_live()で 獲得される)で、ダンプファイルの文字列、ファイルの最大サイズ(バイトで)とファイルが含むパケットの最大数です。ファイルの最大サイズとパケットの 最大数を0に設定することは、制限を設定しないということを意味しています。ファイルの最大サイズかパケットの最大数に到達すると、ダンプが終了します。

pcap_live_dump() はノンブロッキングのため、すぐに値を返します。pcap_live_dump_ended() はダンププロセスをチェックするためか、それが終了するまで待機するのに使用されます。pcap_close() はダンププロセスを終了する代わりに使用されます。

二つの上限(ファイルサイズとパケット数)のうち一つが上限に到達することでダンプが止まりますが、ファイルはオープンされたままなの に注目して下さい。データを正しくflushするのとファイルを安定した状態に置くために、アダプタはpcap_close()に よって閉じられなくてはなりません。

こちらも参照:
pcap_live_dump_ended(), pcap_open_live(), pcap_close(), pcap_dump_open(), pcap_dump()

ファイルWin32-Extensions.c  の298  行目の定義 

int pcap_live_dump_ended pcap_t   p,


int    sync


 

Win32 仕様です。 カーネルダンププロセスを返します。すなわち、pcap_live_dump()に よって設定された値が上限に達したことを知らせます。

pcap_live_dump_ended() は、pによって指されているインターフェイス上のpcap_live_dump()呼 び出しにより設定された上限に関する情報を、ユーザーに知らせます。もし返された値が非0であれば、どちらかの値が上限に達して、ダンププロセスが今のと ころ停止しているということを意味します。

もしsync が非0であれば、関数はダンプが終了するまでブロックし続け、そうでない場合は、即座に値を返します。

警告:
ダンププロセスに上限がない場合(pcap_live_dump() の引数がどちらも0の場合)、ダンププロセスは終了せず、syncをTRUEに設定して、アプリケーションにおける呼び出しを永遠にブロックし続けます。
こちらも参照:
pcap_live_dump()

ファイル Win32-Extensions.c  の329行 目の定義

char* pcap_lookupdev char *    errbuf
 

非推奨, pcap_findalldevs() を代わりに使用して下さい。
システム内の最初の有効なデバイスを返します。

pcap_lookupdev()pcap_open_live()pcap_lookupnet()で 使用のに適合するネットワークデバイスを指すポインタを返します。エラーがあると、NULLが返されてerrbufに適切なエラーメッ セージが含められます。

こちらも参照:
pcap_findalldevs(), pcap_open_live()

int pcap_lookupnet char *    device,


bpf_u_int32   netp,


bpf_u_int32   maskp,


char *    errbuf


 

非推奨, pcap_findalldevs() を代わりに使用して下さい。
インターフェイスのサブネットとネットマスクを返します。

pcap_lookupnet() は、ネットワークデバイスに関連付けられたネットワーク番号とネットマスクを確定するのに使用されます。netp と maskp の両方はbpf_u_int32 のポインタです。-1が返されることは、errbufに適切なエラーメッセージが含められた場合のエラーを意味しています。

こちらも参照:
pcap_findalldevs()

右より参照 main().

int pcap_loop pcap_t   p,


int    cnt,


pcap_handler    callback,


u_char *    user


 

非推奨: pcap_next_ex() を代わりに使用して下さい。パケットのグループを収集します。cnt 個のパケットが受け取られるとそれらを返しますが、pcap_open_live()で 設定されたタイムアウトを順守しないので、永遠にブロックし続けます。

pcap_loop()pcap_dispatch() に、エラーが発生するかcnt個のパケットが処理されるまでパケットの読み込みを続ける、という点を除いてよく似ています。直接読み込みのタイムアウトが 発生したときは、値を返しません。むしろ、非0を特定することはpcap_open_live()へ のタイムアウトを読み込んで、pcap_dispatch()の 呼び出しは、タイムアウトが発生した時に取り込まれるどのパケットの受信と処理をも許可します。cntの値をマイナスにセットすることは、pcap_loop()に よる無限ループを引き起こします(少なくともエラーが発生するまで)。

こちらも参照:pcap_dispatch(), pcap_next(), pcap_open_live(), pcap_open_offline(), pcap_handler


ファイルpcap.c78行 目の定義 

参考 n, pcap_offline_read()pcap_read().

右より参照 main().

int pcap_major_version pcap_t   p
 

savefileを書き出すため、pcapライブラリのメジャーなバージョンナンバーを返します。

こちらも参照:
pcap_minor_version()

ファイル pcap.c450行 目の定義

int pcap_minor_version pcap_t   p
 

savefileを書き出すため、pcapライブラリのマイナーなバージョンナンバーを返します。

こちらも参照:
pcap_major_version()

ファイルpcap.c456行 目の定義 

u_char* pcap_next pcap_t   p,


struct pcap_pkthdr   h


 

非推奨, pcap_next_ex() を代わりに使用して下さい。
次の利用可能なパケットを返します。

pcap_next() は次のパケットを読み込み(cntの値が1でpcap_dispatch() が呼び出された)、パケット内のデータにu_char のポインタを返します(そのパケットのための pcap_pkthdr 構造体はポインタを供給しません)。

こちらも参照:
pcap_dispatch(), pcap_loop()

ファイルpcap.c119行 目の定義

右より参照singleton::hdr, pcap_dispatch(), singleton::pkt.

int pcap_next_ex pcap_t   p,


struct pcap_pkthdr **    pkt_header,


u_char **    pkt_data


 

Win32 仕様。パケットをインターフェイスかオフラインキャプチャから読み込みます。

この関数は次の利用可能なパケットを取り出して、libpcapによって従来から用意されているコールバックメソッドを回避します。

pcap_next_ex は pkt_header と pkt_data パラメータを、(pcap_handler()参照)次のキャプチャされたパケットのデータ とヘッダのポインタで満たします。

戻り値は次のようになります:

  • 1 パケットが滞りなく読み込まれた時
  • 0 pcap_open_live()で 設定したタイムアウトが経過した時。この場合はpkt_header と pkt_data は有効なパケットを指しません。
  • -1 エラーが発生した時
  • -2 オフラインキャプチャからの読み込みがEOFに達した時

こちらも参照:
pcap_open_live(), pcap_loop(), pcap_dispatch(), pcap_handler()

ファイル pcap.c148行 目の定義

参考 pkt_for_fakecallback::hdr, pcap_offline_read(), pcap_read(), pcap_read_nocb_remote(), pcap_startcapture_remote(), pkt_for_fakecallback::pkt.

右より参照daemon_thrdatamain().

pcap_t* pcap_open_dead int    linktype,


int    snaplen


 

非推奨: pcap_open() を代わりに使用して下さい。キャプチャを開始せずにpcap_t 構造体を作ります。

pcap_open_dead() は、libpcap内の他の関数を呼び出す時に使用するpcap_t構造体を作成するのに使用します。これはBPFコードをコンパイルするのに libpcapを使うときだけ、典型的に使用されます。

こちらも参照:
pcap_open_offline(), pcap_open_live(), pcap_findalldevs(), pcap_compile(), pcap_setfilter(), pcap_close()

ファイル pcap.c の634行 目の定義

参考 pcap_t.

右より参照 pcap_compile_nopcap().

pcap_t* pcap_open_live char *    device,


int    snaplen,


int    promisc,


int    to_ms,


char *    ebuf


 

非推奨: pcap_open() を代わりに使用してください。直接キャプチャのための物理インターフェイスをオープンします。

pcap_open_live() は、ネットワーク上のパケットを調べるためのパケットキャプチャ記述子を獲得するのに使用されます。device はオープンするネットワークデバイスを特定する文字列です。Linuxシステムの2.2かそれ以降のカーネルでは、引数が"any"やNULLになること は、全てのインターフェイスからパケットをキャプチャできることを意味しています。snaplen はキャプチャするための最大バイト数を特定します。promisc は、インターフェイスがpromiscuous(無差別)モードにセットされているかを特定します(このパラメータがfalseでも、インターフェイスは 他の理由によりpromiscuous(無差別)モードに設定されることに注目してください)。差し当たって、これはdeviceが"any"の時には動 作しません。もし引数が"any"かNULLだったら、promiscフラグは無視されます。to_ms は読み込みのタイムアウトをミリ秒で特定します。読み込みのタイムアウトは、パケットが視認された時に必ずしもすぐにはパケットを返さないで、一回のオペ レーションでOSのカーネルから複数のパケットを読み込むのと、パケットがもっと到達するまでの期間読み込みを待つように調整します。全てのプラット フォームがタイムアウトをサポートしているわけではありませんが、サポートしないプラットフォーム上ではタイムアウトは無視されます。ebuf は、エラーか警告文を返すのに使用されます。pcap_open_live()が 失敗したかNULLを返した時にエラーテキストにセットされます。ebuf は、pcap_open_live()が 成功したときにもまた、警告文にセットされます。このケースを検知するには、呼び出し側はpcap_open_live()を 呼び出す前に、長さ0の文字列を保管して、ebufが長さ0の文字列でないならユーザーに警告文を表示する必要があります。

こちらも参照:
pcap_open_offline(), pcap_open_dead(), pcap_findalldevs(), pcap_close()

pcap_t* pcap_open_offline const char *    fname,


char *    errbuf


 

非推奨: pcap_open() を代わりに使用してください。パケットを読み込むために、savefileをtcpdump/libpcapフォーマットでオープンします。

pcap_open_offline() は、読み込みのための "savefile" をオープンするのに呼び出されます。fname はオープンするファイルの名前を特定します。ファイルはtcpdump(1) と tcpslice(1)などに使用されるのと同じフォーマットを保持しています。"-"はstdinと同義語です。errbuf はエラーテキスト返すのに使われ、pcap_open_offline()が 失敗してNULLを返した時だけセットされます。

こちらも参照:
pcap_open_live(), pcap_dump_open(), pcap_findalldevs(), pcap_close()

ファイル savefile.c  の387行 目の定義

参考 bpf_u_int32, linktype_to_dlt(), PATCHED_TCPDUMP_MAGIC, pcap_fddipad, pcap_strerror(), pcap_t, PCAP_VERSION_MAJOR, snprintf, swap_hdr(), TCPDUMP_MAGIC.

右より参照 main()pcap_open().

void pcap_perror pcap_t   p,


char *    prefix


 

prefixによって文字列の先頭に追加される接頭辞を付けられた、最後のstderr上のpcapライブラリエラーテキストをプリン トします。

こちらも参照:
pcap_geterr()

ファイル pcap.c の481行 目の定義

int pcap_sendpacket pcap_t   p,


u_char *    buf,


int    size


 

Win32 仕様。生パケット(直接)を送信します。

この関数は、ネットワーク上に生のパケットを送信します。p はパケットを送信する際に使用されるインターフェイスですが、送信するパケットのデータを包含しています(各種のプロトコルヘッダを含めて)。size は、bufによって指されるバッファの規模です。すなわち、送信するパケットのサイズです。MAC CRC は含まれる必要がありません。なぜなら、それは透過的に計算されてネットワークインターフェイスドライバに追加されるからです。パケットの送信が成功すれ ば戻り値は0、他は-1になります。

こちらも参照:
pcap_open_live()

ファイル Pcap-win32.c  の337行 目の定義

参考 PacketAllocatePacket(), PacketFreePacket(), PacketInitPacket(), PacketSendPacket(), snprintf.

pcap_send_queue* pcap_sendqueue_alloc u_int    memsize
 

Win32 仕様。 キューの送信を割り振ります。

この関数は、キューの送信を割り振ります。すなわち、pcap_sendqueue_transmit()に よって、生パケットのセットが格納されたバッファをネットワーク上に伝送させます。

memsize はバイトで表されたキューのサイズです。したがって、キューが含む最大データ量を決定します。

キューにパケットを挿入するには、pcap_sendqueue_queue() を使用して下さい。

こちらも参照:
pcap_sendqueue_queue(), pcap_sendqueue_transmit(), pcap_sendqueue_destroy()

ファイル Win32-Extensions.c  の 69行 目の定義

void pcap_sendqueue_destroy pcap_send_queue   queue
 

Win32 仕様。キューの送信を破棄します。

キューの送信を削除し、関連する全てのメモリ領域を解放します。

こちらも参照:
pcap_sendqueue_alloc(), pcap_sendqueue_queue(), pcap_sendqueue_transmit()

ファイル Win32-Extensions.c  の94行 目の定義

int pcap_sendqueue_queue pcap_send_queue   queue,


const struct pcap_pkthdr   pkt_header,


const u_char *    pkt_data


 

Win32 仕様。キューの送信にパケットを追加します。

pcap_sendqueue_queue() はパラメータqueueで指されたキューの送信の終わりに、パケットを追加します。pkt_header はパケット長とタイムスタンプで pcap_pkthdr 構造体を指します。pkt_data はパケットのデータでバッファを指します。

pcap_pkthdr 構造体はファイルにパケットを保存するのにWinPcapとlibpcapによって同じように使用されます。したがって、キャプチャファイルの送信は直接 的です。'直接(生)パケット' とは、送信するアプリケーションはプロトコルヘッダを含まなくてはならないことを意味しています。全てのパケットは'そのままで'送信されるからです。パ ケットのCRCは、ネットワークインターフェイスに透過的に追加されるため、計算される必要がありません。

こちらも参照:
pcap_sendqueue_alloc(), pcap_sendqueue_transmit(), pcap_sendqueue_destroy()

ファイル Win32-Extensions.c  の101行 目の定義

u_int pcap_sendqueue_transmit pcap_t   p,


pcap_send_queue   queue,


int    sync


 

Win32 仕様。 ネットワークに直接パケットのキューを送信します。

この関数は、ワイヤー上にキューの中身を伝送します。p はパケットが送信されるアダプタのポインタで、queue は送信するパケットを包含しているpcap_send_queue構 造体を指します(pcap_sendqueue_alloc()pcap_sendqueue_queue()を 参照)。sync は、送信オペレーションが同期されるかどうかを特定します: 非ゼロであれば、パケットはタイムスタンプを順守して送信されます。それ以外はパケットは出来るだけ早く送信されます。

戻り値は、実際に送信されたバイトの量です。それがsizeパラメータよりも小さければ、送信の間に何らかのエラーが発生したというこ とです。エラーは、ドライバ/アダプタによる問題か、一貫性のないキューの送信により引き起こされます。

注意:
この関数を使用することは、一連の pcap_sendpacket() 関数を供給することよりも効率的です。なぜなら、パケットはカーネルドライバ内でバッファされるので、コンテキストスイッチの数が減少するからです。した がって、pcap_sendqueue_transmitを使用する時に、より良いスループットを期待できるのです。

syncがTRUEにセットされている時、高精度なタイムスタンプによりカーネル内で同期されます。これには膨大な処理能力の ある CPUが必要になりますが、通常は何マイクロ秒かの精度でのパケットの送信を許可します(マシンのカウンターパフォーマンスの正確性に依存)。pcap_sendpacket()で のパケット送信では、そのような精度には達しません。

こちらも参照:
pcap_sendqueue_alloc(), pcap_sendqueue_queue(), pcap_sendqueue_destroy()

ファイル Win32-Extensions.c  の120行 目の定義

fn int pcap_setbuff pcap_t   p,


int    dim


 

Win32 仕様。 アダプタに関連するカーネルバッファのサイズをセットします。

dim はバッファのサイズを、バイトで特定します。呼び出しが成功したときの戻り値は0で、それ以外は-1です。pcap_setbuff()の 以前の呼び出しにより古いバッファがすでに作成されている場合、その古いバッファは削除され内容物は破棄されます。pcap_open_live() はデフォルトで、1MBのバッファを作成します。

こちらも参照:
pcap_open_live(), pcap_loop(), pcap_dispatch()

ファイル Pcap-win32.c  の359行 目の定義

参考 PacketSetBuff(), snprintf.

int pcap_setfilter pcap_t   p,


struct bpf_program   fp


 

フィルタをキャプチャに関連付けます。

pcap_setfilter() は、フィルタプログラムを特定するのに使用されます。fp は bpf_program 構造体のポインタで、通常pcap_compile()関 数の呼び出しの結果です。pcap_geterr()が エラーテキストを表示するのに使われるであろう失敗の時は-1 が返されます。成功のときは0が返されます。

こちらも参照:
pcap_compile(), pcap_compile_nopcap()

ファイル Pcap-win32.c292行 目の定義

参考 PacketSetBpf(), pcap_setfilter_remote(), pcap_win32strerror(), snprintf.

右より参照 daemon_unpackapplyfilter(), main().

int pcap_setmintocopy pcap_t   p,


int    size


 

Win32 仕様。シングルコールでカーネルによって受け取られるデータの最小値をセットします。

pcap_setmintocopy() は、アプリケーションからの読み込みを返すカーネル内のデータ最小値を変更します(タイムアウトが失効しない限り)。size の値が大きい場合、カーネルはユーザーにデータをコピーする前に、 幾つかのパケットが届くように待たされます。このことは、システムコールの低い数字を保証します。すなわち、低いプロセッサ処理、パケットスニッファやプ ロトコルアナライザのようなアプリケーションのセッティングに良いものです。その逆に、この変数の小さな値では、アプリケーションがパケットを受け取れる 体制になるや否や、カーネルはパケットのコピーを開始します。これは、カーネルとの良い反応が必要なリアルタイムアプリケーションにとても役立ちます。

こちらも参照:
pcap_open_live(), pcap_loop(), pcap_dispatch()

ファイル Pcap-win32.c  の377行 目の定義

参考 PacketSetMinToCopy()snprintf.

int pcap_setmode pcap_t   p,


int    mode


 

Win32 仕様。インターフェイスpの動作モードをmodeにセットします。

modeに有効な値はMODE_CAPT (デフォルトキャプチャモード) と MODE_STAT (統計モード)です。statisutical mode(統計モード)の詳細については、 "ネットワークトラフィックの統計値の収集 " を参照してください。

ファイル Pcap-win32.c  の318行 目の定義

参考 PacketSetMode(), snprintf.

int pcap_setnonblock pcap_t   p,


int    nonblock,


char *    errbuf


 

ノンブロッキングモードとブロッキングモードをスイッチします。

pcap_setnonblock()  は、 pcap_open_live()  でオープンされたキャプチャ記述子を"ノンブロッキングモード"にセットするか、nonblock引数が非0か0のどちらかに依存しつつ、"ノンブロッキ ングモード"を変更します。"savefiles"上には何の影響もありません。エラーが発生した場合、-1 が返され、errbuf は適切なエラーメッセージを包含します。それ以外は、0が返されます。"ノンブロッキングモード"において、pcap_dispatch()に よるキャプチャ記述子からの読み込みは読み込めるパケットがなければ、パケットをブロックするよりもパケットが到着するのを待ちながら値0をすぐに返しま す。pcap_loop()pcap_next() は、"ノンブロッキングモード"では作動しません。

こちらも参照:
pcap_getnonblock(), pcap_dispatch()

ファイル pcap.c528行 目の定義

参考 PacketSetReadTimeout(), pcap_strerror(), pcap_win32strerror(), snprintf.

int pcap_snapshot pcap_t   p
 

パケットがアプリケーションに届けられた時に、パケット部分の規模を(バイトで)返します。

pcap_snapshot() は、pcap_open_liveが呼ばれた時に、断片の長さを特定します。

こちらも参照:
pcap_open_live(), pcap_compile(), pcap_compile_nopcap()

ファイル pcap.c の438行 目の定義

右より参照 pcap_compile().

int pcap_stats pcap_t   p,


struct pcap_stat   ps


 

非推奨,  pcap_stats_ex() を代わりに使用して下さい。
現在のキャプチャの統計を返します。

pcap_stats() は0を返し、pcap_stat構 造体内に埋め込みます。値は、実行開始から呼び出しの時間までのパケットの統計値を表しています。エラーが発生したか根本的なパケットキャプチャがパケッ トの統計値をサポートしない場合は、-1 が返されてエラーテキストがpcap_perror() ないしは pcap_geterr()に よって獲得されます。pcap_stats() は直接キャプチャ上でだけサポートされていて、"savefiles"上ではサポートされていません。"savefiles"内に統計値が保管されないた め、"savefiles"からの読み込みの時は利用可能な統計値はありません。

こちらも参照:
pcap_stats_ex(), pcap_open_live()

ファイル Pcap-win32.c  の 60行 目の定義

参考 PacketGetStats(), pcap_stats_remote(), pcap_win32strerror(), snprintf.

右より参照 daemon_getstats(), daemon_serviceloop().

int pcap_stats_ex pcap_t   p,


struct pcap_stat   ps


 

Win32 仕様。 現在のキャプチャの統計を返します。

この関数は、pcap_stats()関 数と同様の目的と動作を保持していますが、さらにカウンター、実際にキャプチャされたパケット数も返します。

こちらも参照:
pcap_stats()

右より参照 pcap_stats_ex().

char* pcap_strerror int    error
 

pcap_strerror() は、strerror()が使用できない時に提供される関数です。

こちらも参照:
pcap_perror(), pcap_geterr()

ファイル pcap.c の 617  行目の定義

参考 snprintf.

右より参照 add_addr_to_iflist(), add_or_find_if(), daemon_AuthUserPwd(), daemon_checkauth(), daemon_unpackapplyfilter(), main_active(), main_passive(), pcap_dump_open(), pcap_findalldevs_ex(), pcap_getnonblock(), pcap_list_datalinks(), pcap_open_live(), pcap_open_offline(), pcap_opensource_remote(), pcap_remoteact_accept(), pcap_setnonblock(), pcap_startcapture_remote(), rpcap_deseraddr().


documentation. Copyright (c)2002-2003 Politecnico di Torino.
2005 translated by Telebusiness,Inc.
 All rights reserved.