{
int f;
if ( (f = ::open("/dev/net/tun", O_RDWR)) < 0 )
- throw SystemException();
+ throw SystemException( "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 )
- throw SystemException();
+ throw SystemException( "Could not create tap device: ") << ifr.ifr_name;
fd(f);
}