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:
parent
0fd1dc0308
commit
f2d5804959
15
src/iface.cc
15
src/iface.cc
@ -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)
|
if ((len = recvmsg(fd,& mhdr, 0)) < 0)
|
||||||
{
|
{
|
||||||
int e = errno;
|
logger::error() << "iface::read() failed! error=" << logger::err() << ", ifa=" << name();
|
||||||
logger::error() << "iface::read() failed! errno=" << e << ", ifa=" << name();
|
|
||||||
return -1;
|
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)
|
if ((len = sendmsg(fd,& mhdr, 0)) < 0)
|
||||||
{
|
{
|
||||||
int e = errno;
|
logger::error() << "iface::write() failed! error=" << logger::err() << ", ifa=" << name() << ", daddr=" << daddr.to_string();
|
||||||
logger::error() << "iface::write() failed! errno=" << e << ", ifa=" << name() << ", daddr=" << daddr.to_string();
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -371,8 +369,10 @@ ssize_t iface::read_solicit(address& saddr, address& daddr, address& taddr)
|
|||||||
uint8_t msg[256];
|
uint8_t msg[256];
|
||||||
ssize_t len;
|
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;
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
struct ip6_hdr* ip6h =
|
struct ip6_hdr* ip6h =
|
||||||
(struct ip6_hdr* )(msg + ETH_HLEN);
|
(struct ip6_hdr* )(msg + ETH_HLEN);
|
||||||
@ -466,8 +466,10 @@ ssize_t iface::read_advert(address& saddr, address& taddr)
|
|||||||
uint8_t msg[256];
|
uint8_t msg[256];
|
||||||
ssize_t len;
|
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;
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
saddr = t_saddr.sin6_addr;
|
saddr = t_saddr.sin6_addr;
|
||||||
|
|
||||||
@ -548,6 +550,7 @@ int iface::poll_all()
|
|||||||
int len;
|
int len;
|
||||||
|
|
||||||
if ((len = ::poll(&_pollfds[0], _pollfds.size(), 50)) < 0) {
|
if ((len = ::poll(&_pollfds[0], _pollfds.size(), 50)) < 0) {
|
||||||
|
logger::error() << "Failed to poll interfaces: " << logger::err();
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
18
src/ndppd.cc
18
src/ndppd.cc
@ -36,9 +36,10 @@ using namespace ndppd;
|
|||||||
static int daemonize()
|
static int daemonize()
|
||||||
{
|
{
|
||||||
pid_t pid = fork();
|
pid_t pid = fork();
|
||||||
|
if (pid < 0) {
|
||||||
if (pid < 0)
|
logger::error() << "Failed to fork during daemonize: " << logger::err();
|
||||||
return -1;
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
if (pid > 0)
|
if (pid > 0)
|
||||||
exit(0);
|
exit(0);
|
||||||
@ -46,12 +47,15 @@ static int daemonize()
|
|||||||
umask(0);
|
umask(0);
|
||||||
|
|
||||||
pid_t sid = setsid();
|
pid_t sid = setsid();
|
||||||
|
if (sid < 0) {
|
||||||
if (sid < 0)
|
logger::error() << "Failed to setsid during daemonize: " << logger::err();
|
||||||
return -1;
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
if (chdir("/") < 0)
|
if (chdir("/") < 0) {
|
||||||
|
logger::error() << "Failed to change path during daemonize: " << logger::err();
|
||||||
return -1;
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
close(STDIN_FILENO);
|
close(STDIN_FILENO);
|
||||||
close(STDOUT_FILENO);
|
close(STDOUT_FILENO);
|
||||||
@ -288,10 +292,8 @@ int main(int argc, char* argv[], char* env[])
|
|||||||
if (daemon) {
|
if (daemon) {
|
||||||
logger::syslog(true);
|
logger::syslog(true);
|
||||||
|
|
||||||
if (daemonize() < 0) {
|
if (daemonize() < 0)
|
||||||
logger::error() << "Failed to daemonize process";
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!pidfile.empty()) {
|
if (!pidfile.empty()) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user