diff options
author | David Sommerseth <davids@redhat.com> | 2012-01-24 12:32:46 +0100 |
---|---|---|
committer | David Sommerseth <davids@redhat.com> | 2012-01-25 18:00:10 +0100 |
commit | 415421c24ac5b62d59fb8f03076521cba6f126cc (patch) | |
tree | 7340ff0ec74131afb722445878e2a5b667331d6a /options.c | |
parent | 62c613d46dc495d747074ca030d2cbdfd255c386 (diff) | |
download | openvpn-415421c24ac5b62d59fb8f03076521cba6f126cc.tar.gz openvpn-415421c24ac5b62d59fb8f03076521cba6f126cc.tar.xz openvpn-415421c24ac5b62d59fb8f03076521cba6f126cc.zip |
Add --route-pre-down/OPENVPN_PLUGIN_ROUTE_PREDOWN script/plug-in hook
This patchs adds a script/plug-in hook which is called right before the
network routes are taken down. This gives external processes a
possibility to tear down communication over the VPN before the VPN
disappears.
One use case can be to mount a networked file system over the VPN via
--route-up. And then to unmount this file system via --route-pre-down
Signed-off-by: David Sommerseth <davids@redhat.com>
Acked-by: Gert Doering <gert@greenie.muc.de>
Diffstat (limited to 'options.c')
-rw-r--r-- | options.c | 11 |
1 files changed, 11 insertions, 0 deletions
@@ -216,6 +216,7 @@ static const char usage_message[] = " be added immediately after tun/tap open. On Windows, wait\n" " up to w seconds for TUN/TAP adapter to come up.\n" "--route-up cmd : Execute shell cmd after routes are added.\n" + "--route-pre-down cmd : Execute shell cmd before routes are removed.\n" "--route-noexec : Don't add routes automatically. Instead pass routes to\n" " --route-up script using environmental variables.\n" "--route-nopull : When used with --client or --pull, accept options pushed\n" @@ -2739,6 +2740,8 @@ options_postprocess_filechecks (struct options *options) R_OK|X_OK, "--ipchange script"); errs |= check_file_access (CHKACC_FILE, options->route_script, R_OK|X_OK, "--route-up script"); + errs |= check_file_access (CHKACC_FILE, options->route_predown_script, + R_OK|X_OK, "--route-pre-down script"); errs |= check_file_access (CHKACC_FILE, options->learn_address_script, R_OK|X_OK, "--learn-address script"); #endif /* P2MP_SERVER */ @@ -5217,6 +5220,14 @@ add_option (struct options *options, warn_multiple_script (options->route_script, "route-up"); options->route_script = p[1]; } + else if (streq (p[0], "route-pre-down") && p[1]) + { + VERIFY_PERMISSION (OPT_P_SCRIPT); + if (!no_more_than_n_args (msglevel, p, 2, NM_QUOTE_HINT)) + goto err; + warn_multiple_script (options->route_predown_script, "route-pre-down"); + options->route_predown_script = p[1]; + } else if (streq (p[0], "route-noexec")) { VERIFY_PERMISSION (OPT_P_SCRIPT); |