2012-04-12 4 views
1

私はip_addressベースのファイアウォールを作っているネットワークアプリケーションを持っています。私は自分のアプリケーションでクライアントのソースIPを見つけ、クライアントのipが設定ファイルのipsのサブネットにある場合、そのIPを拒否または受け入れる。CのIPアドレス検索アルゴリズムまたはライブラリ

設定ファイルには、さまざまなIP形式があります。 192.168.0.1やサブネット192.168.0.1/24のような単一のIPでもかまいませんか、192.168.0.1-192.168.0.37のような間隔でもかまいません。これらのIPアドレスはコンフィギュレーションファイルから読み込まれ、クライアントのipがこれらのいずれかにある場合は、アクションが実行されます。

これは、confファイルから来たipsのクライアントIPの検索です。これらのPythonにはいくつかのアルゴリズムがありますが、このジョブのCまたはC++ライブラリがあります。これらの形式のipsを解析しますクライアントを検索しますか?

+0

Trie http://en.wikipedia.org/wiki/Trieを使用して住所を保存することができます。あなたは非常に高速なルックアップを得るが、あなたのプログラムは多くのメモリを使用するかもしれない。それを実装するのは簡単ですし、すでに実装しているライブラリを使用することもできます。 –

+0

私はあなたがしようとしていることを理解していると思うが、すべてのテキストが1つの段落に入っているので苦労している。あなたは少し編集して分けることができますか? <元の質問と全く関係ない、申し訳ありません> –

+1

まだ、2012年にはまだIPv4しか行っていませんか? – MSalters

答えて

1

この仕事のためのCまたはC++ライブラリはありますか?

わかりません。

しかし、私はそのようなライブラリを書く必要があった場合は、整数(32ビットのIPv4)を使用します。並べ替えとチェックははるかに高速になります。また、範囲は64ビット値で扱うことができます。

文字列を比較すると、文字列を使用すると非常に遅くなります。

+1

これに完全に同意します。 IPv4アドレスは単なる32ビット整数なので、複雑な構造は本当に必要ありません。 – dschulz

関連する問題