RawINetSocketHandle.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 HH_SENF_Socket_Protocols_INet_RawINetSocketHandle_
15 #define HH_SENF_Socket_Protocols_INet_RawINetSocketHandle_ 1
16 
17 
18 // Custom includes
19 #include "INetAddressing.hh"
20 #include "RawINetSocketProtocol.hh"
28 
29 
30 //-/////////////////////////////////////////////////////////////////////////////////////////////////
31 
32 namespace senf {
33 
35  //\{
36 
37  typedef MakeSocketPolicy<
38  INet4AddressingPolicy,
39  DatagramFramingPolicy,
40  UnconnectedCommunicationPolicy,
41  ReadablePolicy,
42  WriteablePolicy
43  >::policy RawV4Socket_Policy;
44 
72  : public ConcreteSocketProtocol<RawV4Socket_Policy, RawV4SocketProtocol>,
73  public RawINetSocketProtocol,
74  public BSDSocketProtocol,
78  {
79  public:
80  //-////////////////////////////////////////////////////////////////////////
81  // internal interface
82 
84  //\{
85 
86  void init_client() const;
87 
90  void init_client(int const & protocol) const;
91 
92  void init_client(int const & protocol, INet4SocketAddress const & address) const;
94 
99  //\}
100  };
101 
103 
104 
105 
106 
107 //-/////////////////////////////////////////////////////////////////////////////////////////////////
108  typedef MakeSocketPolicy<
110  DatagramFramingPolicy,
111  UnconnectedCommunicationPolicy,
112  ReadablePolicy,
115 
143  : public ConcreteSocketProtocol<RawV6Socket_Policy,RawV6SocketProtocol>,
144  public RawINetSocketProtocol,
145  public BSDSocketProtocol,
147  public DatagramSocketProtocol,
149  {
150  public:
151  //-////////////////////////////////////////////////////////////////////////
152  // internal interface
153 
155  //\{
156 
157  void init_client() const;
158 
162  void init_client(int const & protocol) const;
163 
164  void init_client(int const & protocol, INet6SocketAddress const & address) const;
166 
174  //\}
175  };
176 
178 
179  //\}
180 
181 }
182 
183 #endif /*HH_SENF_Socket_Protocols_INet_RawINetSocketHandle_*/
MakeSocketPolicy< INet6AddressingPolicy, DatagramFramingPolicy, UnconnectedCommunicationPolicy, ReadablePolicy, WriteablePolicy >::policy RawV6Socket_Policy
Socket Policy of the RawV6 Protocol.
Addressing policy supporting IPv6 addressing.
CommunicationPolicy public header.
Multicast protocol facet for INet4 addressable multicast enabled sockets.
IPv6 socket address.
Protocol facet to support RAW operations upon IPv4/6.
ProtocolClientSocketHandle public header.
WritePolicy for writeable sockets.
MulticastSocketProtocol public header.
ProtocolClientSocketHandle< RawV4SocketProtocol > RawV4ClientSocketHandle
IPv4 socket address.
DatagramSocketProtocol public header.
Multicast protocol facet for INet6 addressable multicast enabled sockets.
ReadPolicy and WritePolicy public header.
IPv6 RAW Socket Protocol.
IPv4 RAW Socket Protocol.
Protocol facet providing basic BSD socket functionality.
ProtocolClientSocketHandle< RawV6SocketProtocol > RawV6ClientSocketHandle
MakeSocketPolicy< INet4AddressingPolicy, DatagramFramingPolicy, UnconnectedCommunicationPolicy, ReadablePolicy, WriteablePolicy >::policy RawV4Socket_Policy
Socket Policy of the RawV4 Protocol.
Protocol facet providing basic connection oriented BSD socket functions.
void init_client() const
Create unconnected client socket for IPPROTO_RAW.
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.
Metafunction to create SocketPolicy.
Protocol facet providing generic BSD datagram socket functionality.