I just upgraded a 12.04 to 14.04.1 and discovered my server now boots
three instances of dhcpd, one with -6, which dies because there is no
config file for it, and two instances of -4, one reading from
/etc/dhcp/dhcpd.conf, and the other from /etc/dhcp3/dhcpd.conf.

>From my reading, it appears the Sys V script should now be following the
format described in the page
https://wiki.ubuntu.com/UpstartCompatibleInitScripts (Upstart Compatible
Init Scripts) IE it should be testing for is_upstart_job in the case
actions, but it is not doing so.

Also note that the Upstart script is ignoring the information in
/etc/default/isc-dhcp-server, and providing its own locations for things
like the conf file and the pid file.  It should be honoring the defaults
file!

-- 
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

-- 
Mailing list: https://launchpad.net/~touch-packages
Post to     : touch-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~touch-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to