touch-packages team mailing list archive
-
touch-packages team
-
Mailing list archive
-
Message #80671
[Bug 1368688] Re: Inconsistence between /etc/init and /etc/init.d files
I have been hit by this bug also. Also dhcpd starts normally with dhcp
user but if restarted using the script in init.d, it starts another
instance with root user. Will you ever fix this simple issue?
--
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to isc-dhcp in Ubuntu.
https://bugs.launchpad.net/bugs/1368688
Title:
Inconsistence between /etc/init and /etc/init.d files
Status in isc-dhcp package in Ubuntu:
Confirmed
Bug description:
After upgrade Ubuntu server from 12.04 LTS to 14.04 LTS (with do-release-upgrade) I found a strange behavior in /var/log/messages from isc-dhcp-server. It had doubled DHCPREQUESTS/OFFERS/ACKs... It was like:
~~
dhcpd: DHCPDISCOVER from 00:0b:82:27:be:d1 via eth0
dhcpd: DHCPDISCOVER from 00:0b:82:27:be:d1 via eth0
DHCPREQUEST for 192.168.1.102 (10.112.1.252) from 00:0b:82:27:be:d1 via eth0
DHCPREQUEST for 192.168.1.102 (10.112.1.252) from 00:0b:82:27:be:d1 via eth0
DHCPACK on 192.168.1.102 to 00:0b:82:27:be:d1 via eth0
DHCPACK on 192.168.1.102 to 00:0b:82:27:be:d1 via eth0
~~
Futher investigation show that there was actually two dhcpd processes:
~~
dhcpd -q -cf /etc/dhcp/dhcpd.conf -pf /var/run/dhcp-server/dhcpd.pid
/usr/sbin/dhcpd -q -cf /etc/dhcp/dhcpd.conf -pf /var/run/dhcpd.pid
~~
The first one was executed from "/etc/init/isc-dhcp-server.conf" and second from "/etc/init.d/isc-dhcp-server".
Looking inside "init/isc-dhcp-server.conf" I found:
~~
respawn
script
. /etc/default/isc-dhcp-server
......
exec dhcpd -user dhcpd -group dhcpd -f -q -4 -pf /run/dhcp-server/dhcpd.pid -cf $CONFIG_FILE $INTERFACES
~~
As you can see path to PID file is hardcoded.
But in "init.d/isc-dhcp-server" startup script:
~~
# try to read pid file name from config file, with fallback to /var/run/dhcpd.pid
if [ -z "$DHCPD_PID" ]; then
DHCPD_PID=$(sed -n -e 's/^[ \t]*pid-file-name[ \t]*"(.*)"[ \t]*;.*$/\1/p' < "$DHCPD_CONF" 2>/dev/null | head -n 1)
fi
DHCPD_PID="${DHCPD_PID:-/var/run/dhcpd.pid}"
......
case "$1" in
start)
test_config
log_daemon_msg "Starting $DESC" "$NAME"
start-stop-daemon --start --quiet --pidfile "$DHCPD_PID" \
--exec /usr/sbin/dhcpd -- \
-q $OPTIONS -cf "$DHCPD_CONF" -pf "$DHCPD_PID" $INTERFACES
~~
So obivous is to either change init script to NOT use hardcoded path to PID file and use $DHCP_PID (from /etc/default/isc-dhcp-server, which is sourced inside this script), or at least change it to "default" one: /var/run/dhcpd.pid
OR
change init.d script to fallback to "/run/dhcp-server/dhcpd.pid"
instead of "/var/run/dhcpd.pid"
P.S. /var/run is a link to /run
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/isc-dhcp/+bug/1368688/+subscriptions
References