diff options
author | Daniel Wagner <daniel.wagner@bmw-carit.de> | 2011-02-23 19:57:08 +0100 |
---|---|---|
committer | Samuel Ortiz <sameo@linux.intel.com> | 2011-02-23 19:57:08 +0100 |
commit | c30057af5e6db26136343570d72e14782538405b (patch) | |
tree | c35ce46a35d5506f869285441ea4b06f3a51bdd3 /src | |
parent | 908ad3490cbffce2be29ccb73f7547224aafbe31 (diff) | |
download | connman-c30057af5e6db26136343570d72e14782538405b.tar.gz connman-c30057af5e6db26136343570d72e14782538405b.tar.bz2 connman-c30057af5e6db26136343570d72e14782538405b.zip |
provider: Add IP setters
Diffstat (limited to 'src')
-rw-r--r-- | src/provider.c | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/src/provider.c b/src/provider.c index 2b9f0f26..3aa35371 100644 --- a/src/provider.c +++ b/src/provider.c @@ -800,6 +800,75 @@ int connman_provider_get_index(struct connman_provider *provider) return provider->element.index; } +int connman_provider_set_ipaddress(struct connman_provider *provider, + struct connman_ipaddress *ipaddress) +{ + struct connman_ipconfig *ipconfig = NULL; + + if (ipaddress->family == CONNMAN_IPCONFIG_TYPE_IPV4) { + ipconfig = __connman_service_get_ip4config( + provider->vpn_service); + } else if (ipaddress->family == CONNMAN_IPCONFIG_TYPE_IPV6) { + ipconfig = __connman_service_get_ip6config( + provider->vpn_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_provider_set_pac(struct connman_provider *provider, const char *pac) +{ + DBG("provider %p pac %s", provider, pac); + + __connman_service_set_pac(provider->vpn_service, pac); + + return 0; +} + + +int connman_provider_set_domain(struct connman_provider *provider, + const char *domain) +{ + DBG("provider %p domain %s", provider, domain); + + g_free(provider->domain); + provider->domain = g_strdup(domain); + + __connman_service_set_domainname(provider->vpn_service, domain); + + return 0; +} + +int connman_provider_set_nameservers(struct connman_provider *provider, + const char *nameservers) +{ + int i; + char **nameservers_array = NULL; + + DBG("provider %p nameservers %s", provider, nameservers); + + __connman_service_nameserver_clear(provider->vpn_service); + + if (nameservers != NULL) + nameservers_array = g_strsplit(nameservers, " ", 0); + + for (i = 0; nameservers_array[i] == NULL; i++) { + __connman_service_nameserver_append(provider->vpn_service, + nameservers_array[i]); + } + + return 0; +} + enum provider_route_type { PROVIDER_ROUTE_TYPE_NONE = 0, PROVIDER_ROUTE_TYPE_MASK = 1, |