Added additional logging on system calls and ensured that an error message rather than an error code is returned for easier debugging

This commit is contained in:
John Sharratt 2017-07-02 15:53:35 +02:00
parent 0fd1dc0308
commit f2d5804959
2 changed files with 19 additions and 14 deletions

View File

@ -319,8 +319,7 @@ ssize_t iface::read(int fd, struct sockaddr* saddr, uint8_t* msg, size_t size)
if ((len = recvmsg(fd,& mhdr, 0)) < 0)
{
int e = errno;
logger::error() << "iface::read() failed! errno=" << e << ", ifa=" << name();
logger::error() << "iface::read() failed! error=" << logger::err() << ", ifa=" << name();
return -1;
}
@ -357,8 +356,7 @@ ssize_t iface::write(int fd, const address& daddr, const uint8_t* msg, size_t si
if ((len = sendmsg(fd,& mhdr, 0)) < 0)
{
int e = errno;
logger::error() << "iface::write() failed! errno=" << e << ", ifa=" << name() << ", daddr=" << daddr.to_string();
logger::error() << "iface::write() failed! error=" << logger::err() << ", ifa=" << name() << ", daddr=" << daddr.to_string();
return -1;
}
@ -371,8 +369,10 @@ ssize_t iface::read_solicit(address& saddr, address& daddr, address& taddr)
uint8_t msg[256];
ssize_t len;
if ((len = read(_pfd, (struct sockaddr*)&t_saddr, msg, sizeof(msg))) < 0)
if ((len = read(_pfd, (struct sockaddr*)&t_saddr, msg, sizeof(msg))) < 0) {
logger::warning() << "iface::read_solicit() failed: " << logger::err();
return -1;
}
struct ip6_hdr* ip6h =
(struct ip6_hdr* )(msg + ETH_HLEN);
@ -466,8 +466,10 @@ ssize_t iface::read_advert(address& saddr, address& taddr)
uint8_t msg[256];
ssize_t len;
if ((len = read(_ifd, (struct sockaddr* )&t_saddr, msg, sizeof(msg))) < 0)
if ((len = read(_ifd, (struct sockaddr* )&t_saddr, msg, sizeof(msg))) < 0) {
logger::warning() << "iface::read_advert() failed: " << logger::err();
return -1;
}
saddr = t_saddr.sin6_addr;
@ -548,6 +550,7 @@ int iface::poll_all()
int len;
if ((len = ::poll(&_pollfds[0], _pollfds.size(), 50)) < 0) {
logger::error() << "Failed to poll interfaces: " << logger::err();
return -1;
}

View File

@ -36,9 +36,10 @@ using namespace ndppd;
static int daemonize()
{
pid_t pid = fork();
if (pid < 0)
if (pid < 0) {
logger::error() << "Failed to fork during daemonize: " << logger::err();
return -1;
}
if (pid > 0)
exit(0);
@ -46,12 +47,15 @@ static int daemonize()
umask(0);
pid_t sid = setsid();
if (sid < 0)
if (sid < 0) {
logger::error() << "Failed to setsid during daemonize: " << logger::err();
return -1;
}
if (chdir("/") < 0)
if (chdir("/") < 0) {
logger::error() << "Failed to change path during daemonize: " << logger::err();
return -1;
}
close(STDIN_FILENO);
close(STDOUT_FILENO);
@ -288,11 +292,9 @@ int main(int argc, char* argv[], char* env[])
if (daemon) {
logger::syslog(true);
if (daemonize() < 0) {
logger::error() << "Failed to daemonize process";
if (daemonize() < 0)
return 1;
}
}
if (!pidfile.empty()) {
std::ofstream pf;