diff --git a/src/iface.cc b/src/iface.cc index b8824f7..cf18712 100644 --- a/src/iface.cc +++ b/src/iface.cc @@ -314,15 +314,19 @@ ssize_t iface::read(int fd, struct sockaddr* saddr, uint8_t* msg, size_t size) mhdr.msg_namelen = sizeof(struct sockaddr); mhdr.msg_iov =& iov; mhdr.msg_iovlen = 1; + + logger::debug() << "iface::read() ifa=" << name() << ", len=" << len; if ((len = recvmsg(fd,& mhdr, 0)) < 0) + { + int e = errno; + logger::error() << "iface::read() failed! errno=" << e << ", ifa=" << name(); return -1; + } if (len < sizeof(struct icmp6_hdr)) return -1; - logger::debug() << "iface::read() len=" << len; - return len; } @@ -346,7 +350,7 @@ ssize_t iface::write(int fd, const address& daddr, const uint8_t* msg, size_t si mhdr.msg_iov =& iov; mhdr.msg_iovlen = 1; - logger::debug() << "iface::write() daddr=" << daddr.to_string() << ", len=" + logger::debug() << "iface::write() ifa=" << name() << ", daddr=" << daddr.to_string() << ", len=" << size; int len; @@ -354,7 +358,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; + logger::error() << "iface::write() failed! errno=" << e << ", ifa=" << name() << ", daddr=" << daddr.to_string(); return -1; } diff --git a/src/iface.h b/src/iface.h index eafa443..48d49e2 100644 --- a/src/iface.h +++ b/src/iface.h @@ -42,9 +42,9 @@ public: static int poll_all(); - static ssize_t read(int fd, struct sockaddr* saddr, uint8_t* msg, size_t size); + ssize_t read(int fd, struct sockaddr* saddr, uint8_t* msg, size_t size); - static ssize_t write(int fd, const address& daddr, const uint8_t* msg, size_t size); + ssize_t write(int fd, const address& daddr, const uint8_t* msg, size_t size); // Writes a NB_NEIGHBOR_SOLICIT message to the _ifd socket. ssize_t write_solicit(const address& taddr); diff --git a/src/proxy.cc b/src/proxy.cc index 91a7162..cc3b109 100644 --- a/src/proxy.cc +++ b/src/proxy.cc @@ -65,7 +65,8 @@ void proxy::handle_solicit(const address& saddr, const address& daddr, const address& taddr) { logger::debug() - << "proxy::handle_solicit() saddr=" << saddr.to_string() + << "proxy::handle_solicit() ifa=" << ((_ifa) ? _ifa->name() : "null") + << ", saddr=" << saddr.to_string() << ", taddr=" << taddr.to_string(); // Let's check this proxy's list of sessions to see if we can diff --git a/src/rule.cc b/src/rule.cc index 3bd66ba..7475f0d 100644 --- a/src/rule.cc +++ b/src/rule.cc @@ -52,7 +52,7 @@ ptr rule::create(const ptr& pr, const address& addr, const ptr