public InetAddress[] getValueAsInetAddrs() throws IllegalArgumentException {
    	if (!isOptionAsInetAddrs(code)) {
            throw new IllegalArgumentException("DHCP option type ("+ this.code +") is not InetAddr[]");
        }
        if (this.value == null) {
            throw new IllegalStateException("value is null");
        }
        if ((this.value.length % 4) != 0)		// multiple of 4
        {
            throw new DHCPBadPacketException("option " + this.code + " is wrong size:" + this.value.length + " should be 4*X");
        }
        try {
            byte[] addr = new byte[4];
            InetAddress[] addrs = new InetAddress[this.value.length / 4];
            for (int i=0, a=0; a< this.value.length; i++, a+=4) {
                addr[0] = this.value[a];
                addr[1] = this.value[a+1];
                addr[2] = this.value[a+2];
                addr[3] = this.value[a+3];
                addrs[i] = InetAddress.getByAddress(addr); 
            }
            return addrs;
        } catch (UnknownHostException e) {
			logger.log(Level.SEVERE, "Unexpected UnknownHostException", e);
            return null;	// normally impossible
        }
    }