Hi David,
> > I have a workable static ipv6 support patch, please review.
>
> Can you show how this integrates with VPN support? I'm guessing it
> starts something like this...
good question. Our current target is not VPN, but that should be made
work.
> diff --git a/plugins/openconnect.c b/plugins/openconnect.c
> index 891aa87..697e1d8 100644
> --- a/plugins/openconnect.c
> +++ b/plugins/openconnect.c
> @@ -180,10 +180,28 @@ static void openconnect_task_notify(struct connman_task
> *task,
> connman_provider_set_string(provider, "Gateway", value);
>
> if (!strcmp(key, "INTERNAL_IP4_ADDRESS"))
> - connman_provider_set_string(provider, "Address", value);
> + connman_provider_set_string(provider, "IP4.Address",
> value);
>
> if (!strcmp(key, "INTERNAL_IP4_NETMASK"))
> - connman_provider_set_string(provider, "Netmask", value);
> + connman_provider_set_string(provider, "IP4.Netmask",
> value);
> +
> + if (!strcmp(key, "INTERNAL_IP6_ADDRESS"))
> + connman_provider_set_string(provider, "IP6.Address",
> value);
> +
> + if (!strcmp(key, "INTERNAL_IP6_NETMASK"))
> + connman_provider_set_string(provider, "IP6.Netmask",
> value);
> +
> + /* FIXME: We should handle $CISCO_SPLIT_INC and $CISCO_SPLIT_EXC
> + routing information. The SPLIT_INC variables, if present,
> + list the routes that should be configured on the VPN and
> + the default route should _not_ be set on the VPN connection.
> + If there are no SPLIT_INC variables, there should be
> + SPLIT_EXC instead -- which list the routes that should _not_
> + be set to the VPN. But even vpnc-script doesn't handle those;
> + it just takes the lack of any SPLIT_INC routes to mean that
> + the default route should be set on the VPN. Nobody ever puts
> + anything meaningful into SPLIT_EXC.
> + $CISCO_IPV6_SPLIT_{INC,EXC} are similar. */
>
> if (!strcmp(key, "INTERNAL_IP4_DNS"))
> connman_provider_set_string(provider, "DNS", value);
> diff --git a/src/provider.c b/src/provider.c
> index 81c7b4d..beb3b82 100644
> --- a/src/provider.c
> +++ b/src/provider.c
> @@ -793,12 +793,16 @@ int connman_provider_set_string(struct connman_provider
> *provider,
> } else if (g_str_equal(key, "Gateway") == TRUE) {
> g_free(provider->element.ipv4.gateway);
> provider->element.ipv4.gateway = g_strdup(value);
> - } else if (g_str_equal(key, "Address") == TRUE) {
> + } else if (g_str_equal(key, "IP4.Address") == TRUE) {
> g_free(provider->element.ipv4.address);
> provider->element.ipv4.address = g_strdup(value);
> - } else if (g_str_equal(key, "Netmask") == TRUE) {
> + } else if (g_str_equal(key, "IP4.Netmask") == TRUE) {
> g_free(provider->element.ipv4.netmask);
> provider->element.ipv4.netmask = g_strdup(value);
> + } else if (g_str_equal(key, "IP6.Address") == TRUE) {
> + /* FIXME */
> + } else if (g_str_equal(key, "IP6.Netmask") == TRUE) {
> + /* FIXME */
> } else if (g_str_equal(key, "PAC") == TRUE) {
> g_free(provider->element.ipv4.pac);
> provider->element.ipv4.pac = g_strdup(value);
>
Something along these lines. I let Martin figure this out once we merged
the initial IPv6 support and got this working with cellular networks.
Regards
Marcel
_______________________________________________
connman mailing list
[email protected]
http://lists.connman.net/listinfo/connman