diff --git a/cstp.c b/cstp.c index bb79e7e..144666e 100644 --- a/cstp.c +++ b/cstp.c @@ -217,6 +217,8 @@ static int start_cstp_connection(struct openconnect_info *vpninfo) buf_append(buf, sizeof(buf), "X-CSTP-MTU: %d\r\n", mtu); buf_append(buf, sizeof(buf), "X-CSTP-Address-Type: %s\r\n", vpninfo->disable_ipv6 ? "IPv4" : "IPv6,IPv4"); + if (!vpninfo->disable_ipv6) + buf_append(buf, sizeof(buf), "X-CSTP-Full-IPv6-Capability: true\r\n"); buf_append(buf, sizeof(buf), "X-DTLS-Master-Secret: "); for (i = 0; i < sizeof(vpninfo->dtls_secret); i++) buf_append(buf, sizeof(buf), "%02X", vpninfo->dtls_secret[i]); @@ -407,14 +409,14 @@ static int start_cstp_connection(struct openconnect_info *vpninfo) dns->route = new_option->value; dns->next = vpninfo->split_dns; vpninfo->split_dns = dns; - } else if (!strcmp(buf + 7, "Split-Include")) { + } else if (!strcmp(buf + 7, "Split-Include") || !strcmp(buf + 7, "Split-Include-IP6") ) { struct split_include *inc = malloc(sizeof(*inc)); if (!inc) continue; inc->route = new_option->value; inc->next = vpninfo->split_includes; vpninfo->split_includes = inc; - } else if (!strcmp(buf + 7, "Split-Exclude")) { + } else if (!strcmp(buf + 7, "Split-Exclude") || !strcmp(buf + 7, "Split-Exclude-IP6")) { struct split_include *exc = malloc(sizeof(*exc)); if (!exc) continue;