Subject: 'dhcp-client-service' crash when non-libre networking interface is present
From: Brice Waegeneire <[email-masked]>
To: [email-masked]
Date: Sun, 08 Dec 2019 09:59:08 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

The 'dhcp-client-service' fail to start when a non-libre network 
interface (here 148f:3070) is plugged-in even though there is an libre 
networking interface (here 01:00.0) available.
Removing the non-libre networking interface from the system allow 
'dhcp-client-service' to start correctly on the libre networking 
interface.

I think the service shouldn't crash when there is an non-libre network 
interface connected, it should just skip it and maybe throw an error 
message. Allowing to specify the network interfaces on which 
'dhcp-client-service' should run can also somewhat resolve the issue.

#+begin_src sh
$ sudo herd start networking
[ 2758.305139] 1-3:1.0: Missing Free firmware (non-Free firmware loading 
is disabled)
[ 2758.395791] ieee80211 phy0: rt2x00lib_request_firmware: Error - 
Failed to request Firmware
herd: exception caught while executing 'start' on service 'networking':
In procedure set-network-interface-flags: set-network-interface-flags on 
wlp0s20f0u3: No such file or directory

$ ip a s
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
group default qlen 1000
     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
     inet 127.0.0.1/8 scope host lo
        valid_lft forever preferred_lft forever
     inet6 ::1/128 scope host
        valid_lft forever preferred_lft forever
2: enp1s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast 
state DOWN group default qlen 1000
     link/ether 00:e0:4c:68:67:77 brd ff:ff:ff:ff:ff:ff
3: wlp0s20f0u3: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN 
group default qlen 1000
     link/ether 00:c0:ca:77:05:e7 brd ff:ff:ff:ff:ff:ff

$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 002: ID 148f:3070 Ralink Technology, Corp. RT2870/RT3070 
Wireless Adapter
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

$ lspci
00:00.0 Host bridge: Intel Corporation Xeon E3-1200 v6/7th Gen Core 
Processor Host Bridge/DRAM Registers (rev 02)
00:02.0 VGA compatible controller: Intel Corporation HD Graphics 620 
(rev 02)
00:08.0 System peripheral: Intel Corporation Xeon E3-1200 v5/v6 / 
E3-1500 v5 / 6th/7th Gen Core Processor Gaussian Mixture Model
00:14.0 USB controller: Intel Corporation Sunrise Point-LP USB 3.0 xHCI 
Controller (rev 21)
00:14.2 Signal processing controller: Intel Corporation Sunrise Point-LP 
Thermal subsystem (rev 21)
00:17.0 SATA controller: Intel Corporation Sunrise Point-LP SATA 
Controller [AHCI mode] (rev 21)
00:1c.0 PCI bridge: Intel Corporation Sunrise Point-LP PCI Express Root 
Port #3 (rev f1)
00:1e.0 Signal processing controller: Intel Corporation Sunrise Point-LP 
Serial IO UART Controller #0 (rev 21)
00:1e.4 SD Host controller: Intel Corporation Device 9d2b (rev 21)
00:1e.6 SD Host controller: Intel Corporation Sunrise Point-LP Secure 
Digital IO Controller (rev 21)
00:1f.0 ISA bridge: Intel Corporation Sunrise Point-LP LPC Controller 
(rev 21)
00:1f.2 Memory controller: Intel Corporation Sunrise Point-LP PMC (rev 
21)
00:1f.3 Audio device: Intel Corporation Sunrise Point-LP HD Audio (rev 
21)
00:1f.4 SMBus: Intel Corporation Sunrise Point-LP SMBus (rev 21)
01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. 
RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 07)
#+end_src

#+begin_src scheme
(services
     (append
       (list (service openssh-service-type)
             (service dhcp-client-service-type))
       %base-services)))
#+end_src