From c846e2782eb67732e6e94a9b2c4f44272407c5c4 Mon Sep 17 00:00:00 2001
From: Olivier Brunel <jjk@jjacky.com>
Date: Sun, 7 Jan 2018 22:04:36 +0100
Subject: [PATCH] Fix $route_vpn_gateway not always set
Environment variable route_vpn_gateway wasn't always set before the up script,
specifically is wasn't set unless a route was also set/being pushed.
Make sure it is set even without any routes defined.
Trac: 668
Signed-off-by: Olivier Brunel <jjk@jjacky.com>
---
src/openvpn/init.c | 36 ++++++++++++++++++++++++++++++++++++
1 file changed, 36 insertions(+)
diff --git a/src/openvpn/init.c b/src/openvpn/init.c
index 133a9f5..d492e27 100644
a
|
b
|
do_open_tun(struct context *c) |
1714 | 1714 | do_init_route_list(&c->options, c->c1.route_list, |
1715 | 1715 | &c->c2.link_socket->info, c->c2.es); |
1716 | 1716 | } |
| 1717 | else |
| 1718 | { |
| 1719 | const char *gw = NULL; |
| 1720 | int dev = dev_type_enum(c->options.dev, c->options.dev_type); |
| 1721 | |
| 1722 | if (dev == DEV_TYPE_TUN && (c->options.topology == TOP_NET30 || c->options.topology == TOP_P2P)) |
| 1723 | { |
| 1724 | gw = c->options.ifconfig_remote_netmask; |
| 1725 | } |
| 1726 | if (c->options.route_default_gateway) |
| 1727 | { |
| 1728 | gw = c->options.route_default_gateway; |
| 1729 | } |
| 1730 | if (gw && strcmp(gw, "default")) |
| 1731 | { |
| 1732 | bool defined = false; |
| 1733 | const in_addr_t ip = getaddr( |
| 1734 | GETADDR_RESOLVE |
| 1735 | | GETADDR_HOST_ORDER |
| 1736 | | GETADDR_WARN_ON_SIGNAL, |
| 1737 | gw, |
| 1738 | 0, |
| 1739 | &defined, |
| 1740 | NULL); |
| 1741 | |
| 1742 | if (defined) |
| 1743 | { |
| 1744 | setenv_str(c->c2.es, "route_vpn_gateway", print_in_addr_t(ip, 0, &gc)); |
| 1745 | } |
| 1746 | else |
| 1747 | { |
| 1748 | msg(M_WARN, PACKAGE_NAME " : failed to parse/resolve default gateway: %s", |
| 1749 | gw); |
| 1750 | } |
| 1751 | } |
| 1752 | } |
1717 | 1753 | if (c->options.routes_ipv6 && c->c1.route_ipv6_list) |
1718 | 1754 | { |
1719 | 1755 | do_init_route_ipv6_list(&c->options, c->c1.route_ipv6_list, |