From: Daniel Wagner Date: Wed, 23 Feb 2011 18:23:11 +0000 (+0100) Subject: network: Add IP setters X-Git-Tag: 2.0_alpha~1697 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=908ad3490cbffce2be29ccb73f7547224aafbe31;p=framework%2Fconnectivity%2Fconnman.git network: Add IP setters --- diff --git a/include/network.h b/include/network.h index a077fde..d898531 100644 --- a/include/network.h +++ b/include/network.h @@ -95,7 +95,14 @@ void connman_network_set_ipv4_method(struct connman_network *network, enum connman_ipconfig_method method); void connman_network_set_ipv6_method(struct connman_network *network, enum connman_ipconfig_method method); - +int connman_network_set_ipaddress(struct connman_network *network, + struct connman_ipaddress *ipaddress); +int connman_network_set_nameservers(struct connman_network *network, + const char *nameservers); +int connman_network_set_domain(struct connman_network *network, + const char *domain); +int connman_network_set_pac(struct connman_network *network, + const char *pac); int connman_network_set_name(struct connman_network *network, const char *name); int connman_network_set_strength(struct connman_network *network, diff --git a/src/network.c b/src/network.c index 58cb5a8..a0867fc 100644 --- a/src/network.c +++ b/src/network.c @@ -1189,6 +1189,93 @@ int __connman_network_set_ipconfig(struct connman_network *network, return 0; } +int connman_network_set_ipaddress(struct connman_network *network, + struct connman_ipaddress *ipaddress) +{ + struct connman_service *service; + struct connman_ipconfig *ipconfig = NULL; + + DBG("network %p", network); + + service = __connman_service_lookup_from_network(network); + if (service == NULL) + return -EINVAL; + + if (ipaddress->family == CONNMAN_IPCONFIG_TYPE_IPV4) + ipconfig = __connman_service_get_ip4config(service); + else if (ipaddress->family == CONNMAN_IPCONFIG_TYPE_IPV6) + ipconfig = __connman_service_get_ip6config(service); + + if (ipconfig == NULL) + return -EINVAL; + + __connman_ipconfig_set_local(ipconfig, ipaddress->local); + __connman_ipconfig_set_peer(ipconfig, ipaddress->peer); + __connman_ipconfig_set_broadcast(ipconfig, ipaddress->broadcast); + __connman_ipconfig_set_gateway(ipconfig, ipaddress->gateway); + __connman_ipconfig_set_prefixlen(ipconfig, ipaddress->prefixlen); + + return 0; +} + +int connman_network_set_pac(struct connman_network *network, + const char *pac) +{ + struct connman_service *service; + + DBG("network %p pac %s", network, pac); + + service = __connman_service_lookup_from_network(network); + if (service == NULL) + return -EINVAL; + + __connman_service_set_pac(service, pac); + + return 0; +} + +int connman_network_set_nameservers(struct connman_network *network, + const char *nameservers) +{ + struct connman_service *service; + char **nameservers_array = NULL; + int i; + + DBG("network %p nameservers %s", network, nameservers); + + service = __connman_service_lookup_from_network(network); + if (service == NULL) + return -EINVAL; + + __connman_service_nameserver_clear(service); + + if (nameservers != NULL) + nameservers_array = g_strsplit(nameservers, " ", 0); + + for (i = 0; nameservers_array[i] == NULL; i++) { + __connman_service_nameserver_append(service, + nameservers_array[i]); + } + + return 0; +} + +int connman_network_set_domain(struct connman_network *network, + const char *domain) +{ + struct connman_service *service; + + DBG("network %p domain %s", network, domain); + + service = __connman_service_lookup_from_network(network); + if (service == NULL) + return -EINVAL; + + __connman_service_set_domainname(service, domain); + + return 0; +} + /** * connman_network_set_name: * @network: network structure