ConnectedRawINetSocketHandle.hh
Go to the documentation of this file.
1 //
2 // Copyright (c) 2020 Fraunhofer Institute for Applied Information Technology (FIT)
3 // Network Research Group (NET)
4 // Schloss Birlinghoven, 53754 Sankt Augustin, GERMANY
5 // Contact: support@wiback.org
6 //
7 // This file is part of the SENF code tree.
8 // It is licensed under the 3-clause BSD License (aka New BSD License).
9 // See LICENSE.txt in the top level directory for details or visit
10 // https://opensource.org/licenses/BSD-3-Clause
11 //
12 
13 
14 #ifndef CONNECTEDHH_SENF_Socket_Protocols_INet_RawINetSocketHandle_
15 #define CONNECTEDHH_SENF_Socket_Protocols_INet_RawINetSocketHandle_
16 
17 // Custom includes
18 #include "INetAddressing.hh"
19 #include "RawINetSocketProtocol.hh"
26 
27 
28 //-/////////////////////////////////////////////////////////////////////////////////////////////////
29 
30 namespace senf {
31 
33  //\{
34 
35  typedef MakeSocketPolicy<
36  INet4AddressingPolicy,
37  DatagramFramingPolicy,
38  ConnectedCommunicationPolicy,
39  ReadablePolicy,
40  WriteablePolicy
42 
75  : public ConcreteSocketProtocol<ConnectedRawV4Socket_Policy, ConnectedRawV4SocketProtocol>,
76  public RawINetSocketProtocol,
77  public BSDSocketProtocol,
80  {
81  public:
82  //-////////////////////////////////////////////////////////////////////////
83  // internal interface
84 
86  //\{
87 
88  void init_client() const;
89 
92  void init_client(int const & protocol) const;
94 
95  void init_client(int const & protocol, INet4SocketAddress const & address) const;
97 
103  //\}
104  };
105 
108 
109 
110 
111 
112 //-/////////////////////////////////////////////////////////////////////////////////////////////////
113  typedef MakeSocketPolicy<
115  DatagramFramingPolicy,
116  ConnectedCommunicationPolicy,
117  ReadablePolicy,
120 
151  : public ConcreteSocketProtocol<ConnectedRawV6Socket_Policy, ConnectedRawV6SocketProtocol>,
152  public RawINetSocketProtocol,
153  public BSDSocketProtocol,
154  public DatagramSocketProtocol,
156  {
157  public:
158  //-////////////////////////////////////////////////////////////////////////
159  // internal interface
160 
162  //\{
163 
164  void init_client() const;
165 
169  void init_client(int const & protocol) const;
171 
172  void init_client(int const & protocol, INet6SocketAddress const & address) const;
174 
183  //\}
184  };
185 
188 
189  //\}
190 
191 }
192 
193 #endif /*CONNECTEDHH_SENF_Socket_Protocols_INet_RawINetSocketHandle_*/
194 
195 
196 // Local Variables:
197 // mode: c++
198 // fill-column: 100
199 // c-file-style: "senf"
200 // indent-tabs-mode: nil
201 // ispell-local-dictionary: "american"
202 // compile-command: "scons -u test"
203 // comment-column: 40
204 // End:
Addressing policy supporting IPv6 addressing.
IPv6 RAW Socket Protocol, connected.
CommunicationPolicy public header.
IPv4 RAW Socket Protocol, connected.
IPv6 socket address.
Protocol facet to support RAW operations upon IPv4/6.
ProtocolClientSocketHandle public header.
WritePolicy for writeable sockets.
IPv4 socket address.
ProtocolClientSocketHandle< ConnectedRawV6SocketProtocol > ConnectedRawV6ClientSocketHandle
DatagramSocketProtocol public header.
ReadPolicy and WritePolicy public header.
void init_client() const
Create unconnected client socket for IPPROTO_RAW.
Protocol facet providing basic BSD socket functionality.
ProtocolClientSocketHandle< ConnectedRawV4SocketProtocol > ConnectedRawV4ClientSocketHandle
Protocol facet providing basic connection oriented BSD socket functions.
Protocol specific socket handle (client interface)
BSDSocketProtocol public header.
Concrete Socket Protocol implementation base class.
INet[46]Address and INet[46]AddressingPolicy public header.
FramingPolicy public header.
MakeSocketPolicy< INet4AddressingPolicy, DatagramFramingPolicy, ConnectedCommunicationPolicy, ReadablePolicy, WriteablePolicy >::policy ConnectedRawV4Socket_Policy
Socket Policy of the Connected RawV4 Protocol.
MakeSocketPolicy< INet6AddressingPolicy, DatagramFramingPolicy, ConnectedCommunicationPolicy, ReadablePolicy, WriteablePolicy >::policy ConnectedRawV6Socket_Policy
Socket Policy of the RawV6 Protocol.
Metafunction to create SocketPolicy.
Protocol facet providing generic BSD datagram socket functionality.