add ensure_valid_ip function