|
|
|
@ -1,8 +1,8 @@
|
|
|
|
|
Index: openvpn/tun.c
|
|
|
|
|
===================================================================
|
|
|
|
|
--- openvpn/tun.c (revision 2677)
|
|
|
|
|
+++ openvpn/tun.c (revision 2679)
|
|
|
|
|
@@ -1221,17 +1221,20 @@
|
|
|
|
|
+++ openvpn/tun.c (revision 2682)
|
|
|
|
|
@@ -1221,17 +1221,24 @@
|
|
|
|
|
if (tt)
|
|
|
|
|
{
|
|
|
|
|
#ifdef CONFIG_FEATURE_IPROUTE
|
|
|
|
@ -11,21 +11,27 @@ Index: openvpn/tun.c
|
|
|
|
|
- * Flush IP configuration for the device
|
|
|
|
|
- */
|
|
|
|
|
- openvpn_snprintf (command_line, sizeof (command_line),
|
|
|
|
|
+ if (tt->type != DEV_TYPE_NULL)
|
|
|
|
|
- "%s addr flush dev %s",
|
|
|
|
|
+ if (tt->type != DEV_TYPE_NULL && tt->did_ifconfig)
|
|
|
|
|
+ {
|
|
|
|
|
+ char command_line[256];
|
|
|
|
|
+ /*
|
|
|
|
|
+ * Flush IP configuration for the device
|
|
|
|
|
+ */
|
|
|
|
|
+ struct gc_arena gc = gc_new ();
|
|
|
|
|
+
|
|
|
|
|
+ openvpn_snprintf (command_line, sizeof (command_line),
|
|
|
|
|
"%s addr flush dev %s",
|
|
|
|
|
+ "%s addr del dev %s local %s peer %s",
|
|
|
|
|
iproute_path,
|
|
|
|
|
tt->actual_name
|
|
|
|
|
- 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 flush failed");
|
|
|
|
|
+ system_check (command_line, NULL, S_FATAL, "Linux ip addr del failed");
|
|
|
|
|
+
|
|
|
|
|
+ gc_free (&gc);
|
|
|
|
|
+ }
|
|
|
|
|
#endif
|
|
|
|
|
close_tun_generic (tt);
|
|
|
|
|