1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
Index: openvpn/tun.c
===================================================================
--- openvpn/tun.c (revision 2677)
+++ openvpn/tun.c (revision 2682)
@@ -1221,17 +1221,24 @@
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);
|