| From 088ce6d1ae0a941f31b49cf85c7c57c73bc424d8 Mon Sep 17 00:00:00 2001 |
| From: Kevin Cernekee <cernekee@chromium.org> |
| Date: Sun, 30 Apr 2017 09:39:09 -0700 |
| Subject: [PATCH 3/4] CHROMIUM: Export --redirect-gateway parameters |
| |
| Report the flags passed to the --redirect-gateway and |
| --redirect-private flags, so that systems that manage routing |
| tables have hints about how the routing table should be modified. |
| |
| Signed-off-by: Paul Stewart <pstew@chromium.org> |
| Signed-off-by: Kevin Cernekee <cernekee@chromium.org> |
| --- |
| src/openvpn/route.c | 31 +++++++++++++++++++++++++++++++ |
| 1 file changed, 31 insertions(+) |
| |
| diff --git a/src/openvpn/route.c b/src/openvpn/route.c |
| index 08998d5f4dfa..a2d341d83b84 100644 |
| --- a/src/openvpn/route.c |
| +++ b/src/openvpn/route.c |
| @@ -608,6 +608,36 @@ add_block_local(struct route_list *rl) |
| } |
| } |
| |
| +static void |
| +setenv_redirect_gateway (struct env_set *es, unsigned int flags) |
| +{ |
| + struct gc_arena gc = gc_new(); |
| + if (flags & RG_ENABLE) |
| + { |
| + struct buffer val = alloc_buf_gc(256, &gc); |
| + char *name = "redirect_private"; |
| + |
| + if (flags & RG_REROUTE_GW) |
| + name = "redirect_gateway"; |
| + if (flags & RG_LOCAL) |
| + buf_printf(&val, "local,"); |
| + if (flags & RG_AUTO_LOCAL) |
| + buf_printf(&val, "autolocal,"); |
| + if (flags & RG_DEF1) |
| + buf_printf(&val, "def1,"); |
| + if (flags & RG_BYPASS_DHCP) |
| + buf_printf(&val, "bypass-dhcp,"); |
| + if (flags & RG_BYPASS_DNS) |
| + buf_printf(&val, "bypass-dns,"); |
| + if (flags & RG_BLOCK_LOCAL) |
| + buf_printf(&val, "block-local,"); |
| + buf_rmtail(&val, ','); |
| + |
| + setenv_str(es, name, BSTR(&val)); |
| + } |
| + gc_free (&gc); |
| +} |
| + |
| bool |
| init_route_list(struct route_list *rl, |
| const struct route_option_list *opt, |
| @@ -682,6 +712,7 @@ init_route_list(struct route_list *rl, |
| { |
| add_block_local(rl); |
| get_bypass_addresses(&rl->spec.bypass, rl->flags); |
| + setenv_redirect_gateway(es, rl->flags); |
| #ifdef ENABLE_DEBUG |
| print_bypass_addresses(&rl->spec.bypass); |
| #endif |
| -- |
| 2.13.0.rc0.306.g87b477812d-goog |
| |