6 \brief UDPForwarder non-inline non-template implementation */
8 #include "UDPForwarder.hh"
9 //#include "UDPForwarder.ih"
13 //#include "UDPForwarder.mpp"
15 ///////////////////////////////cc.p////////////////////////////////////////
17 prefix_ udpforward::UDPForwarder::UDPForwarder(senf::INet4SocketAddress const & addr,
18 senf::INet4SocketAddress const & target)
19 : socket_ (addr), target_(target), peer_ (),
20 event_ ("UDPForwarder::read", senf::membind(&UDPForwarder::readEvent, this),
21 socket_, senf::scheduler::FdEvent::EV_READ)
23 SENF_LOG(("Input socket opened at " << addr << ". Forwarding to " << target));
26 prefix_ void udpforward::UDPForwarder::readEvent(int event)
28 if (event != senf::scheduler::FdEvent::EV_READ)
29 throw ForwarderException("Unexpected remote socket read failure");
32 senf::INet4SocketAddress addr;
33 socket_.readfrom(packet, addr, 0);
35 if (addr == target_) {
37 SENF_LOG((senf::log::MESSAGE)("Return packet dropped (no peer)"));
39 SENF_LOG((senf::log::VERBOSE)("Return packet to " << peer_));
40 socket_.writeto(peer_, packet);
46 SENF_LOG((senf::log::NOTICE)("Peer address changed from " << peer_ << " to " << addr));
49 socket_.writeto(target_, packet);
50 SENF_LOG((senf::log::VERBOSE)("Forward packet from " << peer_));
53 ///////////////////////////////cc.e////////////////////////////////////////
55 //#include "UDPForwarder.mpp"
61 // indent-tabs-mode: nil
62 // compile-command: "scons"