--- old/usr/src/cmd/cmd-inet/usr.sadm/dhcpmgr/com/sun/dhcpmgr/data/IPAddress.java 2014-10-07 19:19:39.688234950 +0200
+++ /dev/null 2014-10-07 19:19:39.000000000 +0200
@@ -1,251 +0,0 @@
-/*
- * CDDL HEADER START
- *
- * The contents of this file are subject to the terms of the
- * Common Development and Distribution License, Version 1.0 only
- * (the "License"). You may not use this file except in compliance
- * with the License.
- *
- * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
- * or http://www.opensolaris.org/os/licensing.
- * See the License for the specific language governing permissions
- * and limitations under the License.
- *
- * When distributing Covered Code, include this CDDL HEADER in each
- * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
- * If applicable, add the following below this CDDL HEADER, with the
- * fields enclosed by brackets "[]" replaced with your own identifying
- * information: Portions Copyright [yyyy] [name of copyright owner]
- *
- * CDDL HEADER END
- */
-/*
- * ident "%Z%%M% %I% %E% SMI"
- *
- * Copyright 1998-2002 Sun Microsystems, Inc. All rights reserved.
- * Use is subject to license terms.
- */
-package com.sun.dhcpmgr.data;
-
-import java.net.InetAddress;
-import java.util.StringTokenizer;
-import java.io.Serializable;
-import java.text.MessageFormat;
-
-/**
- * This class provides a container for holding IP Addresses. It is different
- * from java.net.InetAddress in that it allows for constructing an arbitrary IP
- * address, rather than forcing you to use InetAddress.getByName, which can
- * generate all sorts of nasty exception conditions in applets, especially when
- * doing a configuration-type app which handles addresses which are not
- * necessarily resolvable in any nameservice.
- */
-public class IPAddress implements Cloneable, Serializable {
- private byte [] bytes = new byte[] { 0, 0, 0, 0 };
-
- // Serialization id for this class
- static final long serialVersionUID = -7439646692550395242L;
-
- /**
- * Construct an empty address
- */
- public IPAddress() {
- }
-
- /**
- * Construct an address for the dotted-decimal String
supplied.
- *
- */
- public IPAddress(String s) throws ValidationException {
- try {
- // If the input looks like a valid format, try parsing it
- char [] chars = s.toCharArray();
- int dots = 0; // Count number of periods
- for (int i = 0; i < chars.length; ++i) {
- if (Character.isDigit(chars[i])) {
- continue;
- }
- if ((chars[i] == '.')) {
- if (++dots > 3) {
- // Too many; we're done
- throwException(s);
- }
- continue;
- }
- /*
- * Can't be an address, so let InetAdddress try to resolve it
- * as a name
- */
- InetAddress a = InetAddress.getByName(s);
- bytes = a.getAddress();
- return;
- }
- // Looks like an IP address; parse it
- StringTokenizer st = new StringTokenizer(s, ".");
- int b = 0;
- while (st.hasMoreTokens()) {
- /*
- * Byte won't parse anything larger than 127 since it thinks
- * everything's signed, so use Short instead
- */
- short shortVal = Short.parseShort(st.nextToken());
- if (shortVal > 255 || shortVal < 0) {
- throwException(s);
- }
- bytes[b++] = (byte)shortVal;
- }
- if (b < 4) {
- // Not a fully specified address; don't read caller's mind
- throwException(s);
- }
- } catch (ValidationException e) {
- // Just re-throw it
- throw e;
- } catch (Throwable e) {
- // Convert other exceptions to ValidationException
- throw new ValidationException(e.getMessage());
- }
- }
-
- /**
- * Construct an IPAddress from an InetAddress
- * @param a The InetAddress to convert
- */
- public IPAddress(InetAddress a) {
- bytes = a.getAddress();
- }
-
- /**
- * Construct an IP address from an arbitrary 32-bit value
- * @param addr The value to use
- */
- public IPAddress(int addr) {
- bytes = new byte[4];
- for (int i = 0; i < 4; ++i) {
- // Careful; must mask to fight sign-extension
- bytes[i] = (byte)((addr >> (8 * (3 - i))) & 0xff);
- }
- }
-
- public String toString() {
- StringBuffer b = new StringBuffer();
- for (int i = 0; i < 4; ++i) {
- if (i != 0) {
- b.append('.');
- }
- // Careful; must mask to fight sign-extension
- b.append((int)bytes[i] & 0xff);
- }
- return b.toString();
- }
-
- /**
- * Convert this address to an int
- * @return The address as an int
- */
- public int intValue() {
- int i = 0;
- for (int j = 0; j < 4; ++j) {
- // Careful; must mask to fight sign-extension
- i |= ((int)bytes[j] & 0xff) << (8 * (3 - j));
- }
- return i;
- }
-
- /**
- * Try to convert to a name
- * @return The hostname for this address, if one can be found. Otherwise,
- * dotted-decimal form of this address is returned.
- */
- public String getHostName() {
- try {
- return InetAddress.getByName(toString()).getHostName();
- } catch (Throwable e) {
- return toString();
- }
- }
-
- /**
- * Provide the individual bytes of the address a la InetAddress
- * @return A byte array of the address
- */
- public byte [] getAddress() {
- return bytes;
- }
-
- /**
- * @return the dotted-decimal string representing this address
- */
- public String getHostAddress() {
- return toString();
- }
-
- /**
- * Compare this IP address to either another IP address or a
- * java.net.InetAddress
.
- * @return true
if the addresses are the same.
- */
- public boolean equals(Object obj) {
- if (obj == null) {
- return false;
- }
-
- byte [] ba;
-
- if (obj instanceof InetAddress) {
- ba = ((InetAddress)obj).getAddress();
- } else if (obj instanceof IPAddress) {
- ba = ((IPAddress)obj).getAddress();
- } else {
- return false;
- }
-
- if (ba.length != bytes.length) {
- return false;
- }
-
- for (int i = 0; i < bytes.length; ++i) {
- if (ba[i] != bytes[i]) {
- return false;
- }
- }
-
- return true;
- }
-
- /**
- * Make a copy of this address
- * @return a new IPAddress
- */
- public Object clone() {
- IPAddress a = new IPAddress();
- a.bytes = (byte [])bytes.clone();
- return a;
- }
-
- /**
- * Retrieve the IP address as a number suitable for arithmetic operations.
- * We use a long
rather than an int
in order to
- * be able to treat it as an unsigned value, since all Java types are
- * signed.
- * @return The IP address as a long
.
- */
- public long getBinaryAddress() {
- byte [] bytes = getAddress();
- long result = 0;
- for (int i = 0; i < bytes.length; ++i) {
- // Defeat sign extension with cast & mask
- result |= ((long)bytes[i] & 0xff) << (24-(i*8));
- }
- return result;
- }
-
- private void throwException(String s)
- throws ValidationException {
- Object [] args = { s };
- MessageFormat form = new MessageFormat(
- ResourceStrings.getString("invalid_ip_address"));
- String msg = form.format(args);
- throw new ValidationException(msg);
- }
-}