Quagga: Exiting: failed to connect to any daemons.
Quagga can fail with following error due to pid directory permission errors:
Code:
# /etc/init.d/quagga restart
Stopping Quagga daemons (prio:0): (ospfd) (zebra) (bgpd) (ripd) (ripngd) (ospf6d) (isisd).
Removing all routes made by zebra.
Loading capability module if not yet done.
Starting Quagga daemons (prio:10): zebra ospfd.
Exiting: failed to connect to any daemons.
Code:
# strace /usr/lib/quagga/ospfd -- --daemon -A 127.0.0.1
...
fstat(4, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7ff6981c4000
read(4, "MemTotal: 507764 kB\nMemF"..., 1024) = 1024
close(4) = 0
munmap(0x7ff6981c4000, 4096) = 0
stat("/etc/quagga/Quagga.conf", {st_mode=S_IFREG|0640, st_size=812, ...}) = 0
umask(0133) = 027
open("/var/run/quagga/ospfd.pid", O_RDWR|O_CREAT, 0644) = -1 EACCES (Permission denied)
umask(027) = 0133
exit_group(1) = ?
In my case, I had wrong ownership on "/var/run/quagga" directory:
Code:
# ls -ld /var/run/quagga/
drwxr-xr-x 2 sshd quagga 4096 Jul 1 20:40 /var/run/quagga/
Fix is obvious: set "quagga" as the owner of "/var/run/quagga".