From: David Woodhouse Date: Tue, 27 Apr 2021 23:08:45 +0000 (+0100) Subject: Only set ip_info addresses from PPP if they aren't already set X-Git-Tag: v8.20~254 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=8e91e21bb3c4247035e1a2ac150d8ef29dad69b2;p=users%2Fdwmw2%2Fopenconnect.git Only set ip_info addresses from PPP if they aren't already set Fortinet reconnection, in particular, didn't like the addr6 being set because it *isn't* set in the new ip_info we receive in XML; only the netmask6 is set there. Signed-off-by: David Woodhouse --- diff --git a/ppp.c b/ppp.c index 672ff177..6526b0f2 100644 --- a/ppp.c +++ b/ppp.c @@ -936,7 +936,7 @@ static int handle_state_transition(struct openconnect_info *vpninfo, int dtls, ppp->ppp_state = PPPS_NETWORK; /* Ensure that we use the addresses we configured on PPP */ - if (ppp->want_ipv4) { + if (ppp->want_ipv4 && !vpninfo->ip_info.addr) { vpninfo->ip_info.addr = add_option_ipaddr(&vpninfo->cstp_options, "ppp_ipv4", AF_INET, &ppp->out_ipv4_addr); } else { @@ -944,7 +944,7 @@ static int handle_state_transition(struct openconnect_info *vpninfo, int dtls, } /* Ensure that we use the addresses we configured on PPP */ - if (ppp->want_ipv6) { + if (ppp->want_ipv6 && !vpninfo->ip_info.addr6 && !vpninfo->ip_info.netmask6) { vpninfo->ip_info.addr6 = add_option_ipaddr(&vpninfo->cstp_options, "ppp_ipv6", AF_INET6, &ppp->out_ipv6_addr); } else {