From 4fa5b758340447c0bc24a54793bce3a0bb149648 Mon Sep 17 00:00:00 2001 From: james Date: Sat, 26 Jan 2008 04:43:13 +0000 Subject: Fixup null interface on close, don't use ip addr flush (Alon Bar-Lev). git-svn-id: http://svn.openvpn.net/projects/openvpn/branches/BETA21/openvpn@2683 e7ae566f-a301-0410-adde-c780ea21d3b5 --- tun.c | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/tun.c b/tun.c index 7bbcea6..39c6722 100644 --- a/tun.c +++ b/tun.c @@ -1221,17 +1221,24 @@ close_tun (struct tuntap *tt) if (tt) { #ifdef CONFIG_FEATURE_IPROUTE - char command_line[256]; - /* - * Flush IP configuration for the device - */ - openvpn_snprintf (command_line, sizeof (command_line), - "%s addr flush dev %s", + if (tt->type != DEV_TYPE_NULL && tt->did_ifconfig) + { + char command_line[256]; + struct gc_arena gc = gc_new (); + + openvpn_snprintf (command_line, sizeof (command_line), + "%s addr del dev %s local %s peer %s", iproute_path, - tt->actual_name + tt->actual_name, + print_in_addr_t (tt->local, 0, &gc), + print_in_addr_t (tt->remote_netmask, 0, &gc) ); - msg (M_INFO, "%s", command_line); - system_check (command_line, NULL, S_FATAL, "Linux ip flush failed"); + + msg (M_INFO, "%s", command_line); + system_check (command_line, NULL, S_FATAL, "Linux ip addr del failed"); + + gc_free (&gc); + } #endif close_tun_generic (tt); free (tt); -- cgit