X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Socket%2FProtocols%2FRaw%2FTunTapSocketHandle.cc;h=704944769f1db77770a86fa36d509d9678bc3d3d;hb=6f50bf49e282c0528f51faa0a245bbfa2b867399;hp=9e02d6fd7878092078fb6efe85517847a8a4d315;hpb=f0fa2dfb530b94cc09dd4ee5dfd7044af583b575;p=senf.git diff --git a/Socket/Protocols/Raw/TunTapSocketHandle.cc b/Socket/Protocols/Raw/TunTapSocketHandle.cc index 9e02d6f..7049447 100644 --- a/Socket/Protocols/Raw/TunTapSocketHandle.cc +++ b/Socket/Protocols/Raw/TunTapSocketHandle.cc @@ -1,9 +1,9 @@ -// $Id: PacketSocketHandle.cc 358 2007-07-27 12:14:51Z g0dil $ +// $Id$ // // Copyright (C) 2006 -// Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS) -// Kompetenzzentrum fuer Satelitenkommunikation (SatCom) -// Stefan Bund +// Fraunhofer Institute for Open Communication Systems (FOKUS) +// Competence Center NETwork research (NET), St. Augustin, GERMANY +// Stefan Bund // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -48,8 +48,8 @@ prefix_ void senf::TapProtocol::init_client() prefix_ void senf::TapProtocol::init_client(std::string const & interface_name, bool const NO_PI) const { - int fd; - if ( (fd = ::open("/dev/net/tun", O_RDWR)) < 0 ) + int f; + if ( (f = ::open("/dev/net/tun", O_RDWR)) < 0 ) throwErrno(); struct ifreq ifr; ::memset( &ifr, 0, sizeof(ifr)); @@ -57,23 +57,17 @@ prefix_ void senf::TapProtocol::init_client(std::string const & interface_name, if (NO_PI) ifr.ifr_flags |= IFF_NO_PI; interface_name.copy( ifr.ifr_name, IFNAMSIZ); - if (::ioctl(fd, TUNSETIFF, (void *) &ifr) < 0 ) + if (::ioctl(f, TUNSETIFF, (void *) &ifr) < 0 ) throwErrno(); - body().fd(fd); -} - -prefix_ std::auto_ptr senf::TapProtocol::clone() - const -{ - return std::auto_ptr(new TapProtocol()); + fd(f); } prefix_ unsigned senf::TapProtocol::available() const { - if (! body().readable()) + if (! fh().readable()) return 0; - ssize_t l = ::recv(body().fd(),0,0,MSG_PEEK | MSG_TRUNC); + ssize_t l = ::recv(fd(),0,0,MSG_PEEK | MSG_TRUNC); if (l < 0) //throwErrno(); return 1588;