Check netmask, e.g. - Java Network

Java examples for Network:IP Address

Description

Check netmask, e.g.

Demo Code

/*/*from   ww  w.  j a v a 2 s  .  com*/
 * Licensed to the Apache Software Foundation (ASF) under one or more
 *  contributor license agreements.  See the NOTICE file distributed with
 *  this work for additional information regarding copyright ownership.
 *  The ASF licenses this file to You under the Apache License, Version 2.0
 *  (the "License"); you may not use this file except in compliance with
 *  the License.  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 *
 */
import java.net.InetAddress;
import java.net.UnknownHostException;
import org.apache.log4j.Logger;

public class Main{
    private static final Logger log = Logger
            .getLogger(InetAddressUtil.class);
    /**
     * Check netmask, e.g. 255.255.255.240 is fine, 255.255.240.16 is illegal (needs to be 255.255.240.0)
     * @param netmask The netmask address.
     * @return An integer value. -1 if illegal netmask, otherwise 0, 1, 2, 3
     * 
     * @deprecated This was an internal implementation detail of the
     *      method {@link #contains} and should never have been
     *      made public. Furthermore it's broken for IPv6.
     *      (However, there is no real replacement. If you
     *      need this functionality, you should rewrite it
     *      yourself.)
     */
    public static int checkNetmask(InetAddress netmask) {
        String[] parts = netmask.getHostAddress().split("\\.");
        Integer[] numbers = new Integer[4];
        for (int i = 0; i < 4; i++) {
            numbers[i] = new Integer(parts[i]);
        }

        for (int i = 0; i < 4; i++) {
            log.debug(".checkNetmask(): Check part: " + numbers[i]);
            if (0 <= numbers[i].intValue() && numbers[i].intValue() <= 255) {
                if (numbers[i].intValue() != 255) {
                    for (int k = i + 1; k < 4; k++) {
                        if (numbers[k].intValue() != 0) {
                            log.error(".checkNetmask(): Illegal Netmask: "
                                    + netmask);
                            return -1;
                        }
                    }
                    return i;
                } else {
                    continue;
                }
            } else {
                // FIXME: This check not really be necessary because java.net.UnknownHostException should be thrown long time before
                log.error(".checkNetmask(): Illegal Netmask: " + netmask);
                return -1;
            }
        }
        if (log.isDebugEnabled()) {
            log.debug("All parts equal 255: " + netmask);
        }
        return 3;
    }
}

Related Tutorials