diff --git a/cstp.c b/cstp.c index 577805e05711cdb2fa02699bf0460d8e6bf282b8..667c80c35a92fd37ab60753fe08a18ba1e2cbf68 100644 --- a/cstp.c +++ b/cstp.c @@ -534,8 +534,7 @@ static int start_cstp_connection(struct openconnect_info *vpninfo) vpninfo->ip_info.netmask6 = new_option->value; } else vpninfo->ip_info.netmask = new_option->value; - } else if (!strcmp(buf + 7, "DNS") || - !strcmp(buf + 7, "DNS-IP6")) { + } else if (!strcmp(buf + 7, "DNS")) { int j; for (j = 0; j < 3; j++) { if (!vpninfo->ip_info.dns[j]) { @@ -543,7 +542,15 @@ static int start_cstp_connection(struct openconnect_info *vpninfo) break; } } - } else if (!strcmp(buf + 7, "NBNS")) { + } else if (!strcmp(buf + 7, "DNS-IP6")) { + int j; + for (j = 0; j < 3; j++) { + if (!vpninfo->ip_info.dns6[j]) { + vpninfo->ip_info.dns6[j] = new_option->value; + break; + } + } + } else if (!strcmp(buf + 7, "NBNS")) { int j; for (j = 0; j < 3; j++) { if (!vpninfo->ip_info.nbns[j]) { diff --git a/openconnect.h b/openconnect.h index 0f83e37cd0c31a176f68eb71a1b9384a5d814ce6..c66ced41d0a01c4169dfb13b88041b96e480aa00 100644 --- a/openconnect.h +++ b/openconnect.h @@ -276,6 +276,7 @@ struct oc_ip_info { const char *addr6; const char *netmask6; const char *dns[3]; + const char *dns6[3]; const char *nbns[3]; const char *domain; const char *proxy_pac; diff --git a/script.c b/script.c index 28746d9cd65813c8ceea837da638af59d807d2f7..92b672fac9f76e9cd36d96567c88b380f41aad96 100644 --- a/script.c +++ b/script.c @@ -248,6 +248,14 @@ void prepare_script_env(struct openconnect_info *vpninfo) if (vpninfo->ip_info.addr6) { script_setenv(vpninfo, "INTERNAL_IP6_ADDRESS", vpninfo->ip_info.addr6, 0, 0); script_setenv(vpninfo, "INTERNAL_IP6_NETMASK", vpninfo->ip_info.netmask6, 0, 0); + if (vpninfo->ip_info.dns6[0]) + script_setenv(vpninfo, "INTERNAL_IP6_DNS", vpninfo->ip_info.dns[0], 0, 0); + else + script_setenv(vpninfo, "INTERNAL_IP6_DNS", NULL, 0, 0); + if (vpninfo->ip_info.dns6[1]) + script_setenv(vpninfo, "INTERNAL_IP6_DNS", vpninfo->ip_info.dns[1], 0, 1); + if (vpninfo->ip_info.dns6[2]) + script_setenv(vpninfo, "INTERNAL_IP6_DNS", vpninfo->ip_info.dns[2], 0, 1); } else if (vpninfo->ip_info.netmask6) { char *slash = strchr(vpninfo->ip_info.netmask6, '/'); script_setenv(vpninfo, "INTERNAL_IP6_NETMASK", vpninfo->ip_info.netmask6, 0, 0);