From: james Date: Sun, 17 Feb 2008 07:05:49 +0000 (+0000) Subject: Cleanup IP address for persistence interfaces for tap and also using X-Git-Tag: v2.1_rc8~22 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=252a728256d60770dfaea235dae4e21648be5407;p=thirdparty%2Fopenvpn.git Cleanup IP address for persistence interfaces for tap and also using ifconfig, gentoo#209055 (Alon Bar-Lev). git-svn-id: http://svn.openvpn.net/projects/openvpn/branches/BETA21/openvpn@2748 e7ae566f-a301-0410-adde-c780ea21d3b5 --- diff --git a/tun.c b/tun.c index 39c672241..349a4dec2 100644 --- a/tun.c +++ b/tun.c @@ -1220,26 +1220,44 @@ close_tun (struct tuntap *tt) { if (tt) { -#ifdef CONFIG_FEATURE_IPROUTE if (tt->type != DEV_TYPE_NULL && tt->did_ifconfig) { char command_line[256]; struct gc_arena gc = gc_new (); +#ifdef CONFIG_FEATURE_IPROUTE + if (is_tun_p2p (tt)) + { + openvpn_snprintf (command_line, sizeof (command_line), + "%s addr del dev %s local %s peer %s", + iproute_path, + tt->actual_name, + print_in_addr_t (tt->local, 0, &gc), + print_in_addr_t (tt->remote_netmask, 0, &gc) + ); + } + else + { + openvpn_snprintf (command_line, sizeof (command_line), + "%s addr del dev %s %s/%d", + iproute_path, + tt->actual_name, + print_in_addr_t (tt->local, 0, &gc), + count_netmask_bits(print_in_addr_t (tt->remote_netmask, 0, &gc)) + ); + } +#else openvpn_snprintf (command_line, sizeof (command_line), - "%s addr del dev %s local %s peer %s", - iproute_path, - tt->actual_name, - print_in_addr_t (tt->local, 0, &gc), - print_in_addr_t (tt->remote_netmask, 0, &gc) - ); + IFCONFIG_PATH "%s addr 0.0.0.0", + tt->actual_name + ); +#endif 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); }