2014-02-18 16 views
5

Ich will ein All-inclusive-IP-Bereich in commons-net machen, aber wenn ich versuche,Commons-net 3.3 SubnetUtils erlaubt keine 0.0.0.0/0

SubnetUtils subnetUtils = new SubnetUtils("0.0.0.0", "0.0.0.0"); 

oder gleich:

SubnetUtils subnetUtils = new SubnetUtils("0.0.0.0/0"); 

ich erhalte eine Ausnahme:

java.lang.IllegalArgumentException: Value [0] not in range (0,32] 
at org.apache.commons.net.util.SubnetUtils.rangeCheck(SubnetUtils.java:304) 
at org.apache.commons.net.util.SubnetUtils.calculate(SubnetUtils.java:229) 
at org.apache.commons.net.util.SubnetUtils.<init>(SubnetUtils.java:63) 

ich sah es für das bereits ein Ticket: https://issues.apache.org/jira/browse/NET-511. Sie sagen, dass das Problem in der nächsten (3.4) Version gelöst wird.

Zu der Zeit commons-net 3.4 ist freigegeben, gibt es eine Problemumgehung (wie eine Liste von SubnetUtils Objekte), die zusammen jede IPv4-Adressen ermöglicht?

Antwort

2

Ja, es gibt ein Problem zu umgehen, mit der Liste SubnetUtils Objekte, wie Sie erwähnt:

CIDR Signature: [0.255.255.255/1] Netmask: [128.0.0.0] 
First Address: [0.0.0.0] 
Last Address: [127.255.255.255] 

CIDR Signature: [255.255.255.255/1] Netmask: [128.0.0.0] 
First Address: [128.0.0.0] 
Last Address: [255.255.255.255] 

Oder mit Java-Code:

SubnetUtils subnetUtils1 = new SubnetUtils("0.255.255.255/1"); 
SubnetUtils subnetUtils2 = new SubnetUtils("255.255.255.255/1"); 
+1

Dank. Es ist lächerlich, dass es nicht erlaubt ist. Wie sollen wir einen Pass-All-Filter basierend auf Präferenzen erstellen? – NotGaeL