Quagga not starting when using vtysh integrated configuration

Bug #1788986 reported by Mattias Hermansson
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
quagga (Ubuntu)
Triaged
Medium
Unassigned

Bug Description

After upgrading to bionic the quagga daemon doesn't start. This is related to the configuration directive integrated-vtysh-config which, if used, prevents proper start. The reason for this is that the configuration files for the respective daemons in this case are missing, but required by the systemd boot up configuration script.

Tags: bionic
Revision history for this message
Andreas Hasenack (ahasenack) wrote :

Thanks for filing this bug in Ubuntu.

I'm not familiar with quagga, sorry, so could you please elaborate on why is this a bug?

Did you add a configuration directive and as a result the daemon stopped working? What was your configuration in whatever you were running before bionic (you didn't say which ubuntu release you were on)?

Changed in quagga (Ubuntu):
status: New → Incomplete
Revision history for this message
Mattias Hermansson (millox) wrote :

Earlier releases were able to use integrated configuration, meaning the rc-script tested if either the respective daemon configuration files existed, or if the integrated file Quagga.conf existed. If the daemon configuration file, zebra.conf for instance, or the Quagga.conf, either existed then the daemon was able to start. In the new systemd startup file it seems as if it only tests whether the respective daemon configuration files exist, not the integrated file.

Look in the rc-files for the previous releases to see the difference in testing for valid configuration.

I used to be on 14.04 and upgraded to 18.04

Revision history for this message
Andreas Hasenack (ahasenack) wrote :

The version of quagga in bionic is 1.2.4-1, which is the same as in Debian. Looks like Debian later on reverted the sysv script removal:
quagga (1.2.4-2) unstable; urgency=low

  * Correct previous changelog entry for CVE numbers
  * Re-enable building of watchquagga
  * Re-instate sysvinit scripts (Closes: #849011, #865874)

Revision history for this message
Andreas Hasenack (ahasenack) wrote :

Ok, I think I understand it now.

The individual service files have a condition to start the service, and that is the config file:
/lib/systemd/system/bgpd.service:
ConditionPathExists=/etc/quagga/bgpd.conf

/lib/systemd/system/zebra.service
ConditionPathExists=/etc/quagga/zebra.conf

and so on.

Revision history for this message
Andreas Hasenack (ahasenack) wrote :

The sysv script checked for a Quagga.conf file, and if it's there, ignores the need for the other config files:
        # If the integrated config file is used the others are not checked.
        if [ -r "$C_PATH/Quagga.conf" ]; then
          return 0
        fi
...
          # check for config file
          if [ ! -r "$C_PATH/$1.conf" ]; then
            echo -n " (not started without config file)"
            return 1

Just touching the config files would not be enough as a workaround, as the systemd service files actually start the daemons pointing them at the respective config files:
ExecStart=/usr/sbin/bgpd -d -A 127.0.0.1 -f /etc/quagga/bgpd.conf

This will need some thought, or maybe revert to using the sysv initscript again.

Changed in quagga (Ubuntu):
status: Incomplete → Triaged
importance: Undecided → Medium
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.