> -----Original Message----- > From: systemd-devel [mailto:systemd-devel-boun...@lists.freedesktop.org] On > Behalf Of Han, Nandor (GE Healthcare) > Sent: 05 May 2017 10:05 > To: systemd-devel@lists.freedesktop.org > Subject: EXT: [systemd-devel] systemd-netowkd, DHCP server - DHCP server > silently stoped serving DHCP requests > > Hello, > I have a question related to systemd-networkd DHCP server. I am currently > using the systemd v232 on a iMX6 based > system where > network is configured to provide DHCP server functionality. This is my > configuration file: > > [Match] > Name=eneport2 > > [Network] > DHCPServer=yes > LinkLocalAddressing=no > IPv6AcceptRouterAdvertisements=no > > [Address] > Address=192.168.252.1/24 > Broadcast=192.168.252.255 > > [DHCPServer] > PoolOffset=4 > PoolSize=249 > DefaultLeaseTimeSec=30s > > Problem: > I noticed that randomly the DHCP server stops serving DHCP requests. > > Tests: > - Sniffing the packets I can see devices requesting DHCP but there is no > reply for these: > tcpdump -i eneport2 port 67 or port 68 -e -n > .... > 01:50:33.993302 00:40:97:10:91:3b > 00:40:97:29:04:c2, ethertype IPv4 > (0x0800), length 590: 192.168.252.108.68 > > 192.168.252.1.67: BOOTP/DHCP, Request from 00:40:97:10:91:3b, length 548 > 01:53:52.054527 00:00:a1:06:dd:5f > 00:40:97:29:04:c2, ethertype IPv4 > (0x0800), length 590: 192.168.252.171.68 > > 192.168.252.1.67: BOOTP/DHCP, Request from 00:00:a1:06:dd:5f, length 548 > 02:07:24.460286 00:40:97:10:91:3b > 00:40:97:29:04:c2, ethertype IPv4 > (0x0800), length 590: 192.168.252.108.68 > > 192.168.252.1.67: BOOTP/DHCP, Request from 00:40:97:10:91:3b, length 548 > 02:15:49.687499 00:40:97:10:91:3b > 00:40:97:29:04:c2, ethertype IPv4 > (0x0800), length 590: 192.168.252.108.68 > > 192.168.252.1.67: BOOTP/DHCP, Request from 00:40:97:10:91:3b, length 548 > ... > > - Also checking that systemd-networkd is up and running using: `systemctl > status systemd-networkd`. > - Restarting the system-networkd: `system restart systemd-networkd` fixed the > issue. > > Analysis: > Checking the code I saw that DHCP server it is using a sd-event loop to > handle the DHCP messages: > File: sd-dhcpc-server.c > ... > r = sd_event_add_io(server->event, &server->receive_message, > server->fd, EPOLLIN, > server_receive_message, server); > ... > > Checking the documentation it looks that sd_event will disable the event loop > once the handler will return a negative error: > Documentation: > (https://www.freedesktop.org/software/systemd/man/sd_event_add_io.html) > "If the handler function returns a negative error code, it will be disabled > after the invocation, even if the SD_EVENT_ON > mode was requested before." > > Having this situation the DHCP server will stop handling DHCP request and as > far as I see it's not visible at the user level or > systemd-networkd will not be restarted. > > This are some steps where I was able to reproduce the situation: > I was able to simulate this by just manually changing the ip address of the > ethernet device providing DHCP server and back > to the one configured as DHCP server. > 1. eneport2 configured with 192.168.252.1/24 and DHCP server enabled. > 2. change the ip: ifconfig eneport2 x.x.x.x > 3. change back the ip: ifconfig eneport2 192.168.252.1 > 4. The DHCP server it's not working anymore. > > To me looks like an issue since we can end up losing the DHCP Server > functionality without able to recover (unless systemd- > networkd is manually restarted.) > Any thoughts? Or suggestions? > Should an issue be opened? > > Regards, > Nandor
Any comments on this? > _______________________________________________ > systemd-devel mailing list > systemd-devel@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/systemd-devel _______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/systemd-devel