X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Socket%2FProtocols%2FRaw%2FPacketSocketHandle.hh;h=35898ac11dcfe0a7f0fb68a9c9ca016e076d6b2b;hb=5443435c4c2b6e4386c5334b5b8358273f2bae93;hp=95c998065f855d4b06b799e78a8d9e44fa676ae5;hpb=cd019de7e5d80122a302577c1907e2a952249260;p=senf.git diff --git a/Socket/Protocols/Raw/PacketSocketHandle.hh b/Socket/Protocols/Raw/PacketSocketHandle.hh index 95c9980..35898ac 100644 --- a/Socket/Protocols/Raw/PacketSocketHandle.hh +++ b/Socket/Protocols/Raw/PacketSocketHandle.hh @@ -1,9 +1,9 @@ // $Id:PacketSocketHandle.hh 218 2007-03-20 14:39:32Z tho $ // // 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 @@ -21,23 +21,21 @@ // 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. /** \file - \brief PacketProtocol and PacketSocketHandle public header - - \todo Implement global promisc() helper based on ioctl() interface. + \brief PacketSocketProtocol and PacketSocketHandle public header */ -#ifndef HH_PacketSocketHandle_ -#define HH_PacketSocketHandle_ 1 +#ifndef HH_SENF_Socket_Protocols_Raw_PacketSocketHandle_ +#define HH_SENF_Socket_Protocols_Raw_PacketSocketHandle_ 1 // Custom includes -#include "Socket/SocketPolicy.hh" -#include "Socket/SocketProtocol.hh" -#include "Socket/ProtocolClientSocketHandle.hh" -#include "Socket/FramingPolicy.hh" -#include "Socket/CommunicationPolicy.hh" -#include "Socket/ReadWritePolicy.hh" -#include "Socket/BufferingPolicy.hh" -#include "Socket/Protocols/BSDSocketProtocol.hh" +#include "../../../Socket/SocketPolicy.hh" +#include "../../../Socket/SocketProtocol.hh" +#include "../../../Socket/ProtocolClientSocketHandle.hh" +#include "../../../Socket/FramingPolicy.hh" +#include "../../../Socket/CommunicationPolicy.hh" +#include "../../../Socket/ReadWritePolicy.hh" +#include "../../../Socket/Protocols/BSDSocketProtocol.hh" +#include "../../../Socket/Protocols/DatagramSocketProtocol.hh" #include "LLAddressing.hh" //#include "PacketSocketHandle.mpp" @@ -54,9 +52,8 @@ namespace senf { DatagramFramingPolicy, UnconnectedCommunicationPolicy, ReadablePolicy, - WriteablePolicy, - SocketBufferingPolicy - >::policy Packet_Policy; ///< Policy of PacketProtocol + WriteablePolicy + >::policy Packet_Policy; ///< Policy of PacketSocketProtocol /** \brief Raw Packet-Socket access (Linux) @@ -65,23 +62,22 @@ namespace senf { \par Policy Interface: ClientSocketHandle::read(), ClientSocketHandle::readfrom(), ClientSocketHandle::writeto(), - ClientSocketHandle::bind(), ClientSocketHandle::local(), ClientSocketHandle::rcvbuf(), - ClientSocketHandle::sndbuf() + ClientSocketHandle::bind(), ClientSocketHandle::local() \par Address Type: - LLSocketAddress + LLSocketAddress - The PacketProtocol provides access to the linux packet socket API. This API gives access to + The PacketSocketProtocol provides access to the linux packet socket API. This API gives access to the low level network packets. The packet socket allows read() and write() operations. The - PacketProtocol has no concept of a server socket. + PacketSocketProtocol has no concept of a server socket. This class is utilized as the protocol class of the ProtocolClientSocketHandle via the Socket Handle typedefs above. */ - class PacketProtocol - : public ConcreteSocketProtocol, - public BSDSocketProtocol, - public senf::pool_alloc_mixin + class PacketSocketProtocol + : public ConcreteSocketProtocol, + public DatagramSocketProtocol, + public BSDSocketProtocol { public: enum SocketType { RawSocket, DatagramSocket }; @@ -125,20 +121,23 @@ namespace senf { void mcDrop(std::string const & interface, MACAddress const & address) const; ///< Disable reception of a multicast group /**< \see \ref mcAdd() */ + + void promisc(std::string const & interface, bool mode) const; + ///< enable/disable promiscuous mode + ///@} ///\name Abstract Interface Implementation ///@{ - std::auto_ptr clone() const; unsigned available() const; bool eof() const; ///@} }; - typedef ProtocolClientSocketHandle PacketSocketHandle; - ///< SocketHandle of the PacketProtocol + typedef ProtocolClientSocketHandle PacketSocketHandle; + ///< SocketHandle of the PacketSocketProtocol /**< \related PacketPrototol */ /// @}