]> www.infradead.org Git - users/dwmw2/openconnect.git/commitdiff
Fortinet: assume default route if no split routes received
authorDaniel Lenski <dlenski@gmail.com>
Fri, 5 Feb 2021 02:56:05 +0000 (18:56 -0800)
committerDaniel Lenski <dlenski@gmail.com>
Mon, 29 Mar 2021 03:13:31 +0000 (20:13 -0700)
That's what openfortivpn does, too: https://github.com/adrienverge/openfortivpn/blob/0fce4ba83260ce49b4d92b5eacae3acc3891ef91/src/ipv4.c#L1005-L1009

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
fortinet.c

index 8ca87a8b2982f24b9f0893ecd2bf98169a39f34d..0703cc9782bc86c7e02dc5d3962e9a4cb9b0ebc0 100644 (file)
@@ -114,7 +114,7 @@ static int parse_fortinet_xml_config(struct openconnect_info *vpninfo, char *buf
 {
        xmlNode *xml_node, *x, *x2;
        xmlDocPtr xml_doc;
-       int ret = 0, ii, n_dns = 0 /*, n_nbns = 0, default_route = 0 */;
+       int ret = 0, ii, n_dns = 0, default_route = 1;
        char *s = NULL, *s2 = NULL;
        struct oc_text_buf *domains = NULL;
 
@@ -191,6 +191,7 @@ static int parse_fortinet_xml_config(struct openconnect_info *vpninfo, char *buf
                                                            s && s2 && *s && *s2) {
                                                                struct oc_split_include *inc = malloc(sizeof(*inc));
                                                                char *route = malloc(32);
+                                                               default_route = 0;
                                                                if (!route || !inc) {
                                                                        free(route);
                                                                        free(inc);
@@ -212,10 +213,10 @@ static int parse_fortinet_xml_config(struct openconnect_info *vpninfo, char *buf
                }
        }
 
-       /* if (default_route && *ipv4) */
-       /*      vpninfo->ip_info.netmask = strdup("0.0.0.0"); */
-       /* if (default_route && *ipv6) */
-       /*       vpninfo->ip_info.netmask6 = strdup("::/0"); */
+       if (default_route && *ipv4)
+               vpninfo->ip_info.netmask = strdup("0.0.0.0");
+       if (default_route && *ipv6)
+               vpninfo->ip_info.netmask6 = strdup("::/0");
        if (buf_error(domains) == 0 && domains->pos > 0) {
                domains->data[domains->pos-1] = '\0';
                vpninfo->ip_info.domain = add_option(vpninfo, "search", &domains->data);