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

Reply via email to