Hallo und gute Nacht,
Ich hoffe, du findest die Antwort noch nach dem ganzen Gequassel über Tags ;-)
Ja, ist manchmel zuviel Meta ;-)
@Christian Kruse: Kann man doch aber irgendwie ausblenden, oder?
Da kann ich noch immer nicht folgen. Wahrscheinlich verstehe ich es falsch. Ich schildere mal meinen Denkweg: Ich könnte in
$a
eine Eingabe192.168.0.0/24
haben. Die Subnetzmaske dazu wäre255.255.255.0
. Wenn ich das mit192.168.0.0
UND-verknüpfe, bleibe ich bei192.168.0.0
als Eintrag in$a2
. Das wäre aber der gleiche Wert wie für192.168.0.0/16
. Wenn ich in$b
dann eine IP192.168.255.20
habe, würde mir die für192.168.0.0/24
fälschlicherweise als Treffer in$a2
ausgewertet, obwohl sie nur für192.168.0.0/16
ein Treffer wäre.Da Du die Aufgabe so definiert hast, dass ein Eintrag von $a2 Teilmenge eines anderen Eintrags sein kann, ist mein Hinweis auf Präfixfreiheit obsolet.
Andererseits - wenn dein $a Array 192.168.0.0/24 UND 192.168.0.0/16 enthält - und es Dir nur auf Treffer ankommt, nicht aber darauf, welcher Eintrag aus $a getroffen wurde, dann kannst Du im Vorverarbeitungsschritt den Eintrag 192.168.0.0/24 auch löschen. Der ist dann redundant. Falls es Dir aber AUCH darauf ankommt, ob Du den /24 oder den /16 Eintrag getroffen hast, dann musst Du sicherstellen, dass Du die längeren Präfixe zuerst testet. Tust Du das?
Vergisss nicht: die Regeln der einen Liste(A) sind nicht unbedingt identisch mit den Regeln der zweiten Liste(B).
Und es ist nicht sinnvoll, mitten im Thread die Bezeichner des OP gegen irgendwelche eigene zu wechseln... Es sei denn, dass das GAAAANZZZZ wichtig und unabwendbar war!
Und niemand sprach davon, dass die eine oder die andere Liste konsistent wären. Bezüglich der Sicherheit ist es sogar ein guter Ansatz, auch die möglichen Inkonsistenzen in beiden Listen und deren Relationen nebst Folgen zu betrachten! Also bitte nicht aufhören.
Grüße
TS