2012-04-12 4 views
1

Ich habe eine Netzwerkanwendung, die ip_address basierte Firewall macht. Ich finde die Quell-IP des Clients in meiner Anwendung und dann, wenn die IP des Clients im Subnetz der ips in meiner Konfigurationsdatei ist, dann leugne oder akzeptiere ich diese IP.IP-Adresse Suchalgorithmus oder Bibliothek in C

In der Konfigurationsdatei können verschiedene IP-Formate vorhanden sein. Es kann eine einzelne IP wie 192.168.0.1 oder ein Subnetz 192.168.0.1/24 oder ein Intervall wie 192.168.0.1-192.168.0.37 sein. Diese IP-Adressen werden aus der Konfigurationsdatei gelesen, und wenn die Client-IP-Adresse in einer dieser IP-Adressen ist, wird die Aktion ausgeführt.

Es ist eine Suche des Clients ip in den ips, die von conf-Datei kommen.Es gibt einige Algorithmen in Python für diese. Aber gibt es eine C oder C++ Bibliothek für diesen Job.Das wird die ips in diesen Formaten analysieren und suche den Kunden?

+0

könnten Sie eine Trie http://en.wikipedia.org/wiki/Trie verwenden, um die Adressen zu speichern. Sie erhalten sehr schnelle Suchvorgänge, aber Ihr Programm benötigt möglicherweise viel Speicher. Es ist einfach, es zu implementieren, oder Sie können eine Bibliothek verwenden, die es bereits implementiert. –

+0

Ich denke, ich verstehe, was Sie tun wollen, aber ich kämpfe, weil der gesamte Text in einem Absatz ist. Könntest du es irgendwie bearbeiten und aufteilen?

+1

BTW, immer noch nur IPv4 in 2012? – MSalters

Antwort

1

Gibt es für diesen Job eine C- oder C++ - Bibliothek?

Ich weiß es nicht.

Aber wenn ich eine solche Bibliothek schreiben müsste, dann würde ich Integer (32-Bit für IPv4) verwenden. Das Sortieren und Überprüfen wird dann viel schneller. Und Bereiche können mit 64-Bit-Werten adressiert werden.

Die Verwendung von Strings wäre im Vergleich schmerzhaft langsam.

+1

Stimme voll und ganz zu. Komplexe Strukturen sind nicht erforderlich, da eine IPv4-Adresse nur eine 32-Bit-Ganzzahl ist. – dschulz