#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;
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;
}
/*
#include <linux/sockios.h> // 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;