X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Socket%2FProtocols%2FRaw%2FTunTapSocketHandle.cc;h=58170a0ffba696209a01803897331fe796607f03;hb=034f9bec0a66d26314fb6ebc83dedf1618a2c19d;hp=2cf8670f780633246e649bee4868691921110d55;hpb=a1a6c76a214ad1935032826713cabaf9ac57bf07;p=senf.git diff --git a/Socket/Protocols/Raw/TunTapSocketHandle.cc b/Socket/Protocols/Raw/TunTapSocketHandle.cc index 2cf8670..58170a0 100644 --- a/Socket/Protocols/Raw/TunTapSocketHandle.cc +++ b/Socket/Protocols/Raw/TunTapSocketHandle.cc @@ -39,18 +39,18 @@ #define prefix_ ///////////////////////////////cc.p//////////////////////////////////////// -prefix_ void senf::TapProtocol::init_client() +prefix_ void senf::TapSocketProtocol::init_client() const { init_client(std::string()); } -prefix_ void senf::TapProtocol::init_client(std::string const & interface_name, bool const NO_PI) +prefix_ void senf::TapSocketProtocol::init_client(std::string const & interface_name, bool const NO_PI) const { int f; if ( (f = ::open("/dev/net/tun", O_RDWR)) < 0 ) - throwErrno(); + SENF_THROW_SYSTEM_EXCEPTION("Could not open tap control device: /dev/net/tun."); struct ifreq ifr; ::memset( &ifr, 0, sizeof(ifr)); ifr.ifr_flags = IFF_TAP; @@ -58,18 +58,18 @@ prefix_ void senf::TapProtocol::init_client(std::string const & interface_name, ifr.ifr_flags |= IFF_NO_PI; interface_name.copy( ifr.ifr_name, IFNAMSIZ); if (::ioctl(f, TUNSETIFF, (void *) &ifr) < 0 ) - throwErrno(); + SENF_THROW_SYSTEM_EXCEPTION( "Could not create tap device: ") << ifr.ifr_name << "."; fd(f); } -prefix_ unsigned senf::TapProtocol::available() +prefix_ unsigned senf::TapSocketProtocol::available() const { if (! fh().readable()) return 0; ssize_t l = ::recv(fd(),0,0,MSG_PEEK | MSG_TRUNC); if (l < 0) - //throwErrno(); + //SENF_THROW_SYSTEM_EXCEPTION(""); return 1588; return l; } @@ -77,19 +77,19 @@ prefix_ unsigned senf::TapProtocol::available() /* #include // for SIOCINQ / SIOCOUTQ -prefix_ unsigned senf::TapProtocol::available() +prefix_ unsigned senf::TapSocketProtocol::available() const { if (! body().readable()) return 0; int n; if (::ioctl(body().fd(),SIOCINQ,&n) < 0) - throwErrno(); + SENF_THROW_SYSTEM_EXCEPTION(""); return n; } */ -prefix_ bool senf::TapProtocol::eof() +prefix_ bool senf::TapSocketProtocol::eof() const { return false;