X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Socket%2FProtocols%2FRaw%2FPacketSocketHandle.hh;h=35898ac11dcfe0a7f0fb68a9c9ca016e076d6b2b;hb=5443435c4c2b6e4386c5334b5b8358273f2bae93;hp=a44edf2c61fc6f7865c52dd9ca88e13c480a4325;hpb=5ed1fa1c42763aebad06c1e4ac8fc5a19e15519a;p=senf.git diff --git a/Socket/Protocols/Raw/PacketSocketHandle.hh b/Socket/Protocols/Raw/PacketSocketHandle.hh index a44edf2..35898ac 100644 --- a/Socket/Protocols/Raw/PacketSocketHandle.hh +++ b/Socket/Protocols/Raw/PacketSocketHandle.hh @@ -1,8 +1,8 @@ // $Id:PacketSocketHandle.hh 218 2007-03-20 14:39:32Z tho $ // // 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 // // This program is free software; you can redistribute it and/or modify @@ -21,13 +21,11 @@ // 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" @@ -37,6 +35,7 @@ #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,7 +53,7 @@ namespace senf { UnconnectedCommunicationPolicy, ReadablePolicy, WriteablePolicy - >::policy Packet_Policy; ///< Policy of PacketProtocol + >::policy Packet_Policy; ///< Policy of PacketSocketProtocol /** \brief Raw Packet-Socket access (Linux) @@ -63,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 }; @@ -124,20 +122,22 @@ namespace senf { ///< 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 */ /// @}