public void setAttributeValue(String value) {
		if (value == null || value.length() < 7 || value.length() > 15)
			throw new IllegalArgumentException("bad IP number");
		
		StringTokenizer tok = new StringTokenizer(value, ".");
		if (tok.countTokens() != 4)
			throw new IllegalArgumentException("bad IP number: 4 numbers required");
		
		byte[] data = new byte[4];
		for (int i = 0; i < 4; i++) {
			int num = Integer.parseInt(tok.nextToken());
			if (num < 0 || num > 255)
				throw new IllegalArgumentException("bad IP number: num out of bounds");
			data[i] = (byte)num;
		}
		
		setAttributeData(data);
		
		this.cachedValue = value;
		this.cachedHash = data.hashCode();
	}