[PATCH] core: fix route metric set to -1 on DHCP renewal

2018-09-21 Thread Frederic Danis
The first DHCP renew after setting back Ethernet metric to default (-1)
applies a metric of 4294967295 (uint16 -1) instead of the default metric.

The route becomes:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 0.0.0.0 0.0.0.0 U 7000 0 ppp0
0.0.0.0 192.168.19.193  0.0.0.0 UG-1 0 0 eth0
10.64.64.64 0.0.0.0 255.255.255.255 UH0  0 0 ppp0
10.64.64.64 0.0.0.0 255.255.255.255 UH7000 0 ppp0
10.250.0.0  0.0.0.0 255.255.0.0 U 50 0 0 tun0
192.168.19.00.0.0.0 255.255.255.0   U 1000 0 eth0
192.168.19.193  0.0.0.0 255.255.255.255 UH1000 0 eth0
217.114.201.194 192.168.19.193  255.255.255.255 UGH   1000 0 eth0

Route update traces:
Sep 20 09:53:11.869027 tap-0FB1 NetworkManager[762]:  libsystemd: DHCP 
CLIENT (0xfd5eaeb9): REQUEST (renewing)
Sep 20 09:53:11.873766 tap-0FB1 NetworkManager[762]:  libsystemd: DHCP 
CLIENT (0xfd5eaeb9): ACK
Sep 20 09:53:11.873792 tap-0FB1 NetworkManager[762]:  libsystemd: DHCP 
CLIENT (0xfd5eaeb9): lease expires in 1min 58s
Sep 20 09:53:11.873800 tap-0FB1 NetworkManager[762]:  libsystemd: DHCP 
CLIENT (0xfd5eaeb9): T2 expires in 1min 35s
Sep 20 09:53:11.873808 tap-0FB1 NetworkManager[762]:  libsystemd: DHCP 
CLIENT (0xfd5eaeb9): T1 expires in 50s
Sep 20 09:53:11.873845 tap-0FB1 NetworkManager[762]:  dhcp4 (eth0): 
client event 4
Sep 20 09:53:11.873853 tap-0FB1 NetworkManager[762]:  dhcp4 (eth0): 
lease available
Sep 20 09:53:11.873881 tap-0FB1 NetworkManager[762]:   dhcp4 (eth0):   
address 192.168.19.100
Sep 20 09:53:11.873890 tap-0FB1 NetworkManager[762]:   dhcp4 (eth0):   
plen 24
Sep 20 09:53:11.873899 tap-0FB1 NetworkManager[762]:   dhcp4 (eth0):   
expires in 120 seconds
Sep 20 09:53:11.873916 tap-0FB1 NetworkManager[762]:   dhcp4 (eth0):   
nameserver '192.168.19.193'
Sep 20 09:53:11.873925 tap-0FB1 NetworkManager[762]:   dhcp4 (eth0):   
hostname 'TAPOFB1'
Sep 20 09:53:11.873932 tap-0FB1 NetworkManager[762]:   dhcp4 (eth0):   
gateway 192.168.19.193
Sep 20 09:53:11.874064 tap-0FB1 NetworkManager[762]:   dhcp4 (eth0): 
state changed bound -> bound
Sep 20 09:53:11.874082 tap-0FB1 NetworkManager[762]:  
device[0x558dc60b3140] (eth0): new DHCPv4 client state 1
Sep 20 09:53:11.874535 tap-0FB1 NetworkManager[762]:  
device[0x558dc60b3140] (eth0): ip4-config: update (commit=1, 
new-config=0x558dc6110be0)
Sep 20 09:53:11.874569 tap-0FB1 NetworkManager[762]:  platform: address: 
adding or updating IPv4 address: 192.168.19.100/24 lft 120sec pref 120sec 
lifetime 237-0[120,120] dev 2 flags noprefixroute src unkn
Sep 20 09:53:11.874626 tap-0FB1 NetworkManager[762]:  platform-linux: 
event-notification: RTM_NEWADDR, flags 0, seq 141: 192.168.19.100/24 lft 120sec 
pref 120sec lifetime 237-237[120,120] dev 2 flags noprl
Sep 20 09:53:11.874653 tap-0FB1 NetworkManager[762]:  platform: signal: 
address 4 changed: 192.168.19.100/24 lft 120sec pref 120sec lifetime 
237-237[120,120] dev 2 flags noprefixroute src kernel
Sep 20 09:53:11.874671 tap-0FB1 NetworkManager[762]:  
device[0x558dc60b3140] (eth0): queued IP4 config change
Sep 20 09:53:11.874699 tap-0FB1 NetworkManager[762]:  platform-linux: 
do-add-ip4-address[2: 192.168.19.100/24]: success
Sep 20 09:53:11.874723 tap-0FB1 NetworkManager[762]:  platform: route: 
append IPv4 route: 0.0.0.0/0 via 192.168.19.193 dev 2 metric 4294967295 mss 
0 rt-src dhcp
Sep 20 09:53:11.874778 tap-0FB1 NetworkManager[762]:  platform-linux: 
event-notification: RTM_NEWROUTE, flags excl,create, seq 142: 0.0.0.0/0 via 
192.168.19.193 dev 2 metric 4294967295 mss 0 rt-src rt-dhcl
Sep 20 09:53:11.874809 tap-0FB1 NetworkManager[762]:  platform: signal: 
route   4   added: 0.0.0.0/0 via 192.168.19.193 dev 2 metric 4294967295 mss 0 
rt-src rt-dhcp scope global
Sep 20 09:53:11.874846 tap-0FB1 NetworkManager[762]:  platform-linux: 
do-add-ip4-route[0.0.0.0/0 via 192.168.19.193 dev 2 metric 4294967295 mss 0 
rt-src rt-dhcp scope global]: success
Sep 20 09:53:11.874867 tap-0FB1 NetworkManager[762]:  platform: 
ip4-route: delete 0.0.0.0/0 via 192.168.19.193 dev 2 metric 100 mss 0 rt-src 
rt-dhcp scope global
Sep 20 09:53:11.874904 tap-0FB1 NetworkManager[762]:  platform-linux: 
event-notification: RTM_DELROUTE, flags 0, seq 143: 0.0.0.0/0 via 
192.168.19.193 dev 2 metric 100 mss 0 rt-src rt-dhcp scope global
Sep 20 09:53:11.874930 tap-0FB1 NetworkManager[762]:  platform: signal: 
route   4 removed: 0.0.0.0/0 via 192.168.19.193 dev 2 metric 100 mss 0 rt-src 
rt-dhcp scope global
Sep 20 09:53:11.874961 tap-0FB1 NetworkManager[762]:  platform-linux: 
do-delete-ip4-route[0.0.0.0/0 via 192.168.19.193 dev 2 metric 100 mss 0 rt-src 
rt-dhcp scope global]: success
Sep 20 09:53:11.874983 tap-0FB1 NetworkManager[762]:  platform: 
ip4-dev-route: register 192.168.19.0/24 via 0.0.0.0 dev 2 metric 0 mss 0 rt-src 
rt-kernel scope link pref-src 

[PATCH] core: fix route metric set to -1 on DHCP renewal

2018-09-20 Thread Frederic Danis
The first DHCP renew after setting back Ethernet metric to default (-1)
applies a metric of 4294967295 (uint16 -1) instead of the default metric.

The route becomes:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 0.0.0.0 0.0.0.0 U 7000 0 ppp0
0.0.0.0 192.168.19.193  0.0.0.0 UG-1 0 0 eth0
10.64.64.64 0.0.0.0 255.255.255.255 UH0  0 0 ppp0
10.64.64.64 0.0.0.0 255.255.255.255 UH7000 0 ppp0
10.250.0.0  0.0.0.0 255.255.0.0 U 50 0 0 tun0
192.168.19.00.0.0.0 255.255.255.0   U 1000 0 eth0
192.168.19.193  0.0.0.0 255.255.255.255 UH1000 0 eth0
217.114.201.194 192.168.19.193  255.255.255.255 UGH   1000 0 eth0

Route update traces:
Sep 20 09:53:11.869027 tap-0FB1 NetworkManager[762]:  libsystemd: DHCP 
CLIENT (0xfd5eaeb9): REQUEST (renewing)
Sep 20 09:53:11.873766 tap-0FB1 NetworkManager[762]:  libsystemd: DHCP 
CLIENT (0xfd5eaeb9): ACK
Sep 20 09:53:11.873792 tap-0FB1 NetworkManager[762]:  libsystemd: DHCP 
CLIENT (0xfd5eaeb9): lease expires in 1min 58s
Sep 20 09:53:11.873800 tap-0FB1 NetworkManager[762]:  libsystemd: DHCP 
CLIENT (0xfd5eaeb9): T2 expires in 1min 35s
Sep 20 09:53:11.873808 tap-0FB1 NetworkManager[762]:  libsystemd: DHCP 
CLIENT (0xfd5eaeb9): T1 expires in 50s
Sep 20 09:53:11.873845 tap-0FB1 NetworkManager[762]:  dhcp4 (eth0): 
client event 4
Sep 20 09:53:11.873853 tap-0FB1 NetworkManager[762]:  dhcp4 (eth0): 
lease available
Sep 20 09:53:11.873881 tap-0FB1 NetworkManager[762]:   dhcp4 (eth0):   
address 192.168.19.100
Sep 20 09:53:11.873890 tap-0FB1 NetworkManager[762]:   dhcp4 (eth0):   
plen 24
Sep 20 09:53:11.873899 tap-0FB1 NetworkManager[762]:   dhcp4 (eth0):   
expires in 120 seconds
Sep 20 09:53:11.873916 tap-0FB1 NetworkManager[762]:   dhcp4 (eth0):   
nameserver '192.168.19.193'
Sep 20 09:53:11.873925 tap-0FB1 NetworkManager[762]:   dhcp4 (eth0):   
hostname 'TAPOFB1'
Sep 20 09:53:11.873932 tap-0FB1 NetworkManager[762]:   dhcp4 (eth0):   
gateway 192.168.19.193
Sep 20 09:53:11.874064 tap-0FB1 NetworkManager[762]:   dhcp4 (eth0): 
state changed bound -> bound
Sep 20 09:53:11.874082 tap-0FB1 NetworkManager[762]:  
device[0x558dc60b3140] (eth0): new DHCPv4 client state 1
Sep 20 09:53:11.874535 tap-0FB1 NetworkManager[762]:  
device[0x558dc60b3140] (eth0): ip4-config: update (commit=1, 
new-config=0x558dc6110be0)
Sep 20 09:53:11.874569 tap-0FB1 NetworkManager[762]:  platform: address: 
adding or updating IPv4 address: 192.168.19.100/24 lft 120sec pref 120sec 
lifetime 237-0[120,120] dev 2 flags noprefixroute src unkn
Sep 20 09:53:11.874626 tap-0FB1 NetworkManager[762]:  platform-linux: 
event-notification: RTM_NEWADDR, flags 0, seq 141: 192.168.19.100/24 lft 120sec 
pref 120sec lifetime 237-237[120,120] dev 2 flags noprl
Sep 20 09:53:11.874653 tap-0FB1 NetworkManager[762]:  platform: signal: 
address 4 changed: 192.168.19.100/24 lft 120sec pref 120sec lifetime 
237-237[120,120] dev 2 flags noprefixroute src kernel
Sep 20 09:53:11.874671 tap-0FB1 NetworkManager[762]:  
device[0x558dc60b3140] (eth0): queued IP4 config change
Sep 20 09:53:11.874699 tap-0FB1 NetworkManager[762]:  platform-linux: 
do-add-ip4-address[2: 192.168.19.100/24]: success
Sep 20 09:53:11.874723 tap-0FB1 NetworkManager[762]:  platform: route: 
append IPv4 route: 0.0.0.0/0 via 192.168.19.193 dev 2 metric 4294967295 mss 
0 rt-src dhcp
Sep 20 09:53:11.874778 tap-0FB1 NetworkManager[762]:  platform-linux: 
event-notification: RTM_NEWROUTE, flags excl,create, seq 142: 0.0.0.0/0 via 
192.168.19.193 dev 2 metric 4294967295 mss 0 rt-src rt-dhcl
Sep 20 09:53:11.874809 tap-0FB1 NetworkManager[762]:  platform: signal: 
route   4   added: 0.0.0.0/0 via 192.168.19.193 dev 2 metric 4294967295 mss 0 
rt-src rt-dhcp scope global
Sep 20 09:53:11.874846 tap-0FB1 NetworkManager[762]:  platform-linux: 
do-add-ip4-route[0.0.0.0/0 via 192.168.19.193 dev 2 metric 4294967295 mss 0 
rt-src rt-dhcp scope global]: success
Sep 20 09:53:11.874867 tap-0FB1 NetworkManager[762]:  platform: 
ip4-route: delete 0.0.0.0/0 via 192.168.19.193 dev 2 metric 100 mss 0 rt-src 
rt-dhcp scope global
Sep 20 09:53:11.874904 tap-0FB1 NetworkManager[762]:  platform-linux: 
event-notification: RTM_DELROUTE, flags 0, seq 143: 0.0.0.0/0 via 
192.168.19.193 dev 2 metric 100 mss 0 rt-src rt-dhcp scope global
Sep 20 09:53:11.874930 tap-0FB1 NetworkManager[762]:  platform: signal: 
route   4 removed: 0.0.0.0/0 via 192.168.19.193 dev 2 metric 100 mss 0 rt-src 
rt-dhcp scope global
Sep 20 09:53:11.874961 tap-0FB1 NetworkManager[762]:  platform-linux: 
do-delete-ip4-route[0.0.0.0/0 via 192.168.19.193 dev 2 metric 100 mss 0 rt-src 
rt-dhcp scope global]: success
Sep 20 09:53:11.874983 tap-0FB1 NetworkManager[762]:  platform: 
ip4-dev-route: register 192.168.19.0/24 via 0.0.0.0 dev 2 metric 0 mss 0 rt-src 
rt-kernel scope link pref-src 

[PATCH] ppp-manager: fix pppd not exiting correctly on modem hangup

2018-09-11 Thread Frederic Danis
When unplugging an USB 3G modem device, pppd does not exit correctly and
we have the following traces:

Sep 10 07:58:24.616465 ModemManager[1158]:   (tty/ttyUSB0): released by 
device '/sys/devices/pci:00/:00:1c.0/:01:00.0/usb4/4-1'
Sep 10 07:58:24.620314 pppd[2292]: Modem hangup
Sep 10 07:58:24.621368 ModemManager[1158]:   (tty/ttyUSB1): released by 
device '/sys/devices/pci:00/:00:1c.0/:01:00.0/usb4/4-1'
Sep 10 07:58:24.621835 ModemManager[1158]:   (ttyUSB1): could not 
re-acquire serial port lock: (5) Input/output error
Sep 10 07:58:24.621358 NetworkManager[1871]:  ppp-manager: set-ifindex 4
Sep 10 07:58:24.621369 NetworkManager[1871]:   ppp-manager: can't change 
the ifindex from 4 to 4
Sep 10 07:58:24.623982 NetworkManager[1871]:   device (ttyUSB0): state 
change: activated -> unmanaged (reason 'removed', sys-iface-state: 'removed')
Sep 10 07:58:24.624411 NetworkManager[1871]:  kill child process 'pppd' 
(2292): wait for process to terminate after sending SIGTERM (15) (send SIGKILL 
in 1500 milliseconds)...
Sep 10 07:58:24.624440 NetworkManager[1871]:  modem-broadband[ttyUSB0]: 
notifying ModemManager about the modem disconnection
Sep 10 07:58:24.626591 NetworkManager[1871]:  modem-broadband[ttyUSB0]: 
notifying ModemManager about the modem disconnection
Sep 10 07:58:24.681016 NetworkManager[1871]:   modem-broadband[ttyUSB0]: 
failed to disconnect modem: 
GDBus.Error:org.freedesktop.DBus.Error.UnknownMethod: No such interface 
'org.freedesktop.ModemManager1.Modem.Simple' on object at path 
/org/freedesktop/ModemManager1/Modem/0
Sep 10 07:58:26.126817 NetworkManager[1871]:  kill child process 'pppd' 
(2292): process not terminated after 1502368 usec. Sending SIGKILL signal
Sep 10 07:58:26.128121 NetworkManager[1871]:   device (ppp0): state 
change: disconnected -> unmanaged (reason 'unmanaged', sys-iface-state: 
'removed')
Sep 10 07:58:26.135571 NetworkManager[1871]:  kill child process 'pppd' 
(2292): terminated by signal 9 (1511158 usec elapsed)

This is due to nm-ppp-plugin waiting on SetIfIndex call until timeout,
which is longer than termination process timeout.

Calling g_dbus_method_invocation_return_value() on error fixes this.
---
 src/ppp/nm-ppp-manager.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/ppp/nm-ppp-manager.c b/src/ppp/nm-ppp-manager.c
index 5e893c8..079de9f 100644
--- a/src/ppp/nm-ppp-manager.c
+++ b/src/ppp/nm-ppp-manager.c
@@ -442,7 +442,7 @@ impl_ppp_manager_set_ifindex (NMDBusObject *obj,
 
if (priv->ifindex >= 0) {
_LOGW ("can't change the ifindex from %d to %d", priv->ifindex, 
(int) ifindex);
-   return;
+   goto out;
}
 
if (ifindex > 0) {
@@ -463,6 +463,8 @@ impl_ppp_manager_set_ifindex (NMDBusObject *obj,
obj_keep_alive = nmp_object_ref (NMP_OBJECT_UP_CAST (plink));
 
g_signal_emit (self, signals[IFINDEX_SET], 0, ifindex, plink->name);
+
+out:
g_dbus_method_invocation_return_value (invocation, NULL);
 }
 
-- 
2.7.4

___
networkmanager-list mailing list
networkmanager-list@gnome.org
https://mail.gnome.org/mailman/listinfo/networkmanager-list


[PATCH] ppp-manager: fix pppd not exiting correctly on modem hangup

2018-09-11 Thread Frederic Danis
When unplugging an USB 3G modem device, pppd does not exit correctly and
we have the following traces:

Sep 10 07:58:24.616465 ModemManager[1158]:   (tty/ttyUSB0): released by 
device '/sys/devices/pci:00/:00:1c.0/:01:00.0/usb4/4-1'
Sep 10 07:58:24.620314 pppd[2292]: Modem hangup
Sep 10 07:58:24.621368 ModemManager[1158]:   (tty/ttyUSB1): released by 
device '/sys/devices/pci:00/:00:1c.0/:01:00.0/usb4/4-1'
Sep 10 07:58:24.621835 ModemManager[1158]:   (ttyUSB1): could not 
re-acquire serial port lock: (5) Input/output error
Sep 10 07:58:24.621358 NetworkManager[1871]:  ppp-manager: set-ifindex 4
Sep 10 07:58:24.621369 NetworkManager[1871]:   ppp-manager: can't change 
the ifindex from 4 to 4
Sep 10 07:58:24.623982 NetworkManager[1871]:   device (ttyUSB0): state 
change: activated -> unmanaged (reason 'removed', sys-iface-state: 'removed')
Sep 10 07:58:24.624411 NetworkManager[1871]:  kill child process 'pppd' 
(2292): wait for process to terminate after sending SIGTERM (15) (send SIGKILL 
in 1500 milliseconds)...
Sep 10 07:58:24.624440 NetworkManager[1871]:  modem-broadband[ttyUSB0]: 
notifying ModemManager about the modem disconnection
Sep 10 07:58:24.626591 NetworkManager[1871]:  modem-broadband[ttyUSB0]: 
notifying ModemManager about the modem disconnection
Sep 10 07:58:24.681016 NetworkManager[1871]:   modem-broadband[ttyUSB0]: 
failed to disconnect modem: 
GDBus.Error:org.freedesktop.DBus.Error.UnknownMethod: No such interface 
'org.freedesktop.ModemManager1.Modem.Simple' on object at path 
/org/freedesktop/ModemManager1/Modem/0
Sep 10 07:58:26.126817 NetworkManager[1871]:  kill child process 'pppd' 
(2292): process not terminated after 1502368 usec. Sending SIGKILL signal
Sep 10 07:58:26.128121 NetworkManager[1871]:   device (ppp0): state 
change: disconnected -> unmanaged (reason 'unmanaged', sys-iface-state: 
'removed')
Sep 10 07:58:26.135571 NetworkManager[1871]:  kill child process 'pppd' 
(2292): terminated by signal 9 (1511158 usec elapsed)

This is due to nm-ppp-plugin waiting on SetIfIndex call until timeout,
which is longer than termination process timeout.

Calling g_dbus_method_invocation_return_value() on error fixes this.
---
 src/ppp/nm-ppp-manager.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/ppp/nm-ppp-manager.c b/src/ppp/nm-ppp-manager.c
index 5e893c8..079de9f 100644
--- a/src/ppp/nm-ppp-manager.c
+++ b/src/ppp/nm-ppp-manager.c
@@ -442,7 +442,7 @@ impl_ppp_manager_set_ifindex (NMDBusObject *obj,
 
if (priv->ifindex >= 0) {
_LOGW ("can't change the ifindex from %d to %d", priv->ifindex, 
(int) ifindex);
-   return;
+   goto out;
}
 
if (ifindex > 0) {
@@ -463,6 +463,8 @@ impl_ppp_manager_set_ifindex (NMDBusObject *obj,
obj_keep_alive = nmp_object_ref (NMP_OBJECT_UP_CAST (plink));
 
g_signal_emit (self, signals[IFINDEX_SET], 0, ifindex, plink->name);
+
+out:
g_dbus_method_invocation_return_value (invocation, NULL);
 }
 
-- 
2.7.4

___
networkmanager-list mailing list
networkmanager-list@gnome.org
https://mail.gnome.org/mailman/listinfo/networkmanager-list


[PATCH] ppp-manager: fix pppd not exiting correctly on modem hangup

2018-09-11 Thread Frederic Danis
When unplugging an USB 3G modem device, pppd does not exit correctly and
we have the following traces:

Sep 10 07:58:24.616465 ModemManager[1158]:   (tty/ttyUSB0): released by 
device '/sys/devices/pci:00/:00:1c.0/:01:00.0/usb4/4-1'
Sep 10 07:58:24.620314 pppd[2292]: Modem hangup
Sep 10 07:58:24.621368 ModemManager[1158]:   (tty/ttyUSB1): released by 
device '/sys/devices/pci:00/:00:1c.0/:01:00.0/usb4/4-1'
Sep 10 07:58:24.621835 ModemManager[1158]:   (ttyUSB1): could not 
re-acquire serial port lock: (5) Input/output error
Sep 10 07:58:24.621358 NetworkManager[1871]:  ppp-manager: set-ifindex 4
Sep 10 07:58:24.621369 NetworkManager[1871]:   ppp-manager: can't change 
the ifindex from 4 to 4
Sep 10 07:58:24.623982 NetworkManager[1871]:   device (ttyUSB0): state 
change: activated -> unmanaged (reason 'removed', sys-iface-state: 'removed')
Sep 10 07:58:24.624411 NetworkManager[1871]:  kill child process 'pppd' 
(2292): wait for process to terminate after sending SIGTERM (15) (send SIGKILL 
in 1500 milliseconds)...
Sep 10 07:58:24.624440 NetworkManager[1871]:  modem-broadband[ttyUSB0]: 
notifying ModemManager about the modem disconnection
Sep 10 07:58:24.626591 NetworkManager[1871]:  modem-broadband[ttyUSB0]: 
notifying ModemManager about the modem disconnection
Sep 10 07:58:24.681016 NetworkManager[1871]:   modem-broadband[ttyUSB0]: 
failed to disconnect modem: 
GDBus.Error:org.freedesktop.DBus.Error.UnknownMethod: No such interface 
'org.freedesktop.ModemManager1.Modem.Simple' on object at path 
/org/freedesktop/ModemManager1/Modem/0
Sep 10 07:58:26.126817 NetworkManager[1871]:  kill child process 'pppd' 
(2292): process not terminated after 1502368 usec. Sending SIGKILL signal
Sep 10 07:58:26.128121 NetworkManager[1871]:   device (ppp0): state 
change: disconnected -> unmanaged (reason 'unmanaged', sys-iface-state: 
'removed')
Sep 10 07:58:26.135571 NetworkManager[1871]:  kill child process 'pppd' 
(2292): terminated by signal 9 (1511158 usec elapsed)

This is due to nm-ppp-plugin waiting on SetIfIndex call until timeout,
which is longer than termination process timeout.

Calling g_dbus_method_invocation_return_value() on error fixes this.
---
 src/ppp/nm-ppp-manager.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/ppp/nm-ppp-manager.c b/src/ppp/nm-ppp-manager.c
index 5e893c8..079de9f 100644
--- a/src/ppp/nm-ppp-manager.c
+++ b/src/ppp/nm-ppp-manager.c
@@ -442,7 +442,7 @@ impl_ppp_manager_set_ifindex (NMDBusObject *obj,
 
if (priv->ifindex >= 0) {
_LOGW ("can't change the ifindex from %d to %d", priv->ifindex, 
(int) ifindex);
-   return;
+   goto out;
}
 
if (ifindex > 0) {
@@ -463,6 +463,8 @@ impl_ppp_manager_set_ifindex (NMDBusObject *obj,
obj_keep_alive = nmp_object_ref (NMP_OBJECT_UP_CAST (plink));
 
g_signal_emit (self, signals[IFINDEX_SET], 0, ifindex, plink->name);
+
+out:
g_dbus_method_invocation_return_value (invocation, NULL);
 }
 
-- 
2.7.4

___
networkmanager-list mailing list
networkmanager-list@gnome.org
https://mail.gnome.org/mailman/listinfo/networkmanager-list


[PATCH] devices/wwan: Stop PPP manager in deactivate_cleanup()

2018-05-17 Thread Frederic Danis
When ModemManager exits, pppd is not killed due to nm_exported_object not
unexported (ppp_manager refcount = 2).
Call to nm_ppp_manager_stop_sync() allows to correctly clean ppp_manager
before calling g_clear_object(), as this is done in nm-device-ethernet.c and
nm-device-adsl.c.

https://bugzilla.gnome.org/show_bug.cgi?id=796108
---
 src/devices/wwan/nm-modem.c | 5 -
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/devices/wwan/nm-modem.c b/src/devices/wwan/nm-modem.c
index 010a2b6..3e902fa 100644
--- a/src/devices/wwan/nm-modem.c
+++ b/src/devices/wwan/nm-modem.c
@@ -1095,7 +1095,10 @@ deactivate_cleanup (NMModem *self, NMDevice *device)
 
priv->in_bytes = priv->out_bytes = 0;
 
-   g_clear_object (&priv->ppp_manager);
+   if (priv->ppp_manager) {
+   nm_ppp_manager_stop_sync (priv->ppp_manager);
+   g_clear_object (&priv->ppp_manager);
+   }
 
if (device) {
g_return_if_fail (NM_IS_DEVICE (device));
-- 
2.7.4

___
networkmanager-list mailing list
networkmanager-list@gnome.org
https://mail.gnome.org/mailman/listinfo/networkmanager-list