X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FSocket%2FProtocols%2FINet%2FConnectedRawINetSocketHandle.hh;h=88607d1390564890246b75969743868ff9a42345;hb=72cc548dfc3fa72d14d4d8c1a178f162165e933a;hp=0f63559c57a267f37cd3cd6a32f6aace69979f89;hpb=601d1f509f5bb24df167a4dd5a20da67a0af9af8;p=senf.git diff --git a/senf/Socket/Protocols/INet/ConnectedRawINetSocketHandle.hh b/senf/Socket/Protocols/INet/ConnectedRawINetSocketHandle.hh index 0f63559..88607d1 100644 --- a/senf/Socket/Protocols/INet/ConnectedRawINetSocketHandle.hh +++ b/senf/Socket/Protocols/INet/ConnectedRawINetSocketHandle.hh @@ -2,44 +2,49 @@ // // Copyright (C) 2007 // Fraunhofer Institute for Open Communication Systems (FOKUS) -// Competence Center NETwork research (NET), St. Augustin, GERMANY -// David Wagner // -// 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 -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. +// The contents of this file are subject to the Fraunhofer FOKUS Public License +// Version 1.0 (the "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// http://senf.berlios.de/license.html // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. +// The Fraunhofer FOKUS Public License Version 1.0 is based on, +// but modifies the Mozilla Public License Version 1.1. +// See the full license text for the amendments. // -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the -// Free Software Foundation, Inc., -// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +// Software distributed under the License is distributed on an "AS IS" basis, +// WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +// for the specific language governing rights and limitations under the License. +// +// The Original Code is Fraunhofer FOKUS code. +// +// The Initial Developer of the Original Code is Fraunhofer-Gesellschaft e.V. +// (registered association), Hansastraße 27 c, 80686 Munich, Germany. +// All Rights Reserved. +// +// Contributor(s): +// David Wagner #ifndef CONNECTEDHH_SENF_Socket_Protocols_INet_RawINetSocketHandle_ #define CONNECTEDHH_SENF_Socket_Protocols_INet_RawINetSocketHandle_ // Custom includes -#include "INetSocketProtocol.hh" +#include "INetAddressing.hh" #include "RawINetSocketProtocol.hh" -#include "../../../Socket/Protocols/BSDSocketProtocol.hh" -#include "../../../Socket/Protocols/DatagramSocketProtocol.hh" -#include "../../../Socket/FramingPolicy.hh" -#include "../../../Socket/CommunicationPolicy.hh" -#include "../../../Socket/ReadWritePolicy.hh" -#include "../../../Socket/ProtocolClientSocketHandle.hh" +#include +#include +#include +#include +#include +#include -///////////////////////////////hh.p//////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// namespace senf { /// \addtogroup concrete_protocol_group - /// @{ + //\{ typedef MakeSocketPolicy< INet4AddressingPolicy, @@ -61,14 +66,21 @@ namespace senf { \par Address Type: INet4SocketAddress - ConnectedRawV4SocketProtocol provides an internet protocol raw socket based on IPv4 addressing. - This socket will put data written to it onto the IPv4 layer: if you call writeto don't inlude the header! - On the other hand `read` will return the packet data including the IP header. - This behaviour is strange and differs from the behaviour of IPv6 RAW sockets and should be changed in the future. + ConnectedRawV4SocketProtocol provides an Internet protocol raw socket based on IPv4 + addressing. This socket will put data written to it onto the IPv4 layer: if you call + writeto don't include the header! + + On the other hand `read` will return the packet data including the IP header. + This behaviour is strange and differs from the behaviour of IPv6 RAW sockets and should be + changed in the future. This class is utilized as the protocol class of the ProtocolClientSocketHandle via the Socket Handle typedefs above. + \attention If socket handle with ConnectedRawV4SocketProtocol is connected via + INet4SocketAddress, the port number is interpreted as protocol number for IPv4 + layer. Please refer manpage: "man 7 raw". + \see ConnectedRawV6SocketProtocol \see RawV4SocketProtocol \see RawV6SocketProtocol @@ -81,34 +93,37 @@ namespace senf { public AddressableBSDSocketProtocol { public: - /////////////////////////////////////////////////////////////////////////// + //-//////////////////////////////////////////////////////////////////////// // internal interface ///\name Constructors - ///@{ + //\{ void init_client() const; ///< Create unconnected client socket for IPPROTO_RAW /**< \note This member is implicitly called from the ProtocolClientSocketHandle::ProtocolClientSocketHandle() constructor */ - void init_client(int const & protocol) const; ///< Create unconnected client socket for protocol - + void init_client(int const & protocol) const; + ///< Create unconnected client socket for protocol + void init_client(int const & protocol, INet4SocketAddress const & address) const; ///< Create client socket and connect - /**< Creates a new client socket for the given protocol and connects to the given - address. - \param[in] protocol Layer 4 protocol to filter for / to send + /**< Creates a new client socket for the given protocol and + connects to the given address. + \param[in] protocol Layer 4 protocol to filter for / to + send \param[in] address local address to connect to */ - ///@} + //\} }; - typedef ProtocolClientSocketHandle ConnectedRawV4ClientSocketHandle; + typedef ProtocolClientSocketHandle + ConnectedRawV4ClientSocketHandle; -//////////////////////////////////////////////////////////////////// Raw IPv6 Socket ////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// typedef MakeSocketPolicy< INet6AddressingPolicy, DatagramFramingPolicy, @@ -122,21 +137,26 @@ namespace senf { \par Socket Handle typedefs: \ref ConnectedRawV6ClientSocketHandle (ProtocolClientSocketHandle) - \par Policy Interface: + \par Policy Interface: ClientSocketHandle::read(), ClientSocketHandle::write(), ClientSocketHandle::bind(), ClientSocketHandle::local(), ClientSocketHandle::connect(), ClientSocketHandle::peer() - + \par Address Type: INet6Address - ConnectedRawV6SocketProtocol provides an internet protocol raw socket based on IPv6 addressing which is connected to certain peer. - This socket will put data written to it onto the IPv6 layer: if you call writeto don't inlude the header! - On the other hand `read` will return the packet data on top of the IPv6 layer, excluding the IP header. - Note: This behaviour is differs from the behaviour of IPv4 RAW sockets. + ConnectedRawV6SocketProtocol provides an internet protocol raw socket based on IPv6 + addressing which is connected to certain peer. This socket will put data written to it onto + the IPv6 layer: if you call writeto don't include the header! On the other hand `read` will + return the packet data on top of the IPv6 layer, excluding the IP header. Note: This + behaviour is differs from the behaviour of IPv4 RAW sockets. This class is utilized as the protocol class of the ProtocolClientSocketHandle via the Socket Handle typedefs above. + \attention If socket handle with ConnectedRawV6SocketProtocol is connected via + INet6SocketAddress, the port number is interpreted as protocol number for IPv6 + layer. Please refer manpage: "man 7 ipv6". + \see ConnectedRawV4SocketProtocol \see RawV4SocketProtocol \see RawV6SocketProtocol @@ -149,36 +169,50 @@ namespace senf { public AddressableBSDSocketProtocol { public: - /////////////////////////////////////////////////////////////////////////// + //-//////////////////////////////////////////////////////////////////////// // internal interface ///\name Constructors - ///@{ + //\{ void init_client() const; ///< Create unconnected client socket for IPPROTO_RAW /**< \note This member is implicitly called from the ProtocolClientSocketHandle::ProtocolClientSocketHandle() constructor */ - void init_client(int const & protocol) const; ///< Create unconnected client socket for protocol + void init_client(int const & protocol) const; + ///< Create unconnected client socket for protocol void init_client(int const & protocol, INet6SocketAddress const & address) const; ///< Create client socket and connect - /**< Creates a new client socket for the given protocol and connects to the given - address. - \param[in] protocol Layer 4 protocol to filter for / to send - \param[in] address local address to connect to */ - /**< \note This member is implicitly called from the + /**< Creates a new client socket for the given protocol and + connects to the given address. + \param[in] protocol Layer 4 protocol to filter for / to + send + \param[in] address local address to connect to + \note This member is implicitly called from the // ProtocolClientSocketHandle::ProtocolClientSocketHandle() constructor (??) */ - ///@} + //\} }; - typedef ProtocolClientSocketHandle ConnectedRawV6ClientSocketHandle; + typedef ProtocolClientSocketHandle + ConnectedRawV6ClientSocketHandle; - /// @} + //\} } #endif /*CONNECTEDHH_SENF_Socket_Protocols_INet_RawINetSocketHandle_*/ + + +// Local Variables: +// mode: c++ +// fill-column: 100 +// c-file-style: "senf" +// indent-tabs-mode: nil +// ispell-local-dictionary: "american" +// compile-command: "scons -u test" +// comment-column: 40 +// End: