X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Socket%2FPacketSocketHandle.hh;h=ef3d737618ff14bdb7f8790c833550f61bd98d06;hb=9a988902090d28007578e93bffd809f6bd913155;hp=48e31d88b691553a72c74fcc68a793f635916891;hpb=d0006132bfcb3ab442cf66b600ed3fad36f1ac2c;p=senf.git diff --git a/Socket/PacketSocketHandle.hh b/Socket/PacketSocketHandle.hh index 48e31d8..ef3d737 100644 --- a/Socket/PacketSocketHandle.hh +++ b/Socket/PacketSocketHandle.hh @@ -1,6 +1,6 @@ // $Id$ // -// Copyright (C) 2006 +// Copyright (C) 2006 // Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS) // Kompetenzzentrum fuer Satelitenkommunikation (SatCom) // Stefan Bund @@ -46,7 +46,7 @@ namespace senf { /// \addtogroup concrete_protocol_group /// @{ - + typedef MakeSocketPolicy< LLAddressingPolicy, DatagramFramingPolicy, @@ -57,26 +57,26 @@ namespace senf { >::policy Packet_Policy; ///< Policy of PacketProtocol /** \brief Raw Packet-Socket access (Linux) - - \par Socket Handle typedefs: - \ref PacketSocketHandle (ProtocolClientSocketHandle) - \par Protocol Interface: - ClientSocketHandle::read(), ClientSocketHandle::readfrom(), ClientSocketHandle::writeto(), - ClientSocketHandle::bind(), ClientSocketHandle::local(), ClientSocketHandle::rcvbuf(), - ClientSocketHandle::sndbuf() + \par Socket Handle typedefs: + \ref PacketSocketHandle (ProtocolClientSocketHandle) + + \par Policy Interface: + ClientSocketHandle::read(), ClientSocketHandle::readfrom(), ClientSocketHandle::writeto(), + ClientSocketHandle::bind(), ClientSocketHandle::local(), ClientSocketHandle::rcvbuf(), + ClientSocketHandle::sndbuf() - \par Address Type: - LLSocketAddress + \par Address Type: + LLSocketAddress - The PacketProtocol 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. + The PacketProtocol 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. - This class is utilized as the protocol class of the ProtocolClientSocketHandle via the - Socket Handle typedefs above. + This class is utilized as the protocol class of the ProtocolClientSocketHandle via the + Socket Handle typedefs above. */ - class PacketProtocol + class PacketProtocol : public ConcreteSocketProtocol, public BSDSocketProtocol { @@ -86,80 +86,80 @@ namespace senf { enum PromiscMode { Promiscuous, AllMulticast, None }; ///< Interface modes - ///\name Constructors - ///@{ + ///\name Constructors + ///@{ void init_client(SocketType type = RawSocket, int protocol = -1) const; ///< Create packet socket /**< The new socket will receive all packets of the given - IEEE 802.3 \a protocol. The socket will receive all - packets, if \a protocol is -1. - - If \a type is \c RawSocket, the packet will include the - link-level header (the Ethernet header). Sent packets - must already include a well formed ll header. - - If \a type is \c DatagramSocket, the link level header - will not be part of the packet data. The ll header will - be removed from received packets and a correct ll - header will be created on sent packets. - - \param[in] type socket type - \param[in] protocol IEEE 802.3 protocol number */ - /**< \note This member is implicitly called from the - ProtocolClientSocketHandle::ProtocolClientSocketHandle() - constructor */ - ///@} - - ///\name Protocol Interface - ///@{ - void promisc(std::string interface, PromiscMode mode) const; + IEEE 802.3 \a protocol. The socket will receive all + packets, if \a protocol is -1. + + If \a type is \c RawSocket, the packet will include the + link-level header (the Ethernet header). Sent packets + must already include a well formed ll header. + + If \a type is \c DatagramSocket, the link level header + will not be part of the packet data. The ll header will + be removed from received packets and a correct ll + header will be created on sent packets. + + \param[in] type socket type + \param[in] protocol IEEE 802.3 protocol number */ + /**< \note This member is implicitly called from the + ProtocolClientSocketHandle::ProtocolClientSocketHandle() + constructor */ + ///@} + + ///\name Protocol Interface + ///@{ + void promisc(std::string interface, PromiscMode mode) const; ///< Change interface mode /**< This member will change the reception on the given - interface. The modes available are + interface. The modes available are -
-
\e None
No special mode set. Only receive - packets addressed to the interface or of joined - multicast groups
-
\e AllMulticast
Additionally receive all - multicast traffic
-
\e Promiscuous
Receive all packets on the - wire
-
+
+
\e None
No special mode set. Only receive + packets addressed to the interface or of joined + multicast groups
+
\e AllMulticast
Additionally receive all + multicast traffic
+
\e Promiscuous
Receive all packets on the + wire
+
- \param[in] interface interface to modify - \param[in] mode new interface mode */ + \param[in] interface interface to modify + \param[in] mode new interface mode */ // See LLSocketAddress for a discussion/rationale for ForwardRange here template void mcAdd(std::string interface, ForwardRange const & address) const; ///< Enable reception of a multicast group /**< mcAdd will join a new multicast group. The address - parameter is specified as an arbitrary forward range - (see Boost.Range) - of up to 8 bytes. This allows to initialize the - address from an arbitrary sources without excessive - copying. - - \param[in] interface interface with which to join - \param[in] address multicast address to join - - \see \ref LLSocketAddress */ - template + parameter is specified as an arbitrary forward range + (see Boost.Range) + of up to 8 bytes. This allows to initialize the + address from an arbitrary sources without excessive + copying. + + \param[in] interface interface with which to join + \param[in] address multicast address to join + + \see \ref LLSocketAddress */ + template void mcDrop(std::string interface, ForwardRange const & address) const; ///< Disable reception of a multicast group /**< \see \ref mcAdd() */ - ///@} + ///@} - ///\name Abstract Interface Implementation - ///@{ + ///\name Abstract Interface Implementation + ///@{ std::auto_ptr clone() const; unsigned available() const; bool eof() const; - ///@} + ///@} private: template @@ -170,7 +170,7 @@ namespace senf { typedef ProtocolClientSocketHandle PacketSocketHandle; ///< SocketHandle of the PacketProtocol /**< \related PacketPrototol */ - + /// @} } @@ -184,6 +184,8 @@ namespace senf { // Local Variables: // mode: c++ -// c-file-style: "senf" // fill-column: 100 +// c-file-style: "senf" +// indent-tabs-mode: nil +// ispell-local-dictionary: "american" // End: