Utils: Implement helper macros to add file/line information to SystemException's
[senf.git] / Socket / Protocols / Raw / TunTapSocketHandle.cc
index 7049447..58170a0 100644 (file)
@@ -1,8 +1,8 @@
 // $Id$
 //
 // Copyright (C) 2006
-// Fraunhofer Institute for Open Communication Systems (FOKUS) 
-// Competence Center NETwork research (NET), St. Augustin, GERMANY 
+// Fraunhofer Institute for Open Communication Systems (FOKUS)
+// Competence Center NETwork research (NET), St. Augustin, GERMANY
 //     Stefan Bund <g0dil@berlios.de>
 //
 // This program is free software; you can redistribute it and/or modify
 #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 <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;