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

エクスポーテッド関数
[リモートキャプチャ]



関数

int  pcap_findalldevs_ex (char *host, char *port, SOCKET sockctrl, struct pcap_rmtauth *auth, pcap_if_t **alldevs, char *errbuf)
   pcap_open()によってオープンされるネットワークデバイス のリストを作ります。

int  pcap_createsrcstr (char *source, int type, const char *host, const char *port, const char *name, char *errbuf)
  文字列のセット(ホストネーム、ポート等)を受け入れて、 新しいフォーマットに沿った ('rpcap://1.2.3.4/eth0')完全なソース文字列を返します。

int  pcap_parsesrcstr (const char *source, int *type, char *host, char *port, char *name, char *errbuf)
  ソース文字列を解析して、ソースを分割可能にするソースの一部を返します。

pcap_t pcap_open (const char *source, int snaplen, int flags, int read_timeout, struct pcap_rmtauth *auth, char *errbuf)
  トラフィックをキャプチャ/送信するために、ジェネリックソースをオープンします (WinPcapのみ)。

int  pcap_remoteact_accept (const char *address, const char *port, const char *hostlist, char *connectinghost, struct pcap_rmtauth *auth, char *errbuf)
  ネットワーク接続が受け入れられるまでブロックします(アクティブモードのみ)。

int  pcap_remoteact_close (const char *host, char *errbuf)
  アクティブ接続をドロップします(アクティブモードのみ)。

void  pcap_remoteact_cleanup ()
  アクティブ接続待機のために現在使用していたソケットを一掃します。

int  pcap_remoteact_list (char *hostlist, char sep, int size, char *errbuf)
  アクティブ接続を保持しているホストのホストネームを返します(アクティブモードのみ)。


関数の詳細

int pcap_createsrcstr char *    source,


int    type,


const char *    host,


const char *    port,


const char *    name,


char *    errbuf


 

文字列のセット(ホストネーム、ポート等)を受け入れて、新しいフォーマットに沿った('rpcap: //1.2.3.4/eth0')完全なソースを返します。

この関数はユーザーが、新たなフォーマットに従ったソースを作り出すのを手助けします。独自のソース文字列は、古いアプリケーションで リモート機能を使用しやすくしています。例えばtcpdumpを想像してみてください。tcpdumpにはキャプチャを始める先のインターフェイスを特定 する方法が一つしかありません。ですが、GUIベースのプログラムはホストネーム、ポート、それとインターフェイス名を別々に特定するより良い方法を得る ことが出来ます。そのようなケースにおいて、GUIベースのプログラムはこの関数によりソース文字列をpcap_open() 関数に通す前に作り出すことが出来ます。

引数:
source:  関数の戻す、ソース文字列を包含したユーザー割り当てのバッファ。この関数は、割り当てられたバッファが少なく ともPCAP_BUF_SIZE バイトある、と仮定します。
type:  この値は作りたいソースのタイプを特定します。以下の値とします:
  • PCAP_SRC_FILE: ローカルファイルが欲しい場合
  • PCAP_SRC_IFLOCAL: ローカルインターフェイスが欲しい場合
  • PCAP_SRC_IFREMOTE: リモートインターフェイスが欲しい場合
host:  接続したいホスト(例えば"foo.bar.com")を入れたユーザー割り当てのバッファ。ローカルホストの インターフェイスをオープンしたい時には、NULLを取ります。
port:  RPCAPプロトコルとして使用したいポート(例えば"2002")を入れたユーザー割り当てのバッファ。ロー カルホストのインターフェイスをオープンしたい時には、NULLを取ります。
name:  使用したいインターフェイス名を入れたユーザー割り当てのバッファ(例えば"eth0")。
errbuf:  エラーメッセージを含むユーザー割り当てのバッファ(PCAP_ERRBUF_SIZEサイズ、一つある場 合)。
戻り値:
全て問題がなければ'0'、エラーが発生すれば '-1'が返ります。完全なソースを含む文字列は、変数'source' で戻ります。
注意:
ソースがPCAP_BUF_SIZEよりも長い場合、余剰分は切り捨てられます。

ファイル pcap-new.c495行 目の定義

参考 PCAP_SRC_FILEPCAP_SRC_IFLOCAL, PCAP_SRC_IFREMOTE, snprintf

int pcap_findalldevs_ex char *    host,


char *    port,


SOCKET    sockctrl,


struct pcap_rmtauth   auth,


pcap_if_t **    alldevs,


char *    errbuf


 

pcap_open()関 数でオープンされるネットワークデバイスリストを作り出します。

この関数は古い 'pcap_findalldevs()' 関数のスーパーセットです。pcap_findalldevs()関数は廃止されており、ローカルマシン上にあるデバイスだけを表示します。逆に pcap_findalldevs_ex() 関数はローカルマシン上とリモートマシン上でデバイスを表示できます。さらに、 pcap_findalldevs_ex() はプラットフォーム非依存です。ローカルマシン上のアドレスを取得するために標準の pcap_findalldevs() に頼るからです。

関数がリモートマシン上のインターフェイスを一覧にしなければならない場合、その関数は新たなマシンに対してのコントロール接続をオー プンし、インターフェイスを回収して、接続をドロップします。しかし、もしこの関数がリモートマシンがアクティブモードだということを検知した場合、接続 はドロップされません(詳細は 'sockctrl' 引数を参照のこと)。同様の方法で、すでにアクティブモードにあって接続もオープンされている場合は、現存するソケットが使用されます。

この関数は、新たな構文に沿ったキャプチャデバイスを保持する文字列を作り出すため、 pcap_createsrcstr() 関数に依存します。 pcap_parsesrcstr() 関数はその逆です。

引数:
host:  参照する先のインターフェイス上のリモートホストアドレスを保持した char* バッファ。NULLを取ることがあります:その場合、関数はローカルにインストールされたインターフェイスにクエリーします。アドレスは数値 ('10.11.12.13', '1:2:3::4') と文字('foo.bar.com')です。
auth:  pcap_rmtauth 構造体を指すポインタ。このポインタは、リモートホストのRPCAP認証に必要な情報を保持します。この引数はローカルホストへクエリーする場合には有効 ではありません:その場合は、NULLを取ります。
sockctrl:  コントロール接続に使用されるソケット。この引数は、pcap_findalldevs() 関数が呼び出された時にすでにコントロール接続がオープンされている場合のみに、有効です。これは、アクティブモードが使用されている場合、介在している ファイヤーウォールを迂回するために、キャプチャマシンがクライアントに対してコントロール接続をオープンしている場合、ということです。そのような場 合、コントロール接続がすでにオープンされて、接続を新しくオープンする代わりにこの関数を使用しなければなりません。
この引数が非ゼロの場合、'host' と 'port' 引数は無効です:ソフトウェアは 'host' と 'port'で想定された値をよそに、コントロール接続を使用してネットワークアダプタを回収しようとします。この引数が非ゼロの場合、関数の終了時にソ ケットは閉じられず、次回使用時のために残ります。

引数:
port:  接続する先のネットワークポートを保持した char* バッファ(例えば "2003")。NULLを取ることがあります:その場合、関数はRPCAP_DEFAULT_NETPORTで特定された標準のポートを使用します。
alldevs:  この関数内に適切に割り当てられる'struct pcap_if_t' のポインタ。関数が値を返す時、インターフェイスの最初の要素を指すようにセットされます。リストのそれぞれの要素は'struct pcap_if_t'型のものです。
errbuf:  エラーメッセージを含むユーザー割り当てのバッファ(PCAP_ERRBUF_SIZEサイズのもの)を指すポ インタ(一つある場合)。
戻り値:
全てに異常がなければ'0'で、エラーが発生すれば'-1'。デバイスのリストは 'alldevs' 変数内に返されます。関数が正しく値を返す時、 'alldevs' はNULLではありません。つまり、この関数はシステムが何のインターフェイスを持たない時にも '-1' を返します。
エラーメッセージは 'errbuf' 変数内に返されます。エラーは幾つかの理由によります:
  • libpcap/WinPcap がローカル/リモートホスト上にインストールされていない
  • ユーザーがデバイスを一覧する十分な権利を有していない
  • ネットワークに関する問題(ネットワークトラブル)
  • RPCAP バージョンのネゴシエーションが失敗した
  • 他のエラー(メモリ不足やその他)

注意:
pcap_findalldevs()関 数呼び出しの過程で、pcap_open() でオープンできないネットワークデバイスがあるかもしれません。なぜなら例えば、そのプロセスがキャプチャリングのためにそれらをオープンする十分な権利 を有していない場合です。もしそうであれば、それらのデバイスはリスト上には現れません。

インターフェイスリストは pcap_freealldevs()を 使用して手動で割り当て解除されなければなりません。

ファイル pcap-new.c150行 目の定義

参考 pcap_addr::addr, pcap_addr::broadaddr, pcap_addr::dstaddr, host, rpcap_findalldevs_if::namelen, pcap_addr::netmask, pcap_addr::next, pcap_findalldevs(), pcap_strerror(), port, rpcap_checkmsg(), rpcap_createhdr(), rpcap_deseraddr(), RPCAP_MSG_ERROR, RPCAP_MSG_FINDALLIF_REPLY, rpcap_remoteact_getsock(), rpcap_sendauth(), snprintf, sock_cleanup(), sock_close(), sock_discard(), sock_init(), sock_open(), sock_recv(), sock_send()sock_validaddr()

pcap_t* pcap_open const char *    source,


int    snaplen,


int    flags,


int    read_timeout,


struct pcap_rmtauth   auth,


char *    errbuf


 

トラフィックをキャプチャ/送信するためにジェネリックソースをオープンします(WinPcapのみ)。

pcap_open() は全ての pcap_open_xxx() 関数をシングルコールで置き換えます。

この関数は、異なるpcap_open_xxx() 関数間の相違を隠します。したがってプログラマは、異なるオープニング関数を管理する必要はありません。このようにして 'true' のオープン関数はソースの型によって決定されます。そしてそれは、ソース文字列に包含されます(ソースの前に付けられる形で)。

この関数は、新たな構文に沿ったキャプチャデバイスを保持する文字列を作り出すため、 pcap_createsrcstr() 関数に依存します。 pcap_parsesrcstr() はその逆です。

引数:
source:  ゼロ終了の文字列はオープンするソース名を格納しています。ソース名は、WinPcapの提供する構文に沿った 接頭辞フォーマットを含んでいなければなりません。NULLの値は取りません。リナックス上では2.2およびそれ以降のカーネルにおいて、デバイス引数 "any"(例:rpcap://any)は全てのインターフェイスからパケットをキャプチャするときに使用されます。
In case the pcap_createsrcstr() 関数が使用されない場合に、新しいソース構文はこれらのフォーマットが pcap_open()関数内で使用されるようにする、ということを覚えておいてください。
  • file://filename [ローカルファイルをオープンしたい]
  • rpcap://host.foo.bar/adaptername [全て文字列、ポート番号なし]
  • rpcap://host.foo.bar:1234/adaptername [全て文字列、ポート番号含む]
  • rpcap://10.11.12.13/adaptername [IPv4 数値、ポート番号なし]
  • rpcap://10.11.12.13:1234/adaptername [IPv4 数値、ポート番号含む]
  • rpcap://[10.11.12.13]:1234/adaptername [IPv4 数値、IPv6 フォーマットで。ポート番号含む]
  • rpcap://[1:2:3::4]/adaptername [IPv6 数値、ポート番号なし]
  • rpcap://[1:2:3::4]:1234/adaptername [IPv6 数値、ポート番号含む]
  • rpcap://adaptername [ローカルアダプタ、RPCAPプロトコルを使用しないでオープンされる]
  • adaptername [ローカルアダプタをオープンするため。非推奨、互換性のために存在]
  • (NULL) [最初のローカルアダプタをオープンするため。非推奨、互換性の他に存在]
以下のフォーマットは認められていません:
  • rpcap:// [最初のローカルアダプタをオープンする]
  • rpcap://hostname/ [最初のリモートアダプタをオープンする]

引数:
snaplen:  そのまま保有されるパケットの長さ。フィルタによって受け取られるそれぞれのパケットは、最初の 'snaplen' バイトだけバッファに保管されてユーザーアプリケーションに渡されます。例えば、100に値する snaplen はパケットの最初の100バイトだけが保管されるということを意味しています。
flags:  パケットをキャプチャすることに必要な複数のフラグ。可能なフラグは以下の通りです:
  • PCAP_OPENFLAG_PROMISCUOUS: アダプタがpromiscuousモード(無差別モード)で開始するかどうかを特定します。もしアダプタをpromiscuousモードでオープンするな ら、値は '1' になります。それ以外は '0' です。この引数がfalseだとしても、インターフェイスが他の理由によりpromiscuousモードになりえる事を注意してください(例えば、他の promiscuousモードの使用可能なキャプチャプロセスが、現在そのインターフェイスを使用しているような場合)。2.2かそれ以降のカーネルのリ ナックスシステムでは( "any" 引数のデバイス)、このフラグは"any"デバイス上で動作しません。もし"any"引数が満たされている場合に、フラグ 'promisc' は無視されます。
  • PCAP_OPENFLAG_SERVEROPEN_DP: リモートキャプチャ時に、誰がデータ接続を行う権利を有しているのかを特定します('server open data path'を意味しています)。値が '1'の場合は、 データ接続がキャプチャデバイスによって始められなければならないか、を特定します('active'のような値をとる)。'0'の場合は、接続がクライ アントワークステーションによって始めらます。このフラグは、外部への接続のみを許可するファイアーウォールにまつわる問題を克服するのに使用されます。 そのような場合、キャプチャデバイスはデータ送信を許可するためにクライアントワークステーションへの接続をオープンします。事実、データ接続はランダム なポートを使用して行われるため(コントロール接続が標準のポートを使用している間)、ファイアーウォールをデータパス上のトラフィック許可に設定するこ とが困難になります。ソースがリモートインターフェイスではない場合、このフラグは無効になります。加えて、UDPプロトコルの使用によりデータ接続が成 されている場合にも無効になります。この場合では、接続がサーバーにより常時オープンされるためです。これらのケースでは、フラグは単に無視されます。
  • PCAP_OPENFLAG_UDP_DP: データ送信が(リモートキャプチャ時)UDPプロトコルで行われなければならないのかを特定します。 値が '1' の場合はUDPデータ接続で、値が '0' の場合はTCPデータ接続ということになります。コントロール接続は常時TCPベースです。UDP 接続はもっと処理が軽いですが、全てのキャプチャされたパケットがクライアントワークステーションに到達するのを保証しません。さらに、それはネットワー ク混雑時には有害な場合があります。このフラグは、ソースがリモートインターフェイスではない時には無効です。その場合、フラグは単に無視されます。
read_timeout:  ミリ秒でタイムアウトを読み込みます。タイムアウトはパケットがある時に、パケットの読み取りが必ずしもすぐに 戻るというわけではないが、一回のオペレーションでOSカーネルから複数のパケットを読み込めるようにパケットがもっと到着するのを待機するように、読み 込みを管理することに使用されます。全てのプラットフォームがタイムアウトをサポートしているわけではありません。タイムアウトをサポートしていないぷ ラットフォームにおいては、タイムアウトは無視されます。
auth:  リモートマシン上のユーザーを認証するのに必要な情報を保持している 'struct pcap_rmtauth' を指すポインタ。リモートキャプチャでない場合は、このポインタはNULLの値にセットされます。
errbuf:  この関数が失敗した時のエラーを格納している、ユーザー割り当てのバッファを指すポインタ。pcap_open() と findalldevs() はこの引数を持つ二つだけの関数です。これらの関数はエラー文字列のためのスペースを用意する pcap_t structure構造体を指すポインタを(まだ)持っていないからです。これらの関数はpcap_t ポインタ(エラーの時はNULL)を持っていないため、明らかな 'errbuf' 変数を必要とします。 'errbuf' は pcap_open_live() 関数の成功時に警告文がセットされることもあります。このケースを検知するには、関数の呼び出し元は pcap_open_live() 関数を呼び出す前に、'errbuf' に長さゼロの文字列を保管しなくてはなりません。そして、もし 'errbuf' が長さゼロの文字列ではない場合に、警告文を表示するようにしなくてはなりません。
戻り値:
関数呼び出し(pcap_compile() 等)の時に使用される引数で、オープンされたWinPcapセッションを特定する'pcap_t'ポインタ。問題が生じた時は、NULLとエラーメッセー ジを格納した変数 'errbuf' を返します。
注意:
ソースは PCAP_BUF_SIZEより大きなサイズにすることは出来ません。

 881 行目、ファイル pcap-new.c

参考 host, PCAP_BUF_SIZE, pcap_open_live(), pcap_open_offline(), pcap_opensource_remote(), pcap_parsesrcstr(), PCAP_SRC_FILE, PCAP_SRC_IFLOCAL, PCAP_SRC_IFREMOTE, pcap_t, portsnprintf

右より参照 daemon_opensource(), daemon_startcapture()

int pcap_parsesrcstr const char *    source,


int *    type,


char *    host,


char *    port,


char *    name,


char *    errbuf


 

ソースを解析して、ソースを分割可能な一部に返します。

この関数呼び出しは、 pcap_createsrcstr()の 逆のものです。NULL終了文字列を受け取って、ソースに関連している引数に返します。次のものを含みます:

  • ソースの型(ファイル、リモートアダプタ上のwinpcap、ローカルアダプタ上のwinpcap)、ソースの頭に付けられる接 頭辞で決定されます(PCAP_SRC_IF_KEY等)。
  • キャプチャが開始されるホスト(リモートキャプチャ時のみ)。
  • ソースの'直接の' 名前(ファイル名、リモートアダプタ名、ローカルアダプタ名)、ソースの前に付けられる接頭辞なしです。返される文字列はソースそのものの型を含んではい ません("file://" や rpcap:// その他を含まない)。

ユーザーは必要のないときに、これら幾つかの引数を省略できます。

引数:
source:  WinPcapソースを格納しているNULL終了の文字列
type:  整数を指すポインタ、選択されたソースと関連付けられているコードを返すのに使用されます。コードは次のうちの 一つを取ります:
  • PCAP_SRC_FILE
  • PCAP_SRC_IFLOCAL
  • PCAP_SRC_IFREMOTE ソース文字列が存在しない場合か('source == NULL')、空である場合('*source == NULL')、PCAP_SRC_IF_LOCAL(pcap_open_live() 呼び出しの準備が出来ている)を返します。この動作は古いアプリケーション(tcpdump等)との互換性のために存在しています。したがって、新しい構 文に移し替える事を勧めます。
この引数はユーザーに必要のないときには、NULLを取ります。

引数:
host:  キャプチャが開始されるホスト名を返すのに使用される、ユーザー割り当てのバッファ(サイズは PCAP_BUF_SIZE)。この変数はリモートキャプチャ時のみに有効です。その他に、返される文字列は空になります("")。ユーザーに必要のない 場合はこの引数はNULLを取ります。
port:  RPCAPが他のホストにコンタクトを取る時に必要なポートを返すのに使用される、ユーザー割り当てのバッファ (サイズはPCAP_BUF_SIZE)。この変数はリモートキャプチャ時と、ユーザーが標準でないポートを使用したい時のみに有効です。その他に、替え 割れる文字列は空になります("")。リモートキャプチャの時に、空の文字列は"標準の RPCAP ポートを使用すること"を意味します。ユーザーに必要のない場合はこの引数はNULLを取ります。
name:  ソース名を返すのに使用される、ユーザー割り当てのバッファ(PCAP_BUF_SIZEのサイズ)。ソースの 頭に付けられる接頭辞はありません。名前が存在しない場合(例えばソースがデフォルトアダプタを表す 'rpcap://' を包含しているような場合)、NULLを返します。ユーザーに必要のない場合はこの引数はNULLを取ります。
errbuf:  エラーメッセージを包含するユーザー割り当てのバッファ(PCAP_ERRBUF_SIZEのサイズ)を指すポ インタ(一つある場合)。ユーザーに必要のない場合、この引数はNULLを取ります。
戻り値:
全て正常であれば'0'で、エラーが発生した場合は'-1'となります。参照により渡された適切な変数に、要求された値(ホスト 名、ネットワークポート、ソースの型)が返されます。

 636 行目の定義、ファイル pcap-new.c

参考 host, PCAP_BUF_SIZE, PCAP_SRC_FILE, PCAP_SRC_IFLOCAL, PCAP_SRC_IFREMOTE, portsnprintf

右四厘参照 pcap_open(), pcap_open_live()pcap_opensource_remote()

int pcap_remoteact_accept const char *    address,


const char *    port,


const char *    hostlist,


char *    connectinghost,


struct pcap_rmtauth   auth,


char *    errbuf


 

新たなネットワーク接続を受け入れるまで接続をブロックします(アクティブモードのみ)。

この関数はアクティブモードでクライアントを処理することを可能にする、という定義をされた関数です。つまりアクティブモードにおいて は、サーバーはクライアントに対して接続をオープンするので、クライアントは接続を待機するためにソケットをオープンしなければなりません。新たな接続が 受け入れられた場合、RPCAPプロトコルはいつも通りに開始されます。違いは、接続がサーバーによって開始された、という点だけです。

この関数は一つの接続だけを受け入れます。そして待機しているソケットをクローズします。このことは、エラーが発生した場合に、アプリ ケーションが他の接続を受け入れるためにもう一度この関数を呼び出す、ということを意味しています。

この関数は新たな接続が受け入れられた時に(有効なホスト 'connectinghost'から来るもの)値を返します。それ以外はエラーを返します。

引数:
address:  バインドしなければならないネットワークアドレスを含んだ文字列。大抵の場合はNULL( '全てのローカルアドレスをバインドする' を意味する)です。
port:  バインドしなければならないネットワークポートを含んだ文字列。大抵の場合はNULL( 'あらかじめ定義したポートをバインドする'を意味する。すなわち、RPCAP_DEFAULT_NETPORT_ACTIVE)。
hostlist:  接続を待機する先のホストのホスト名を含んだ文字列。NULLを取ることがあります( '全てからの接続を受け入れる'を意味する)。ホスト名は RPCAP_HOSTLIST_SEP list内の文字によって区切られます。
connectinghost:  こちら側に接続しようとしているホスト名を保管するユーザー割り当てのバッファ。この変数は少なくとも、 RPCAP_HOSTLIST_SIZE のサイズでなくてはなりません。
auth:   pcap_rmtauth 構造体を指すポインタ。このポインタは、リモートホストへのRPCAP接続を認証するのに必要な情報を保持します。
errbuf:  エラーメッセージを保管する、ユーザー割り当て(PCAP_ERRBUF_SIZEのサイズ)のバッファを指す ポインタ(一つある場合)。
戻り値:
全てに異常がない場合は SOCKET 識別詞を返します。エラーが発生した場合は、マイナスの数値が返されます。エラーメッセージは、変数errbuf内に返されます。 '-1'を返した場合、全て正常だがホストが認証されませんでした、ということを意味します。'-2'の場合は、回復不能なエラー(例えば、ソケットをバ インドできないなどのようなケース)。 '-3'の場合は、認証が失敗しました、ということを意味します。認証チェックは、接続ホストがこのホストに接続することを許可されているものである時に 限り実行されます。
こちら側に接続しているホストは、変数 hostlist に返されます。それらはユーザーが割り当てなくてはなりません。この変数は、ホストが許可された時、接続が拒否された時のどちらの場合もホストネームを格 納します。

警告:
この関数は新しいコントロール接続が設定するソケットを返しますが、この変数は使用されるべきものではありません。この変数は幾 つかのlibpcap内部変数に保管され、またライブラリによって自動的に管理されます。つまり、続く全てのfindalldevs() と pcap_open() 関数の呼び出しが、ホストが所定の場所にコントロール接続を保持しているものかどうかをチェックします。もしそうであれば、そのホストが使用されます。

この関数は、スレッド内で使用する際に幾つかの問題点があります。accept()の中にこの関数呼び出しがブロックされる時 にストップされるようなスレッドの場合です。こういったケースでは、接続を受け入れたソケットは開放されないので(スレッド強制終了は無理やりに過ぎま す)、プログラム(プロセス)がストップするまで他の接続を受け入れることは出来ません。問題解決のためには、 pcap_remoteact_cleanup()関数を呼び出しま す。

 996 行目、 pcap-new.cのファイル。

参照 activeHosts, activehosts::host, hostlist, activehosts::next, pcap_strerror(), port, rpcap_sendauth(), rpcap_senderror(), snprintf, SOCK_ASSERT, sock_check_hostlist(), sock_close(), sock_cmpaddr(), sock_geterror(), sock_init(), sock_open(), sock_validaddr(), activehosts::sockctrl, SOCKETsockmain

void pcap_remoteact_cleanup  
 

アクティブ接続の待機のために、現在使用しているソケットを一掃します。

この関数はとても"汚い仕事"をします。実際は、pcap_remoteaccept() が新しいスレッド内部で消されても、待機しているソケットは開放されません。この関数は、次のpcap_remoteact_accept() 関数呼び出しを実行できるように、ソケットを一掃することが出来ます。

この関数は、新しいスレッド内で、This function is useful *only* if you launch pcap_remoteact_accept() 関数を開始する時とスレッドをストップさせる(強引に)時に"のみ"、有効です(例えば、ユーザーが考えを変えてアクティブ接続を待機する必要がまったく なくなった、等)。ですから基本的には、使用の流れは以下のようになります:

  • 新しいスレッドを開始する
  • pcap_remoteact_acceptを呼び出す
  • この新しいスレッドがつぶされた場合、pcap_remoteact_cleanup()関数を呼び出す

この関数は、この目的以外の他のケースに対しては何の効果もありません。

戻り値:
ありません。

1249 行目、 pcap-new.cのファイル。

参照 sock_cleanup()

int pcap_remoteact_close const char *    host,


char *    errbuf


 

アクティブ接続をドロップします(アクティブモードでのみ)。

この関数は、"アクティブモード"で応対するクライアントを許可するために定義されました。この関数はまだ所定の場所に存在するアク ティブコネクションをクローズし、"aktiveHost"リストからホストネームを消去します。この点から先は、クライアントはその場所にあるどのホス トとも接続しません。

引数:
host:  アクティブ接続をクローズしたいホストのホストネームを保持する文字列。
errbuf:  エラーメッセージを格納するユーザー割り当てのバッファ(PCAP_ERRBUF_SIZEのサイズ)を指すポ インタ(一つある時)。
戻り値:
全てが正常であれば、'0'。エラーが発生した場合は'-1'。エラーメッセージは変数errbuf内に返されます。

1153 行目、pcap-new.cのファイル。

参照 activeHosts, activehosts::host, activehosts::next, rpcap_createhdr(), snprintf, sock_cleanup(), sock_close(), sock_cmpaddr(), sock_send()activehosts::sockctrl.

int pcap_remoteact_list char *    hostlist,


char    sep,


int    size,


char *    errbuf


 

アクティブ接続を保持しているホストのホストネームを返します(アクティブモードでのみ)。

この関数は、"アクティブモード"で応対するクライアントを許可するために定義されました。この関数は、現在アクティブ接続を捧持して いるホストのリストを返します。この関数は、まだ所定の場所に存在しているアクティブ接続を削除するのに有効です。

引数:
hostlist:  現在接続中のホストのリストを保持するユーザー割り当てのバッファ
sep:  ホスト間の分離記号(例、',')として使用される文字
size:  hostlist バッファのサイズ
errbuf:  エラーメッセージを格納するユーザー割り当てのバッファ(PCAP_ERRBUF_SIZEのサイズ)を指すポ インタ(in case there is one)。
戻り値:
全てが正常であれば'0'。エラー場発生した場合は '-1'。エラーメッセージは変数 errbuf へ返されます。

1285 行目、 pcap-new.cのファイル

参照 activeHosts, activehosts::host, hostlist, activehosts::next, RPCAP_HOSTLIST_SIZE, size, snprintfsock_geterror()


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