← Back to team overview

touch-packages team mailing list archive

[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