libpcap

pcap_lookupdev()
pcap_lookupnet()
pcap_open_live()
pcap_datalink()
pcap_compile()
pcap_dispatch()
pcap_loop()

char *pcap_lookupdev(chr *errbuf)

	pcap_open_live() と pcap_lookupnet() で使用するために適切なネッ
	トワークデバイスへのポインタを返す。
	エラー時は NULL が返され、errbuf にエラーメッセージが入る。

int pcap_lookupnet(char *device, bpf_u_int32 *netp, bpf_u_int32 *maskp, char *errbuf)

	ネットワークデバイス device に関連するネットワーク番号とマスク
	を決定するために使用される。	
	エラー時は -1 が返され、errbuf にエラーメッセージが入る。

pcap_t *pcap_open_live(char *device, int snaplen, int promisc, int to_ms, char *ebuf)

	ネットワーク上のパッケート見るためのディスクリプタを取得する。
	device はオープンするネットワークデバイス、snaplen はキャプチャー
	する 最大バイトを指定。promisc は無差別透過モードにするなら 1
	を指定。to_ms は読み込みのタイムアウト(msec)を指定する。
	エラー時は NULL が返され、errbuf にエラーメッセージが入る。

int pcap_datalink(pcap_t *p)

	リンクレイヤータイプを返す。(ex: DLT_EN10MB)
	(SEE net/bpf.h)

int pcap_compile(pcap_t *p, struct bpf_program *fp, char *str, int optimize, bpf_u_int32 netmask)

	フィルタープログラムに文字列 str をコンパイルするために使用。	
	p はディスクリプタ。
	program は pcap_compile() によって埋められる。optimize は出力
	されるコードの最適化を行うかどうか(0でないなら最適化する)。 
	netmask はローカルネットワークのネットマスクを指定。

int pcap_dispatch(pcap_t *p, int cnt, pcap_handler callback, u_char *user)

	パケットを集め処理するために使用。
	cnt は処理するパケットの最大数。 cnt が -1 ならバッファ中の受
	信したケット全てを処理する。 cnt が 0 なら エラーが起きるか、
	EOF に達するかタイムアウトまで全てのパケットを処理する。
	callback は3つの引数とともに呼ばれるルーチンで、その引数は 
	pcap_dispatch から渡される u_char ポインタ、pcap_pkthdr 構造体
	へのポインタ、パケットデータへの u_char ポインタである。
	読んだパケットの数を返す。"savefile" 中で EOF に達したら 0 を
	返す。エラーの場合、-1 を返し pcap_perror() か pcap_geterr() 
	が使用可能。

int pcap_loop(pcap_t *p, int cnt, pcap_handler callback, u_char *user)

	cnt パケットが処理されるかエラーが起きるまでパケットを読み続け
	ることを除いて pcap_dispatch() と同じ。
	cnt が 負の値なら(エラーが起きなければ)永久にループする。