*privacy_string = NULL;
int prefix_length = 0, privacy = 0;
DBusMessageIter dict;
+ int type = -1;
DBG("ipconfig %p", ipconfig);
case CONNMAN_IPCONFIG_METHOD_AUTO:
if (ipconfig->type != CONNMAN_IPCONFIG_TYPE_IPV6)
- return -EINVAL;
+ return -EOPNOTSUPP;
ipconfig->method = method;
if (privacy_string != NULL)
break;
case CONNMAN_IPCONFIG_METHOD_MANUAL:
- if (address == NULL)
+ switch (ipconfig->type) {
+ case CONNMAN_IPCONFIG_TYPE_IPV4:
+ type = AF_INET;
+ break;
+ case CONNMAN_IPCONFIG_TYPE_IPV6:
+ type = AF_INET6;
+ break;
+ case CONNMAN_IPCONFIG_TYPE_UNKNOWN:
+ type = -1;
+ break;
+ }
+
+ if ((address != NULL && connman_inet_check_ipaddress(address)
+ != type) ||
+ (netmask != NULL &&
+ connman_inet_check_ipaddress(netmask)
+ != type) ||
+ (gateway != NULL &&
+ connman_inet_check_ipaddress(gateway)
+ != type))
return -EINVAL;
ipconfig->method = method;
break;
case CONNMAN_IPCONFIG_METHOD_DHCP:
- if (ipconfig->type == CONNMAN_IPCONFIG_TYPE_IPV6)
+ if (ipconfig->type != CONNMAN_IPCONFIG_TYPE_IPV4)
return -EOPNOTSUPP;
ipconfig->method = method;